C语言程序设计试题及答案(九)学号:学习中心名称:专业:层次:姓名:题号一二三四五六七八九十总分得分注意:所有答案都要写在答题卡上一、单项选择题(20分,每题2分)1.执行下列程序段后,正确的结果是(B)intk,a[3][3]={1,2,3,4,5,6,7,8,9};for(k=0;k3;k++)printf(“%2d”,a[k][k]);A)123B)159C)147D)3692.若a是int类型变量,则计算表达式a=25/3%3的值是:(B)A)3B)2C)1D)03.下面正确的字符常量是:(C)A)“c”B)‘\\’’C)‘W’D)‘’4.C语言中,运算对象必须是整型的运算符是:(B)A)%B)/C)*D)+5.数字字符0的ASCII值为48,若有以下程序main(){chara='1',b='2';printf(%c,,b++);printf(%d\n,b-a);}程序运行后的输出结果是。(B)A)3,2B)50,2C)2,2D)2,506.以下语句或语句组中,能正确进行字符串赋值的是。(D)A)char*sp;*sp=right!;B)chars[10];s=right!;C)chars[10];*s=right!;D)char*sp=right!;7.for(i=0;i10;i++)if(i〈=5〉break;则循环结束后i的值为(B)A)0B)1C)5D)108.执行下列程序段后,正确的结果是(C)charx[8]={8,7,6,5,0,0},*s;s=x+1;printf(“%d\n”,s[2]);A)nB)0C)5D)69.C语言规定,简单变量作为实参时,他和对应形参之间的数据传递方式是:AA)单向值传递B)地址传递C)相互传递D)由用户指定方式10.设有数组定义:charstr[]=”China”;则下面的输出为(C)printf(“%d”,strlen(str));A)4B)5C)6D)7二、填空题(30分,每空2分)1.下列程序段的输出结果是3。inti=19,j;j=i%4;printf(“%d”,j);2.已知fun1函数的功能是将三个数按由大到小的顺序调整后依次放入a,b,c三个变量中,其中a存放最大的数,利用fun2函数填空完成此功能。voidfun2(int*x,int*y){intt;t=*x;*x=*y;*y=t;}voidfun1(){inta=20,b=30,c=25;if(cb)fun2(__&c,&b____);if(ac)fun2(__&a,&c____);if(ab)fun2(__&a,&b____);}3.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33回车,则输出结果是1B。#includestdio.hmain(){chara,b;a=getchar();scanf(%d,&b);a=a-'A'+'0';b=b*2;printf(%c%c\n,a,b);}4.以下程序运行后的输出结果是435。main(){inta=3,b=4,c=5,t=99;if(ba&&ac){t=a;a=c;c=t;}if(ac&&bc){t=b;b=a;a=t;}printf(%d%d%d\n,a,b,c);}5.若已知a=10,b=20,则表达式!ab的值是___0______6.若s是unsignedint型变量,则下面表达式的值是__1__。s%2+(s+1)%27.下面程序将字符数组a复制到字符数组b中。main(){chara[]=Iamaboy.,b[20];inti;for(i=___0____;a[i]!='\0';i++){__b[i]=a[i]___________;}__b[i]=’\0’__;}8.若有inta[3][2]={{1},{3,2},{4,5}};,则a[1][1]的值是2。9.有以下程序,执行后输出结果是0。main(){intt=1,i=5;for(;i=0;i--)t*=i;printf(%d\n,t);}10.在循环语句中,break语句的作用是是用来跳出当前一层循环的,continue语句的作用是终止本次循环。三、写出程序的运行结果(30分,每题10分)1.写出程序运行后的输出结果main(){inta=1,b;for(b=1;b=10;b++){if(a=8)break;if(a%2==1){a+=5;continue;}a-=3;}printf(%d\n,b);}输出结果:b=42.写出程序运行后的输出结果#includestring.hchar*ss(char*s){returns+strlen(s)/2;}main(){char*p,*str=abcdefgh;p=ss(str);printf(%s\n,p);}输出结果:efgh3.写出程序运行后的输出结果intf1(intx,inty){returnxy?x:y;}intf2(intx,inty){returnxy?y:x;}main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf(%d,%d,%d\n,e,f,g);}4,3,7四、编程(完形填空)(20分,每题10分)1.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。#includestdio.h#includestring.hchar*huiwen(char*str){char*p1,*p2;inti,t=0;p1=str;p2=_____str+strlen(str)-1____;str+strlen(str)for(i=0;i=strlen(str)/2;i++)if(*p1++!=*p2--){t=1;break;}if(_t==0或!t_)t==0return(yes!);elsereturn(no!);}main(){charstr[50];printf(Input:);scanf(%s,str);printf(%s\n,___huiwen(str)_____);huiwen(srt)}2.下面程序完成以下功能:(1)trans()函数将二维数组a进行转置,即行列互换,如下图所示;1234125724692481589736967162149721转置前转置后(2)findmin()函数求新数组中对角线(左上到右下)上的最小元素的值;请将程序填写完整。voidtrans(intb[4][4])/*转置函数*/{inti,j,temp;for(i=0;i4;i++)for(j=_0__;j4;j++){temp=b[i][j];b[i][j]=b[j][i];b[j][i]=temp;}}intfindmin(intb[4][4])/*求对角线上最小的元素*/{intmin,i,j;min=_______;for(i=0;i4;i++){if(__b[i][i]min___)min=_b[i][i]____;}returnmin;}main(){inti,j;inta[4][4],min;for(i=0;i4;i++)for(j=0;j4;j++)scanf(%d,&a[i][j]);trans(a);printf(“theresultis:”);for(i=0;i4;i++){for(j=0;j4;j++)printf(%5d,a[i][j]);printf(\n);}min=_findmin(a)__;printf(theminis%5d\n,min);}