武汉理工大学考试试卷(A、B卷)2010~2011学年2学期C语言程序设计课程闭卷一、单项选择题(每题2分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将所选代码填写在下面表格中的对应位置。错选、多选或未选均无分。1.以下叙述不正确的是______。A.在C程序中,注释说明只能位于一条语句的后面。B.一个C源程序可由一个或多个函数组成。C.一个C源程序必须包含一个main函数。D.C程序的基本组成单位是函数。2.以下选项中,______是合法的C语言字符常量。A.″A″B.′\0x43′C.′ab′D.′\084′3.以下不是合法的C语言赋值语句为______。A.++a;B.n=(m=(p=0));C.a=b==c;D.k=a+b=1;4.设在C语言中,一个int型数据在内存中占用2个字节,则unsignedint型数据的取值范围为______。A.0~255B.0~32767C.0~65535D.0~21474836475.已知字符′b′的ASCII码为98,语句printf(″%d,%c″,′b′,′b′+1);的输出结果为______。A.98,bB.语句不合法C.98,99D.98,c6.执行语句for(i=1;i++4;);后,变量i的值是______。A.3B.4C.5D.不定7.若有声明inta[3][4];,则对a数组元素的非法引用是。A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]8.在C语言程序中,数组名做函数调用的实参时,传递给形参的是。A.数组第一个元素的值B.数组的首地址C.数组全部元素的值D.数组元素的个数9.设有数组定义:chararray[]=China;则数组array所占的存储空间为。A.4个字节B.5个字节C.6个字节D.7个字节10.若有定义intx,*p;,则以下正确的赋值表达式是。A.p=&x;B.p=x;C.*p=&x;D.*p=*x;二、判断题(每题1分,共10分)请将答案填写在下面的表格中,正确填“√”,错误填“×”。()1.在C语言程序中,程序的执行总是从main()函数开始,在main()函数中结束。()2.利用scanf函数输入数据时,只有格式控制,没有输入项也能正确输入数据到内存,如scanf(″a=%d,b=%d″);。()3.break语句只能用于switch语句体中。()4.do…while语句的循环体至少无条件执行一次。()5.构成数组的各个元素可以有不同的数据类型。()6.可以利用变量对数组的下标进行动态定义,例如intn=10;inta[n];。()7.函数strlen(China\n)的值是7。()8.函数的定义一般由函数首部和函数体部分组成。()9.用户自定义的函数必须有返回值。()10.函数调用中的参数称为实际参数。三、填空题(每空1分,共10分)1.C语言程序的基本结构可以分为:、、三种。2.数组a[10]下标的范围是从________到________。3.在C语言中,取地址运算符是,指针运算符是。已知n为三位整数,即n=100且n=999,求n的百位数字、十位数字、个位数字的表达式分别为、和。四、程序阅读题(每题5分,共15分)1.#includestdio.hmain(){intx;scanf(%d,&x);if(x15)printf(%d,x-5);if(x10)printf(%d,x);if(x5)printf(%d\n,x+5);}若程序运行时从键盘输入12后回车,则输出结果为:。2.main(){inti,j,s=0;for(i=1;i=5;i++)for(j=1;j=i;j++)s=s+2;printf(s=%d\n,s);}程序运行后的输出结果为:。3.#includestdio.hmain(){inta,b;int*p1,*p2,*p;scanf(%d%d,&a,&b);p1=&a;p2=&b;if(ab){p=p1;p1=p2;p2=p;}printf(%d%d\n,a,b);printf(%d%d\n,*p1,*p2);}若程序运行时从键盘输入4和5后回车,则输出结果为:。五、程序填空题。(每空3分,共15分)1.一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),找出所有的这种数。main(){intn,a,b,c;for(a=1;a=9;a++)for(b=0;b=9;b++)for(c=0;c=9;c++){n=;if(==n)printf(%d,n);}}2.定义求素数的prime函数,在main调用prime函数,求3~200内的所有素数。intprime(intm){inti,flag;flag=1;for(i=2;i=m-1;i++){if(){;break;}}returnflag;}main(){intprime(int);intn,judge;for(n=3;n=200;n=n+2){judge=;if(judge==1)printf(%-4d,n);}}六、程序编写题(每题10分,共30分)。1.编程实现:输入实数a,b,c,假设a≠0,求二次方程ax2+bx+c=0实根的个数和实根的值。(若方程有实根,输出根的个数和实根的值,若方程无实根,输出标志“norealroots”。)2.编程实现求的值。3.从键盘输入10个整数并存入一维整型数组a中,利用冒泡法将数组a中的10个数按照从大到小进行排序,请编程实现。答案:1、单项选择题(本大题共10小题,每小题2分,共20分)12345678910ABDCDCDBCA二、判断题(每题1分,共10分)12345678910√××√×××√×√三、填空题(每空1分,共10分)1.顺序结构、分支结构(或选择结构)、循环结构2.093.&*4.n/100(n/10)%10或(n-100*(n/100))/10n%10四、程序阅读题(每题5分,共15分)1.12172.s=303.4554五、程序填空题。(每空3分,共15分)1.100*a+10*b+cpow(a,3)+pow(b,3)+pow(c,3)或者a*a*a+b*b*b+c*c*c2.m%i==0flag=0prime(n)六、程序编写题(每题10分,共30分)。1.编程实现:输入实数a,b,c,假设a≠0,求二次方程ax2+bx+c=0实根的个数和实根的值。(若方程有实根,输出根的个数和实根的值,若方程无实根,输出标志“norealroots”。)#includestdio.h#inlcudemath.hmain(){floata,b,c,x1,x2,s;printf(pleaseinputthevalueofa,b,c:\n);scanf(%f,%f,%f,&a,&b,&c);//2分s=b*b-4*a*c;if(s0)printf(norealroots\n);//2分elseif(s==0){x1=x2=(-b/(2*a));//2分printf(equationhasonerealroot\n:x1=x2=%f,x1);}else{x1=-b/(2*a)+sqrt(s)/(2*a);x2=-b/(2*a)-sqrt(s)/(2*a);//2分printf(equationhastworealroots\n:x1=%f,x2=%f,x1,x2);//2分}}2.编程实现求的值。main(){inti,sum;//2分sum=0;//2分for(i=1;i=10;i++)//2分sum=sum+(i+i*i);//2分printf(%d,sum);//2分}3.从键盘录入10个整数并存入一维整型数组a中,利用冒泡法对数组a中的10个数进行排序,请编程实现。#includemath.hmain(){inta[10],i,j,temp;for(i=0;i10;i++)scanf(%d,&a[i]);//2分for(i=0;i9;i++)//2分{for(j=0;j9-i;j++)//2分{if(a[j]a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}//4分}}for(i=0;i10;i++)printf(%5d,a[i]);}