浙江科技学院c语言历年试卷.docx
遇浙江科技学院2010-2011学年第2学期考试试卷A卷考试科目C语言程序设计考试方式闭完成时限2小时拟题人题库审核人批准人2011年6月25日建工、生化、艺术、轻工、理学学院2010年级理工科专业即序二三四五总分加分人复核人得分霆名命题:1.应将全部答案写在答卷纸对应的题号处;否则作无效处理;2.编程题应写明题号,若答卷纸不够,请写在背面,不要另添卷纸;3.考试完成后,必须将试卷与答卷同时交回Il一、判断题(本大题共12小题,每题小1分,共12分)1.在定义数组时,数组的长度可以用整型常量或者整型变量表示。2.执行"intx=3,y=4;floatz;Z=XZy;"后,Z的值为0.75.3.C语言中,关系表达式的值是1和0,分别表示"真"和"假,4.else语句一定要与it语句配对使用,程序中else语句的个数一定小于或者等于if语句的个数。5.C语言是一种结构化程序设计语言.结构化程序由顺序、选择、循环三种基本结构组成。6.函数中可以使用多个return语句,也可以没有return语句.如果使用多个return语句可以向主函数返回多个值。7.使用%”方式打开一个已经存在的文本文件,将在该文件原有数据的基础上添加新的数据。8.定义语句“chars=-Hell<"和“chars=,J,,eT,T,“;”定义的两个字符数组是等价的。9.调用函数时,若实参是一个数组名,则向函数传送的是数组的首地址。10.使用d。.WhiIe语句实现循环时,不管条件真假,都将首先无条件的执行一次循环.11.假定int类型变量占用两个字节,若有定义:intx10=0,2,4;,则数组X在内存中所占字节数是6.12.语句"c=*p+"的执行过程是P所指向的存储单元的值赋值给变量c,然后P变量自增.A. l3*sin(l2)*sin(l2)C.p。W(Sin(0.5 ),2 )/34.下列语句执行后,变量n的值是 for(i=l;iv=3;i+) n=l;n=n*i;A. 1B. 35.对下列语句的描述正确的是(int i=l;doi+;)while(i=10);A.执行后i的值是1C.执行后i的值是106.能正确表示逻辑关系"a=10或A. a>=10 or a<=0B. sin(0.5)*sin(0.5)3D.1/3.0 奉 POW(Sin(1.0/2)Z)oC. 4D6B.执行后i的值是2D.死循环的C语言表达式是().B. a>=0a<=10二、单选题(本大题共20小题,每题1分,共20分)1.一个C程序总是从()开始执行。A.书写顺序的第一个函数B.书写顺序的第一条执行语句C.主函数main()D.不确定2.程序设计一般包含以下4个步骤,其中首先应该完成的是().A.设计数据结构和算法B.建立数学模型C.编写程序D.调试运行程序3.以下不能正确计算代数式陋竺工值的C语言表达式是().C.a>=10&&a<=0D.a>=10a<=07.设a、b、c、d、m、n均为int型变量,且a=5、b=6、C=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(II=C>d)运算后,n的值为()。A.0B1C2D.语法错误8.下列程序段不用死循环的是().A. int i=100;wlile(l) i=i% 1OO+1;if(i>100)break;C. for(;);9. 已知 intx=10,y=20,z=30;, if (>y) z=; =y; y=z;A. x=10, y=20, z=30C. x=20, y=30, z=1010.请阅读以下程序:#include <stdio.h>B. int k=0;do+k; while(k>=0):D int s=36;while(s) -s;以下语句执行后X、y、Z的值是(B.x=20, y=30, z=30D. x=20, y=30, z=20voidmain()floata.b;scanf(%a);if(a<O.O)b=0.0;elseif(a<5.0)&&(a!=2.0)b=l0(a+20);elseif(a<10.0)b=1.0a;elseb=l(三);Printfr'%fn",b);若运行时输入2.0<回车>,则上面程序的输出结果是()A.O.(KMMMM)B.0.500000C.1.000000D.0.25000011.有以下程序段:intn=O,p;doscanf(H%dM,&p);n+;|while(p!=12345&&n<3);此处do-while循环的结束条件是()。A.P的值不等于12345并且n的值小于3B.p的值等于12345并且n的值大于等于3C.P的值不等于12345或者n的值小于3D.P的值等于12345或者n的值大于等于312.若有如下定义,则下面在SCanf函数调用语句中对结构体成员的引用不无砸趣是().structpupilcharname20;intage;intsex;pup5p;A.SCanf(''%d'p.age);B.scanf(%s,pupO.name);C.SCanf(”%d'',&pupOage);D.SCanf(”%(!'',&(PIIPlsex);13.有如下数组定义语句“inta23=l,2,3,4,5,6;”,贝>(a+l)+2的值是().A.2B.6C.元素2的地址D.元素6的地址14.执行以下程序后,输出结果是().main()inta10=12,3,4,5,6,7,8,9,0Jp;P=a;printf(u%d",*p);Printf(44%dn",*(p+8);)A.1OB.17C18D1915.有如下程序,执行后的输出结果是()。#defmeM3#detmeNM+l#def1neNNN*N2main。Printf(“dn”,NN);)A.3B.4C.6D816.设x,y,i,j均为整型变量,且X=IO,y=3,则执行i=x-;j=-y:语句后,i和J的值是A.1O>3B9,3C.9,2DIO9217.下面程序的输出结果为()。voidmainOchar*p;chars=mABCDh;for(p=s;p<s+4;p+)printf(*%sn'p);A.ABCDBACDD.ABCDBCDBCABCCDCBABDDAA18.表达式"strcmp("Wind<>ws98","Windows95")"的值为()。A,0B.大于0C.小于0D.无法比较19.返回值为Void的函数,其含义是(A.调用函数之后,被调用的函数没有返回值B.调用函数之后,被调用的函数不返回C.调用函数之后,被调用的函数返回值为任意类型D.以上三种说法均不正确20.求0到50的总和,不正碰的程序段是().A.inti,sum;B.inti4sum;sum=0;fbr(i=0;um=0;i<51;sum+=i+);for(i=0;i<51;i+)sum+=i;C.inti,sum;D.inti,sum=0;i=0;sum=0;for(i=0;i+)for(i<51)sum+=i;i+;if(i>50)break;sum+=i;三、程序填空题(本大题共4小题,每空2分,共24分)1.以下程序的功能是计算,s=l+12+123+1234+12345。请填空.#include<stciio.h>voidmain()intt=O,s,i;(1)for(i=l;i<=5;i+)t=i+(2)s=s+t;PrilltfcS=%d,s);B. s=lD. int n=lB. IrMODt(1)A.s=0C.intn=0(2)A.nC.#102.下面程序是从健盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。请选择填空。#include<stdio.h>voidnain()longintnum;do(scanf(M%ld"9&num);if(3)printf(°num=%ldnH,num);while(._¢4)_);(3)A.num%100/10=3B.num100%10=3C.num%10/10=3D.num10%10=3(4)A.!numB.num=0C.numD.num=三l3.函数fun实现把数字字符从源字符串中删除,其余字符保持原样。voidfun(chars)i11ti=0J;while()if(si>='0'&&si<='9')for(j=i5sj!=,W;+)(6);elsei+;(5)A. s=0B. si<,0,C.si!=O,D.si=O,(6)A.sU-U=sB.sj=sj-lC.sj+l=sD.s=sj+l若m为素数则返4.输出50到70之间的所有素数,其中函数isprime(m)用于判断m是否为素数,回1,否则返回0。素数就是只能被1和自身整除的正整数。请填空。#include<stdio.h>#include<math.h>main。inti;intisprime(intn);for(i=50;i<=70;i+)i11(7)printf(n%dZi);intisprime(intn)inti,k;k=(int)sqrt(double);for(i=2;i<=k;i+)i(m%i=0)(8).(9);(7)A.isprime(m)!=0B.isprime(i)!=0Cisprime(m)=0D.isprime(i)=0(8)A.return0B.return1Creturni<=kD.return(9)A.returnB.return0Creturn1D.returni<=k5.下列程序中f函数用于在锥表中查找最高分.请填空。structnode/*结点定义*/intnum;/*学号*/intscore;/*成绩*/structnode*next;/*指针域*/intf(structnode*head)(intmax;structnode*p;P=(10max=p->score;while(11)if(max<p->score)max=p->score;(12)_:return(max);Ue)A.nalloc(6)B.head->nextCNULLD.Iiead(三)A.P=NULLB.p!=NULLCIiead=NULLD.head!=NULL(12)A.p=p->nextB.lead=lead->nextCp=head->nextDhead=p->next得分四、程序阅读题(本大题共6小题,每小题4分,共24分)L运行以下程序后若从健盘上输入J654回车,则输出结果为(#include<stdio.h>voidmain()intm,n;printf(nEnterm,n:”);SCaIIf(''%d%d”,&m,&n);WhilC(m!=n)(while(m>n)m-=n;while(m<n)n-=m;Printf(''m=%dn'',m);D. m=lA.m=3B.m=2C.m=02.下列程序运行时分别输入"ABCABC"和"ABBBA",输出的结果分别是().#include<stdio.h>inclde<string.h>#defineNKM)voidmain()charsN;intn,i=0;scant'%s,s);n=strlen(s);while(i<n/2&&si=sn-i-l)i+;if(i<2)printf(',No,t);elsePrintfC1Yes*1);)A.Yes和NoB.Yes和YeSC.NO和YesDN。和NO3.下列程序运行时输入"welcome24",输出的结果是()。include<stdio>h>include<string.h>#defineN100voidmiddcl(char*s,intm,inln);voidmain()CharSN;intm,n;scanf(,'%s%d%d,'i,m,tn);middel(s,m,n);printf('%s's);voidmiddel(char*s,intm,intn)char*pl,*p2;pl=s÷n;p2=s+m+n;whfle(*p2!=,0,)*pl=*p2;pi+;P2+;*pl=,O,;A.wemeB.wee4.下列程序运行后的输出结果是(#inchide<stdio.h>main()inty=18,i=0J,a;doai=y%2;i+;y=ywhile(y>0);forO=i-l;j>=0;j-)printfC'%dt',aj);printf(HnM);AOloOC.100IO5.下列程序运行后的输出结果是(#include<stdio.h>voidf(int*x,int*y)intt;t=*x;*x=*y;*y=t;main()i11ta9=12,3,4,5,6,7,8j,*p,*q;p=a;q=&a7;while(*p)f(p,q);p+;q-;for(i=0;i<8;i+)printf(''%d,'',ai);A.8,23,4,5,6,7,1,C.5,6,7,8,1,2J,4,6.下列程序运行后的输出结果是(C.WmeD.3umeB.1001D.以上答案都不是B.8,7,6,5,4,321,D,1,2,3,4,5,6,7,8,#include<stdio.h>intk=1;voidFun();voidmain()Etj;for(j=0;J<2;j+)Fu11O;ptf(''k=%d'',k);voidFun()staticintk=1;printfC,k=%d,'k);k+;B. k=l,k=l,k=2I). k=1,k=2,k=3A.k=l,k=2,k=lCk=l,k=l,k=l五、程序设计题(本大题共2小题,每小题10分,共20分)1.按下面要求编写程序:(1)定义函数CaLPOWer(x,n)计算X的n次器(即xn),函数返回值类型是double.(2)定义函数main(),输入浮点数X和正整数n,计算并输出下列算式的值.要求调用函数cal_p«wer(x,n)计算X的n次塞.2.下面程序的功能是:在6至I(M)O内找出所有的合数,并按从小到大的顺序将每个合数按"%6d"格式写入到D盘根目录下新建的文件"design.dat"中.说明:某数等于其诸因子之和则称该数为合数,如6=1+2+3,28=1+2+4+7+14则6、28就是合数.浙江科技学院2010-2011学年第2学期考试试卷A卷考试科目C语言程序设计考试方式闭完成时限2小时拟题人题库审核人批准人2011年6月25日建工、生化、艺术、轻工、理学学院2010年级理工科专业即序二三四五总分加分人复核人得分霆名123456789101112AB得分 二、单选题(本大题共20小题,每题1分,共20分)请在各小题正确选项的 对应位置上填7”.12345678910ABCD11121314151617181920ABCD三、程序填空题(本大题共5小题,每空2分,共24分)请在各小题正确选 项的对应位置上填7”.123456789101112A一、判断题(本大题共12小题,每题小1分,共12分)请在各小题正确选项的对应位置上填7”,A表示正确,B表示错误.BCD得分四、程序阅读题(本大题共6小题,每小题4分,共24分)请在各小题正确选项的对应位置上填7”.123456ABCD得分五、程序设计题(本大题共2小题,每小题10分,共20分)浙江科技学院2010-2011学年第2学期考试试卷A卷考试科目C语言程序设计考试方式闭完成时限2小时拟题人题库审核人批准人2011年6月25日建工、生化、艺术、轻工、理学学院2010年级理工科专业参考答案及评分标准一、判断题(本大题共12小题,每题小1分,共12分).123456789101112AB二、单选题(本大题共20小题,每题1分,共20分)12345678910ABCD11121314151617181920ABCD三、程序填空题(本大题共5小题,每空2分,共24分)1234S6789101112ABCD四、程序阅读题(本大题共6小题,每小题4分,共24分)123456ABCD五、程序设计题(本大题共2小题,每小题10分,共20分)#include<stdio.h>doublecal-power(doublex,intn)/1分doublep=x;inti;/1分for(i=l;i<n;i+)p=p*x;"2分returnp;/1分voidmain()doublex,s=0;/1分inti,n;scanf(M%lf,%d'&x,&n);/1分for(i=l;i<=n;i+)s=s+l/cal_power(x,i);/2分printf(,%lf,s);/1分#include<stdio.h>#include<stdlib.h>voidmain()FILE*p;intn,i9s;/1分if(p=fopen(,'design.dat,w,l)=NULL)/1分printt("cannotopen111c11m);CXit(0);fbr(n=6;n<=l(M)0;n+)/1分s=0;"1分for(i=l;i<n;i+)/1分if(n%i=0)s+=i;"2分if(n=s)fprintf(p,M%6dM,n);/2分1fclose(p);/1分(写不下请写反面,不要另加纸张)浙江科技学院2010-2011学年第2学期考试试卷B卷考试科目C语言程序设计考试方式闭完成时限2小时拟题人题库审核人批准人2011年6月25日建工、生化、艺术、轻工、理学学院2010年级理工科专业遇命题:4.应将全部答案写在答卷纸对应的题号处;否则作无效处理;5.编程题应写明题号,若答卷纸不够,请写在背面,不要另添卷纸;6.考试完成后,必须将试卷与答卷同时交回.一、判断题(本大题共12小题,每题小1分,共12分)13.设有定义:m4山3=1,2m3;,则数组元素2口2的值为3.14.设''intx=5;",则表达式x%24的结果为0.25.RR,15.并联电阻的计算公式R7京对应的C语言表达式是R1*R2R1+R2.16.字符常量'A,与字符串常量''A"所占用的存储单元大小不同II17.传值调用的形参只有在被调用时才被创建(分配存储单元).18. 个共用体类型的变量,在内存中占用的字节数,为其各成员数据类型所占内存的总和.19. break语句和continue语句一样都只能用于循环语句.20. a是一维数组名,数组元素注1还可以写作"*(a+)L21.与语句"if(!x)y=l;"等价的语句是"if(x!=0)y=l;".22.可以通过表达式:InaX=X>y?x:y求x,y两个数中的大数.23.C语言的编译预处理就是对源程序进行初步的语法检查.24.已知一个字符在内存中占1个字节,字符串''Program"在内存中占7个字节。即序二三四五总分加分人复核人得分霆名得分二、单选题(本大题共20小题,每题1分,共20分)21.以下说法中错误的是().A.一个C程序可以由一个或多个函数构成B.一个C程序必须有而且只能有一个main0函数C.在计算机上编辑C程序时,每行只能写一条语句D.主函数是程序启动时唯一的入口22.N-S图与传统流程图相比较,其主要优点是().A.杜绝了程序的无条件转移B.具有顺序、选择和循环三种基本结构C.简单、直观I).有利于编写程序23.C语言中运算对象必须是整型的运算符是().A.%=B./C./Ilo24.已知Charc=,'inti=l,j;»执行语句j=!c&&i+;后,则i和j的值是().A.1,1B.1.0C.2,1D.2,025.以下能正确定义一维数组的选项是().A.inta5=0,1,23,4;B.chara=0,1,2,3,4,5;C.Chara='A','B','C;I),inta=”0123”;26.若有以下说明语句(已知int占2个字节,long占4个字节),则下面Printf的输出结果是<)unionUareaintx;Iongy;structstrChars20;uninUareaz;main。Printf("%dn",sizeof(structstr);A.24B.26C.20D.3027.有以下程序:#include<stdio.h>voidnain()inta=15,b=21,m=0;SWitCh(a%3)caseO:m+;break;case1:n+;switch(b%3)default:m+;break;CaSeO:m+;break;printf(n%dn,m);程序运行后的输出结果是一().A.1B,2C.3D.428.己知inti,a;,执行语句i=(a=2*3,a*5),a+6;后,变量i的值是().A.6B.12C.30D,3629.有如下数组定义语句inta23=1,23,4,5,61;".则*(*(a+l)+2)的值是().A.2B.6C.元素2的地址D.元素6的地址30.已知链表结点定义语句为"structnodeintnum;structnode*next;".在下图所示的链表中,head为头指针,如果要删除pl所指的结点,在执行语句"free(P1);"前,需要执行的语句是().headA.pl=pl->next;B.head=pl;C.pl=head;D.head=pl->next;31.如果要从C盘根目录下的文件"abc.txt"中读取数据,已知文件指针为fp,则打开该文件的语句是()。A.fp=fopen(wczabc.txtw,wr,;B.fp=fopen("cabc.txt","w");C.fp=fopen(wcabc.txffcfcrw);D,fp=fopen(fcfccabc.txt,*4wm);32.已有定义:Charan="xyz",bU=rx'y*F;,以下叙述中正确的是().A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.上述说法都不对33.以下对C语言函数的有关描述中,正确的是()A.调用函数时,实参个数与形参个数可以不同B.函数既可以嵌套定义又可以递归调用C.函数可以有返回值,也可以没有返回值D.C程序中有调用关系的所有函数必须放在同一个源程序文件中34.下列程序段的输出结果为().int*ptr;intarr=6,7,8,9,10;ptr=arr;*(ptr+2)+=2;Printf("%d,%dn'',*ptr,*(ptr+2);A.8,10B.6,835.下列程序的输出结果是().#include<stdio.h>voidmain()nty;doubled=3.4,x;x=(y=d2.0)2;PriIItf(''%021f,%d'',x,y);A.0.00,1B.0.85,L736.当调用函数时,实参是一个数组名,A.数组的长度C.数组每一个元素的地址37.以下程序运行后的输出结果是(nain()chara7=,a»0a00M;intij;i=sizeof(a);j=strlen(a);printf(o%d%dn'ij"A.22B.76C-7,9D6,10C.0.50,1D.以上都不对则向函数传送的是().B.数组的首地址I).数组每个元素中的值C.72D.6238.执行以下程序后,输出结果是().main()inty=ll;while(-y)y-;Printf("%dn'',y-);A.-IB.IC.8D.O39.下列程序段的输出结果是().charc,k;c=,b,;k=4;switch(c)case,a*:k=l;case,b,:k=2;case'c*:k=3;printf(,%d,k);A.1B.2C.3I).440.已知有如下的宏定义:"#defineSx+y",则下列语句执行后的输出结果是()。intx=10,y=20;printf(w%d,S*S);A.900B.230C.420I).140程序填空题(本大题共4小题,每空2分,共24分)输入1个正整数n,计算并输出S的前n项的和。请填空.S=12-23+34-45h+1尸n(n+l)#include<stclio.h>voidmain()intk,ag=l9n;floats=0;scanf(u%d,n);for(k=l;k<=n;k+)s=s+-(1)J;printf(fcksum=%fnr*,s);B. flag*n(n+l)D. l.O*k(k+l)*flaB. s=-sD. k=-k(1)A.LO*k(k+l)C.-k(k+l)(2)A.flag=-lC.Aag=-Aag输入一个正整数,按照从高位到低位的顺序输出各位数字,请填空。运行示例:Enteraninteger:1902Thedigitsare:1902#include<stdio.h>voidnain()intdigit,number,power,t;printf(uEnteraninteger:*);SCanf(”d'',&numb“);number=number<0?-number:number;power=1;while(4)power率=10;t=10;;printf(uThedigitsare:”);while(5)digit=number/power;PrintfC'%d",digit);(6)_power/=10;I(3)A.t=l;B.t-number;C.D.number=1;(4)A.t>=10B.power>=10()C.t!=0D.number!=0(5)A.power=0B.digit!三0C.number!=0D.power>=1(6)A.number/=power;B.number%=10;C.number%=power;D.number/=10;8.输入一个整数,求它的各位数字之和及位数。例如,17的各位数字之和是8,位数是2。请填空.运行示例:Enteraninteger:-153sum=9,count=3#include<stdio,h>main()intcount=0,data,sum=0;printf('tEnteraninteger:'*);SCalIfr'%d'',&data);i11data<0)data=-data;dosum=sum+(7);(8);count+;while(9)月printf(Msum=%d,count=%dn'sum,count);(7)A.data%10B.datamod10C.data/10D,data(8)A.data=data%10B.data/10C.data=data/10D,data%10(9)A.data%10!=0B.data!=09.本程序用于动态建立一个链表.链表中每个结点包括学号、成绩及指向下一结点的指针,整个链表共1()个结点./*结点定义*/*学号*/芦分数岁/*指骨域*/#includc<stdio.h>#include<malloc.h>#denneNUI.L0structstudentintnum;floatscore;(10);;voidmain()(structstudent*hcad=NULL,*pl,*p2;intn=0;doPl=(St