C语言笔试题带答案 下载本文

(29)请读程序:

#include

main()

{

int a=5,b=7,c=9;

printf(”%d,%d,”,a,b,C);

printf(”%d,%d,%d,”a,b);

}

上面程序的输出结果是________。

A)5,7,9,5,7 B)5,7,5,7 C)5,7,不定,7,9 D)5,7,5,7,不定

答案:D

评析:printf函数按格式控制符的个数输出表列中对应的数据,若输出表列的个数大于格式控制符个数,则输出与格式控制符对应的输出表列的数据,输出表列中多的则省略;若格式控制符个数大于输出表列的个数,则输出与格式控制符对应的输出表列的数据,格式控制符多的部分输出的数据是随机的。

(30)请读程序:

#incIude

func(int a,int b){

Int C;

c=a+b:

return C:

}

main(){

int x=6,y=7,z=8,r;

r=func((x–,y++,x+y),z–);

printf(”%d\\n”,r);

}

上面程序的输出结果是________。

A)ll B)20 C)2l D)31

答案:C

评析:函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的和,其中(x–,y++,x+y)是一个逗号表达式,它的值应该等于x+y,所以整个表达式(x–,y++,x+y)的值为13,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所以func()的返回值为13+8=21。

(31)请读程序:

#include

main()

{

int a,b;

for(a=l,b=1;a<=100;a十+){

if(b>=20)break;

if(b%3==1){b+=3;continue;}

b-=5:

}

printf(”%d\\n”,a);

}

上面程序的输出结果是_________。

A)7 B)8 C)9 D)10

答案:B

评析:break语句的作用是用于跳出循环体; continue语句的作用是用于跳出本次循环。执行第一次循环时,(b%3==1)为真,b=4,继续下一次循环,如此反复,当b=22时结束循环,共循环8次,即a=8。

(32)设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是__________。

A)X=X*100+0.5/100.0 B)x=(X*100+0.5)/100

C)x=(int)(x*100+0.5)/100.0 D)x=(x/100+0.5)*100.0

答案:C

评析:本题通过算术表达式的运算实现小数位数保留两位并四舍五入的操作,其中(int)(x*100+0.5)是指将(x*100+0.5)的值强制转换成整型。

(33)请读程序片段(字符串内没有空格字符):

printf(”%d\\n”,strlen(”ATS\n012\1\\\”));

上面程序片段的输出结果是____________。

A)ll B)10 C)9 D)8

答案:C

评析:这个语句的目的是输出“ATS\n012\1\\”这个串的长度,在串中“\\\”代表一个“\”,而“\1”代表数字1,也占一个字符,“\n”是回车换行符,也占一个字符,加上A、T、s、0、l、2,共9个字符。

(34)运行以下程序后,如果从键盘上输入china撑<回车>,则输出结果为_________。

#include

main()

{

int v1=0,v2=0;char ch:

while((ch=getchar())!=’#’)