1电子科技大学网络教育考卷(B卷)(20年至20学年度第学期)考试时间年月日(120分钟)课程C语言教师签名_____大题号一二三四五六七八九十合计得分一、单项选择题(每小题1分,共30分)1、以下程序的运行结果是:________②_________。#includestdio.h#includestring.hvoidmain(){chars[]=abcd;printf(%d,%d\n,strlen(s),sizeof(s));}①5,4②4,5③4,4④5,52、以下程序的运行结果是:________③_________。#includestdio.h#includestring.hvoidmain(){chars[20]=abcd;printf(%d,%d\n,sizeof(s),strlen(s));}①4,5②20,20③20,4④4,203、若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是:_____④_____①read(a,b,d);②scanf(%d%d%d,a,b,c)③scanf(%D%D%D,&a,&b,&c);④scanf(%d%d%d,&a,&b,&c);4、以下程序段的输出是:_____③_____printf(|%10.5f|\n,12345.678);①|1234.67800|②|12345.6780|③|12345.67800|④|12345.678|5、在C语言中,要求运算数是整型的运算符是_____①_____①%②/③!=④*6、有输入语句:scanf(a=%d,b=%d,c=%d,&a,&b,&c);为使变量a,b,c的值分别为1,2,3,从键盘上输入数据的正确形式应当是_____②_____①123〈回车〉②a=1,b=2,c=3〈回车〉③a=1b=2c=3回车④1,2,3〈回车〉7、intx=3;if(1=2)if(0)x=4;elsex=5;elsex=6;执行上述语句后x的值是_____③_____①3②4③5④68、在C语言中表达式(2/5+3/5)的值是_________①_________。①0②0.4③0.6④19、设inta=2,b=3,c;c=(a*=b);则执行上述语句后c的值是_________④_________。①2②3③5④610、若有代数式xyx32,则以下能够正确表示该代数式的C语言表达式为:________④__________。①2x+3/xy②2*x+3/x*y③(2*x+3)/x*y④(2*x+3)/x/y11、inta,b,c=5;a=c++;b=c;执行上述语句后,则b的值为_________③_________。①4②5③6④712、已知:inta[][3]={1,2,3,4,5,6,7,8,9};此时数组元素a[2][1]的值为__________④________。①4②5③7④813、以下叙述正确的是_____③_____①goto语句只能用于退出多层循环。②可以用continue语句来终止switch语句的执行。③break语句只能用在循环体内和switch语句体中。④在循环内使用break语句和continue语句的作用相同。14、以下对二维数组a的正确说明是_____③_____①inta[3][];②floata(3,4);③inta[3][4];④floata(3)(4);15、字符串uestc在内存占用_________②_________字节。①5②6③10④1216、程序段doublex=12.3456789;printf(x=%-10.2f,x);执行后输出的结果是_________③_________。(用大写字母U表示空格)①x=12.34UUUUU②x=UUUUU12.34③x=12.35UUUUU④x=UUUUU12.3517、有以下程序:#includestdio.h#includestdlib.hvoidmain(){char*p,*q;p=(char*)malloc(20*sizeof(char));q=p;scanf(%s%s,p,q);printf(%s%s\n,p,q);}若从键盘输入:abcdef回车,则输出结果是:______①______。姓名__________________专业名称__________________班号________________学号__________________教学中心_________________………………………………………密………………………………………封……………………………线………………………………………2①defdef②abcdef③abcd④dd18、以下程序的输出结果是:_____③_____。#includestdio.hvoidf(intn){if(n==0)return;f(n-1);printf(%d,n);}voidmain(){f(5);printf(\n);}①1234②4321③12345④5432119、intx;x=23?4:5=6?7:8;则执行上述语句后x的值为_________③_________。①0②4③7④820、inta=2,b=3;a*=a+b;则执行上述语句后a的值为_________③_________。①5②7③10④1521、设有定义:doublex=4.9;则表达式(int)(x)%3/4的值是_________④_________。①4.9②0.5③0.25④022、设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是:______③______。①x=x*100+0.5/100.0②x=(x*100+0.5)/100.0③x=(int)(x*100+0.5)/100.0④x=(x/100+0.5)*100.023、设有定义:floata=2,b=4,h=3;,以下C语言表达式中与代数式(a+b)h/2计算结果不相符的是:_____②_______。①(a+b)*h/2②(1/2)*(a+b)*h③(a+b)*h*1/2④h/2*(a+b)24、有以下程序段:intk=0;while(k=1)k++;while循环执行的次数是_________①________。①无限次②有语法错,不能执行③一次也不执行④执行1次25、以下程序的输出结果是:________①_________。#includestdio.hvoidmain(){printf(%d\n,NULL);}①0②1③-1④NULL没定义,出错26、以下程序的运行结果是:________②_________。#includestdio.htypedefstruct{charx,y;}data;voidmain(){datam={'A','B'};printf(%c%c\n,m.x,m.y);}①AA②AB③BA④BB27、设有如下程序段:intx=2008,y=2009;printf(%d\n,(x,y));则以下叙述中正确的是______④______。①输出语句中格式说明符的个数少于输出项的个数,不能正确输出②运行时产生出错信息③输出值为2008④输出值为200928、以下程序的输出结果是:_________①_________。#includestdio.h#includestring.hvoidmain(){chars[]=abcd,t[10]=abcd;printf(%d,%d,%d,%d\n,sizeof(s),sizeof(t),strlen(s),strlen(t));}①5,10,4,4②5,5,4,4③4,4,5,10④4,4,4,1029、一个C程序的执行是从_____①_____①本程序的main函数开始,到main函数结束。②本程序的第一个函数开始,到本程序最后一个函数结束。③本程序的main函数开始,到本程序文件的最后一个函数结束。④本程序的第一个函数开始,到本程序main函数结束。30、下面的四个选项中,不合法的用户自定义标识符是_____③_____①Do②_123③2ab④INT二、判断题(正确的划√,错误的划×,每小题1分,共10分)(×)1、在同一个数组中可以存储许多不同类型的值。(×)2、C语言中,变量名用大小写是等价的。(×)3、在C语言程序中,不允许变量同名。(×)4、switch选择结构中必须有default子句。(×)5、强制类型转换,如(double)x,只改变原变量的类型,而不改变其值。3(×)6、C语言的所有循环语句都要求至少要执行一次循环体。(×)7、在一个switch开关语句中可以有一个或多个default子句。(×)8、一个函数floatdiv(floatx,floaty),其函数原型说明为floatdiv(floatx,floaty)。(√)9、以下程序的运行结果为:555#includestdio.hvoidmain(){intx=5,*p,**q;p=&x;q=&p;printf(%d%d%d\n,x,*p,**q);}(√)10、C语言中,注释可以出现在源程序中空格可以出现的任何位置。三、程序填空题(请在横线上填入合适的语句,将程序补充完整。每小题5分,共15分)1、用迭代法求ax。求平方根的迭代公式为nnnxaxx211。要求前后两次求出的x的差的绝对值小于10-6。#includestdio.h#includemath.hvoidmain(){floata,x0,x1;printf(Enterapositivenumber:);scanf(%f,&a);x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(________________fabs(x0-x1)=1e-6________________);printf(Thesquarerootof%5.2fis%9.6f\n,a,x1);}2、从键盘读入两个数,求其最大者。#includestdio.hintmax(int,int);voidmain(){inta,b,c;printf(a=);scanf(%d,&a);printf(\nb=);scanf(%d,&b);c=max(a,b);printf(\nmaxis%d\n,c);}intmax(intx,inty){____________________returnxy?x:y;_____________________________}3、从键盘读入一个字符串,求该字符串的长度。#includestdio.hintlen(char*);voidmain(){charstr[80];printf(Pleaseinputastring:);scanf(%s,str);printf(Thelengthofthestringis%d.\n,len(str));}intlen(char*p){intn=0;while(*p!='\0'){n++;____________________p++;____________________}return(n);}四、程序分析题(请将程序运行后的输出结果写在横线上。每小题5分,共25分)1、#includestdio.hvoidmain(){inta[3][3]={{3,2,2},{4,5,6},{-2,9,2}};inti,j,s=0;for(i=0;i3;i++)for(j=0;j3;j++)if(i==2-j)s=s+a[i][j];printf(s=%d\n,s);}运行结果:_______________________s=5____________________2、#includestdio.hintf(intn){switch(n){case0:case1:return1;}4