《C语言程序设计》考试试卷(答案)一、填空题(每小空1分,共10分)1.C语言程序的三种基本结构是顺序结构、选择结构、循环结构。2.一个C程序有且仅有一个main()函数。3.C语言描述“x和y都大于或等于z”的表达式是x=z&&y=z。4.C语言可以用来实现循环的结构化语句是while、dowhile、for。5.数组名表示数组在内存的首地址。6.inta=3,*p=&a;*p+2的值是5。二、单项选择题(每小题2分,共70分)1.__B___是C语言合法的常量。(A).45(B)078(C)25.6e3.4(D)‘xy’2.一个程序的执行是从A。(A)本程序的main函数开始,到main函数结束(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。(C)本程序的main函数开始,到本程序文件的最后一个函数结束。(D)本程序文件的第一个函数开始,到main函数结束。3.以下叙述正确的是C。(A)在C程序中,main函数必须位于程序的最前面。(B)C程序每行中只能写一条语句。(C)C语言本是没有输入输出语句。(D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。4.以下叙述不正确的是D。(A)逗号运算符的运算级最低。(B)ABC和abc是两个不同的变量。(C)若a和b类型相同,在执行a=b后,b的自身值不变。(D)‘a’和“a”是完全等价的常量。5.intx=3,y=2;则表达式x+=x*=y+8的值为C。(A)28(B)30(C)60(D)176.设x=2.7,a=8,y=4.9,算术表达式x+a%3*(int)(x+y)%5/3的值为B。(A)2.7(B)3.7(C)4.7(D)4.037.执行下面两个语句后,输出的结果为__D___。charc1=98;printf(“%d%c”,c1,c1-32);(A)9766(B)98b(C)b66(D)98B8.执行下面语句后的结果为C。y=10;x=y++;(A)x=10,y=10(B)x=11,y=11(C)x=10,y=11(D)x=11,y=109.Charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型是A。(A)double(B)char(C)int(D)float10.C语言中要求操作数必须是整数的运算符是B。(A)/(B)%(C)!=(D)=11.用scanf(“%d,%d”,&a,&b)输入数据时,下面输入法中正确的是A。(A)123,4(B)1234(C)123;4(D)12.以下关于运算符优先顺序的描述中正确的是__C______(A)关系运算符<算术运算符<赋值运算符<逻辑与运算符(B)逻辑与运算符<关系运算符<算术运算符<赋值运算符(C)赋值运算符<逻辑与运算符<关系运算符<算术运算符(D)算术运算符<关系运算符<赋值运算符<逻辑与运算符13.下列程序段中,功能与其它程序段不同的是B。(A)for(i=1,p=1;i=5;i++)p*=i;(B)for(i=1;i=5;){p=1;p*=i;i++;}(C)i=1;p=1;while(i=5){p*=i;i++;}(D)i=1;p=1;do{p*=i;i++;}while(i=5);14.C语言规定else总是与D配对。(A)缩进位置相同的if(B)同一行上的if(C)其之前最近的if(D)其之后最近的if15.以下程序的运行结果为___A___。main(){intn;for(n=1;n=10;n++){if(n%3==0)continue;printf(“%d”,n);}}(A)12457810(B)369(C)12(D)1234567891016.设x和y均为int型变量,则语句x+=y;y=x-y;x-=y;的功能是D。(A)把x和y按从大到小排列(B)把x和y按从小到大排列(C)无确定结果(D)交换x和y中的值17.变量的指针,其含义是指该变量的_B____(A)值(B)地址(C)名(D)一个标志18.以下函数调用语句中含有A个实参。func((e1,e2),(e3,e4,e5));(A)2(B)3(C)5(D)语法错误19.以下正确的描述是___B_____(A)continue语句的作用是结束整个循环的执行(B)只能在循环体内和switch语句体内使用break语句(C)在循环体内使用break语句或continue语句的作用相同(D)goto语句只能用于退出多层循环20.以下程序运行的结果是D。main(){inta=2,b=3,c=2;if(ab)if(ac)c--;elsec+=1;printf(“%d\n”,c);}(A)0(B)1(C)2(D)321.inta[4]={2,3,4},I;i=a[0]*a[1]+a[2]*a[3];i的值为C。(A)2(B)4(C)6(D)1022.以下正确的函数定义形式是C。(A)doublefun(intx,inty);(B)doublefun(intx;inty)(C)doublefun(intx,inty)(D)doublefun(intx,y)23.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是B。(A)float型(B)int型(C)long型(D)double型24.若有定义inta[4]={1,2,3};请问a[a[a[0]]]的值是C。(A)1(B)2(C)3(D)425.以下正确的描述是____B________(A)函数的定义可以嵌套,函数的调用不可以嵌套(B)函数的定义不可以嵌套,函数的调用可以嵌套(C)函数的定义和函数的调用均不可以嵌套(D)函数的定义和函数的调用均可以嵌套26.以下不正确的说法是_____A_______(A)在函数内的复合语句中定义的变量在本函数范围内有效(B)在不同函数中可以使用相同名字的变量(C)形参是局部变量(D)函数调用结束后,静态局部变量的值仍然保留。27.已有定义:intx=3,y=4,z=5;则表达式!(x+y)+z-1&&y+z/2的值是D。(A)6(B)0(C)2(D)128.main(){intn[4]={1,2,3,4},k;for(k=0;k4;k++){if(k/2)break;n[k]++;}printf(“%d\n”,n[++k]);}执行后输出的结果是C。(A)2(B)3(C)4(D)529.判断字符串是否相等,应当使用D。(A)if(a==b)(B)if(a=b)(C)if(strcpy(a,b))(D)if(!strcmp(a,b))30.以下程序运行结果是A。voidsub(intx,inty,int*z){*z=y-x;}main(){inta,b,c;sub(11,7,&a);sub(5,a,&b);sub(a,b,&c);printf(“%d,%d,%d\n”,a,b,c);}(A)-4,-9,-5(B)-4,9,5(C)4,-9,-5(D)-4,9,-531.以下程序运行结果是B。main(){inta[2][3]={1,3,5,4,7,6},i,j,b=a[0][0];for(i=0;i2;i++)for(j=0;j3;j++)if(ba[i][j])b=a[i][j];printf(“%d\n”,b);}(A)5(B)7(C)4(D)132.以下程序运行结果是C。main(){chars[50]=”Iamastudent”,c;inti,num=0,word=0;for(i=0;c=s[i];i++)if(c==’’)word=0;elseif(word==0){word=1;num++;}printf(“%d\n”,num);}(A)2(B)3(C)4(D)533.以下程序运行结果是A。#includestring.hmain(){chars[50]=”1234567”,*p=s;inti;i=*(p+5)-*(p+2);printf(“%d\n”,i*strlen(s));}(A)21(B)24(C)14(D)2834.以下程序运行结果是D。main(){inta[]={1,2,3,4,5,6,7,8,9},i,j,k;for(i=0,j=8;ij;i++,j--){k=a[i];a[i]=a[j];a[j]=k;}printf(“%d\n”,a[1]+a[5]);}(A)11(B)12(C)13(D)1435.以下程序运行结果是C。main(){intx[]={1,2,3},s,*p=x,i;for(i=0,s=1;i3;i++,p++)s*=*p;printf(“%d\n”,s);}(A)2(B)4(C)6(D)8三阅读填空(每小空2分,共20分)1.计算球的体积。main(){floatr,v;scanf(“%f”,&r);v=4*3.14*r*r*r/3;printf(“v=%6.2f\n”,v);}2.判断质数。#includemath.hmain(){inti,flag=1,n;scanf(“%d”,&n);for(i=2;i=sqrt(n);i++)if(n%i==0){flag=0;break;}if(found==1)printf(“%d是质数\n”,n);elseprintf(“%d不是质数\n”,n);}3.计算数组中元素的平均值。main(){floataverage(inta[]);inta[10],i;floataver;for(i=0;i10;i++)scanf(“%d”,&a[i]);aver=average(a);printf(“averageis%6.2f”,aver);}floataverage(inta[]){intsum=0,i;floataver;for(i=0;i10;i++)sum=sum+a[i];aver=sum/10;returnaver;}4.统计字符串中字母的个数。main(){chars[50];inti,j=0;scanf(“%s”,s);for(i=0;s[i]!=’\0’;i++)if(s[i]=’A’&&s[i]=’Z’||s[i]=’a’&&s[i]=’z’)j++;printf(“j=%d\n”,j);}