您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 程序设计语言C期末考试题A答案
第1页共4页北京师范大学珠海分校2011-2012学年第二学期期末考试(A卷答案)开课单位:应用数学学院课程名称:程序设计语言C任课教师:冯霜考试类型:闭卷考试时间:120分钟学院___________姓名__________学号______________班级____________试卷说明:本试卷共4页,满分100分------------------------------------------------------------------------------一、单项选择题(请将答案填入下表内,每小题2分,共60分)12345678910BBACADBBCB11121314151617181920CBDAACDBDA21222324252627282930BBDADADBDC1、结构化程序所要求的基本结构不包括(B)A、顺序结构B、if…goto结构C、选择结构D、循环结构2、如有定义语句:intx=12,y=8,z;在其后执行语句z=0.9+x/y,则z的值为(B)A、1.9B、1C、2D、2.43、以下选项中可作为C语言合法常量的是(A)A、-80B、-080C、-8e1.0D、-80.0e4、voidmain(){inty=9;for(;y0;y--)if(y%3==0)printf(%d,--y);}程序的运行结果是(C)A、741B、963C、852D、85205、以下选项中叙述错误的是(A)A、C程序函数中定义的赋有初始值的static变量,每调用一次函数,赋一次初值B、C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内C、C程序函数中定义的auto变量,若无初值,则其值是不定的D、C程序函数的形参不可以说明为static型变量6、若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是(D)A、实参和其对应的形参共占同一存储单元B、形参只是形式上的存在,不占用存储单元C、同名的实参和形参占同一存储单元D、形参和实参分别占用不同的存储单元7、以下定义语句中正确的是(B)A、inta=b=0;B、charA=65+1,b=′b′;C、floata=1,*b=&a,*c=&b;D、doublea=10,*b=1.1;8、已知intt=0;while(t=1){printf(“RUN!\n”);}则以下叙述正确的是(B)A、循环控制表达式的值为0B、循环控制表达式的值为1C、循环控制表达式不合法D、以上说法都不对9、charch=′a′;intk=12;printf(%c,%d,%d,,ch,ch,k);printf(k=%d\n,k);试卷装订线题号一二三总分得分阅卷人第2页共4页已知字符a的ASCII码值为97,则执行上述程序段后输出结果是(C)A、变量类型与格式描述符的类型不匹配,输出无定值B、输出项与格式描述符个数不符,输出为零值或不定值C、a,97,12,k=12D、a,97,k=1210、若有语句:inta=10,b=20;执行表达式(a=ab)&&(b=ba)后,a和b的值分别为(B)A、0和1B、0和20C、10和1D、以上答案都不正确11、以下错误的定义语句是(C)A、intx[][3]={{0},{1},{1,2,3}};B、intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C、intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};D、intx[][3]={1,2,3,4};12、以下能正确定义一维数组的选项是(B)A、inta[5]={0,1,2,3,4,5};B、chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};C、chara={′A′,′B′,′C′};D、inta[5]=0123;13、若定义语句:inty=2011,*p=&y;以下不能使变量y中的值增至2012的语句是(D)A、*p+=1;B、(*p)++;C、++(*p);D、*p++;14、voidmain(){charp[]={abc},q[10]={′a′,′b′,′c′};printf(%d%d\n,strlen(p),strlen(q));}以下叙述中正确的是(A)A、在给数组p和q赋初值后,都以′\0′结束,故输出的长度都为3B、由于p数组中没有′\0′,长度不能确定,但q数组中字符串长度为3C、由于q数组中没有′\0′,长度不能确定,但p数组中字符串长度为3D、由于p和q数组中都没有′\0′,故长度都不能确定15、程序:#defineM(X,Y)X*Y#defineN(X,Y)(X)/(Y)voidmain(){inta=5,b=6,c=8,k;k=N(M(a+1,b+1),c);printf(%d\n,k);}运行后的输出结果是(A)A、1B、3C、5D、1116、当用户要求输入的字符串中含有空格时,应使用的输入函数是(C)A、scanf()B、getchar()C、gets()D、getc()17、若有说明:intn,*p=&n,m=5;以下正确的程序段是(D)A、scanf(%d,&p);B、scanf(%d,*p);C、scanf(%d,&n);p=n;D、*p=m;18、指针变量的值是(B)A、整数B、所指向变量的地址C、二进制数D、NULL19、若有以下定义inta[5]={0},*p=a;,则对a数组元素的正确引用是(D)A、*&a[5]B、a+2C、*(p+5)D、*(a+2)20、设有结构体定义:structstudent{charname[12];chargender;floatscore[3];}s1,s2;若变量均已正确赋初值,则以下语句中正确的是(A)A、s1=s2;B、s2-gender=s1-gender;C、s2.name=s1.name;D、s2.score=s1.score;21、structty{intdata;charc;}a={30,'x'};voidmain(){structty*p=&a;p-data=20;(*p).c='y';printf(%d,%c,a.data,a.c);}程序运行后的输出结果是(B)A、30,xB、20,yC、20,xD、程序编译会出错22、程序voidmain(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a+1;printf(%d\n,*(p+2));}的输出结果是(B)A、3B、4C、1D、2第3页共4页23、有定义语句:chars[10];若要从终端给s输入5个字符,错误的输入语句是(D)A、gets(&s[0]);B、scanf(%s,s+1);C、gets(s);D、scanf(%s,s[1]);24、若执行fclose函数时,关闭文件成功,则函数的返回值是(A)A、0B、NULLC、1D、EOF25、若要用fopen函数向二进制文件末尾添加新的数据,文件使用方式应是(D)A、w+B、a+C、rb+D、ab+26、若有语句:char*line[5];以下叙述中正确的是(A)A、定义line是一个指针数组,每个数组元素是一个基类型为char的指针变量B、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C、定义line是一个字符数组,语句中的*号称为间址运算符D、定义line是一个指向字符型函数的指针变量27、以下叙述中错误的是(D)A、在程序中凡是以#开始的语句行都是预处理命令行B、预处理命令行的最后不能以分号表示结束C、#defineMAX是合法的宏定义命令行D、C程序对预处理命令行的处理是在程序执行的过程中进行的28、以下叙述中错误的是(B)A、gets函数用于从终端读入字符串B、getchar函数用于从磁盘文件读入字符C、fputs函数用于把字符串输出到文件D、fwrite函数用于以二进制形式输出数据到文件29、以下正确的函数形式是(D)A、doublefun(intx,inty){z=x+y;returnz;}B、fun(x,y){intx,y;doublez;z=x+y;returnz;}C、fun(intx,y){intz;returnz;}D、doublefun(intx,inty){doublez;z=x+y;returnz;}30、下面判断正确的是(C)A、char*a=bnuz;等价于char*a;*a=bnuz;B、charstr[4]={bnuz};等价于charstr[]={bnuz};C、char*s=bnuz;等价于char*s;s=bnuz;D、charc[4]=abc,d[4]=abc;等价于charc[4]=d[4]=abc;二、阅读程序(请将程序的输出结果写在方框内,每小题5分,共30分)1、intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}voidmain(){intx=10;x=fun(x);printf(%d\n,x);}552、intfun(){staticintx=4;x++;returnx;}voidmain(){inti,t=1;for(i=1;i=3;i++)t*=fun();printf(t=%d\n,t);}t=2103、voidsub(floatx,float*y,float*z){*y=*y-1.0;*z=*z+x;}voidmain(){floata=2.5,b=9.0,*p=&a;sub(b-a,p,p);printf(a+b=%.2f\n,a+b);}a+b=17.004、voidreverse(inta[],intn){inti,t;for(i=0;in/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},i,s=0;reverse(b,8);for(i=6;i10;i++)s+=b[i];printf(s=%d\n,s);}s=22第4页共4页5、voidmain(){inta=0,i;;for(i=1;i5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;break;default:a+=5;}}printf(a=%d\n,a);}a=166、intfun(char*s){intn=0;while(*s='0'&&*s='9'){n=10*n+*s-'0';s++;}return(n);}//ASCII码:'0'为48、'9'为57voidmain(){chars[10]={72a4b9c0d};printf(%d\n,fun(s));}72三、程序设计题(共10分)已知定积分1()nbnaibabaxdxaiSnn,nS的值由函数sum计算,函数sum首部为floatsum(intn,floata,floatb),在主函数中输入积分上下限,调用sum计算123,,,......SSS,直到6110nnSS,输出此时的nS(即为该定积分的近似值),请编写完整源代码。#includestdio.h#includemath.h...............................1分floatsum(intn,floata,floatb){inti;floats=0;...............................1分for(i=1;i=n;i++)s=s+(b-a)/n*(a+(b-a)*i/n);................2分returns;..............................1分}voidmain(){intn=1;floata,b,s1,s2;printf(请输入积分上下限:);scanf(%f,%f,&a,&b);...........
本文标题:程序设计语言C期末考试题A答案
链接地址:https://www.777doc.com/doc-2238367 .html