CLanguage1C语言程序设计题号一二三四总分得分一、填空题(每小题3分,共15分)1、C程序的基本组成单位是________2、若x,i,j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后,x的值为________3、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为________4、若w=1,x=2,y=3,z=4,则条件表达式wx?w:yz?y:z的值是:________5、下面程序的运行结果是________main(){chara[80」=AB,b[80]=LMNP;inti=0;strcat(a,b);whi1e(a[i++]!='\0')b[i]=a[i];puts(b);}二、选择题(每小题2分,共30分)1、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是:()A)7B)8C)6D)22、以下不正确的叙述是()A)在C程序中,逗号运算符的优先级最低B)在C程序中,APH和aph是两个不同的变量C)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。3、已知字母A的ASCII码为+进制数65,且c2为字符型,订线装姓名准考证号准考证号单位CLanguage2则执行语句c2='A'+'6'-'3';后,c2中的值为()A)DB)68C)不确定的值D)C4、若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()A)2.500000B)2.7500OOC)3.500000D)0.000000。5、若有以下定义,则能使值为3的表达式是:()intk=7,x=12;A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5)6、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式()A)从左起输出该字串,右补空格B)按原字符长从左向右全部输出C)右对齐输出该字串,左补空格D)输出错误信息7、若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是:()A)scanf(%d%lx,%le,&x,&y,&z);B)scanf(%2d*%d%lf&x,&y,&z);C)scanf(%x%*d%o,&x,&y);D)scanf(%x%o%6.2f,&x,&y,&z);8、阅读下程序,若运行结果为如下形式,输入输出语句的正确内容是:()main(){intx;floaty;printf(enterx,y:)输入语句输出语句}输入形式enterx,y:23.4输出形式x+y=5.40A)scanf(%d,%f,&x,&y);printf(\nx+y=%4.2f,x+y);B)scanf(%d%f,&x,&y);printf(\nx+y=%4.2f,x+y);C)scanf(%d%f,&x,&y);printf(\nx+y=%6.lf,x+y);CLanguage3D)scanf(%d%3.1f,&x,&y);printf(\nx+y=%4.2f,x+y);9、有输入语句:scanf(a=%d,b=%d,c=%d,&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是()A)132(回车)B)1,3,2(回车)C)a=1b=3c=2(回车)D)a=1,b=3,c=2(回车)10、请阅读以下程序:main(){inta=5,b=0,c=0;if(a=b+c)printf(***\n);e1seprintf($$$\n);以上程序:()A)有语法错不能通过编译B)可以通过编译但不能通过连接C)输出***D)输出$$$11、有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf(%d,s);则()A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次12、若有如下语句intx=3;do{printf(%d\n,x-=2);}while(!(--x));则上面程序段()A)输出的是1B)输出的是1和-2C)输出的是3和0D)是死循环13、下面程序的功能是计算:至50中是7的倍数的数值之和,请选择填空。()#includestdio.h·CLanguage4main(){inti,sum=0;for(i=1;i=50;i++)if([1])sum+=i;printf(%d,sum);}A)(int)(i/7)==i/7B)(int)i/7==i/7C)i%7=0D)i%7==014、下面程序段:()for(t=1;t=100;t++){scanf(%d,&x);if(x0)continue;printf(%3d,t);}A)当x0时整个循环结束B)x=0时什么也不输出C)printf函数永远也不执行D)最多允许输出100个非负整数15、下面程序一一一(每行程序前面的数字表示行号)。()1main()2{3floata[10]={0.0};4inti5for(i=0;i3;i++)scanf(%d,&a[i]);6for(i=0;i10;i++)a[0]=a[0]+a[i];7printf(%d\n,a[0]);8}A)没有错误B)第3行有错误C)第5行有错误D)第7行有错误三、程序阅读题(每小题5分,共20分)1、以下程序的运行结果是sub(intx,inty,int*z)CLanguage5{*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(%4d,%4d,%4d\n,a,b,c);2、下面程序的功能是用递归法将一个整数转换成字符形式输出。例如输入483,应输出字符串483。#includestdio.hvoidconvert(intn){inti;if((【1】)!=0)convert(i);putchar(n%10+’0’);}main(){intnumber;scanf(%d,&number);if(number0){putchar('-');number=-number;}convert(number);}则【1】处应填3、运行程序时,若从键盘输入asdafaaz67(回车),分析以下程序的输出结果。CLanguage6#includestdio.hintfun(charstr[]){inti,j=0;for(i=0;str[i]!=’’;i++)if(str[i]!=’’)str[j++]=str[i];str[j]=’’;}main(){charstr[81];intn;printf(Inputastring:);gets(str);fun(str);printf(%s\n,str);}4、下面是两个自定义函数,分别实现求两个整数的最大公约数和最小公倍数。#includestdio.hintdivisor(inta,intb){intr;CLanguage7while(___________){a=b;b=r;}returnb;}intmultiple(inta,intb){intd;____________returna*b/d;}voidmain(){inta,b,c,d;printf(intput(a,b):);scanf(%d,%d,&a,&b);c=divisor(a,b);d=multiple(a,b);printf(\ndivisor=%d\t\tmultiple=%d,c,d);}横线处应填:四、编程题(第一题5分,第二题10分,第三题20分,共35分)1、已知二阶Fibonacci数列:CLanguage8请编写一个递归函数,实现求Fib(n)。2、请用自定义函数的形式编程实现,求s=m!+n!+k!,m、n、k从键盘输入(值均小于7)。Fib(n)=0若n=01若n=1Fib(n-1)+Fib(n-2)其他情况CLanguage93、用至少4种方法写出求x,y,z中最大数,并输出。(定义/不定义函数算两种)CLanguage10答案一、填空题(每小题3分,共15分)1、函数2、323、双精度型4、15、LBLMNP二、选择题(每小题2分,共30分)1、B2、D3、A4、A5、D6、B7、D8、B9、D10、D11、B12、B13、D14、D15、C三、程序阅读题(每小题5分,共20分)1、-5,-12,-72、i=n/103、asdafaaz674、(r=a%b)!=0d=divisor(a,b);四、编程题(第一题5分,第二题10分,第三题20分,共35分)可参考答案1、#includestdio.hintfib(intn){intp;if(n==0)p=0;elseif(n==1)p=1;elsep=fib(n-1)+fib(n-2);returnp;}voidmain(){intn;printf(Pleaseinputfib:);scanf(%d,&n);printf(\n\nfibonacci=%d,fib(n));}2、#includestdio.hlongfun(intx){longy=1;while(x0){y*=x;x--;}return(y);}main(){intm,n,k;printf(Pleaseinputm,nandk:\n);scanf(%d,%d,%d,&m,&n,&k);CLanguage11printf(%ld\n,fun(m)+fun(n)+fun(k));}