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

内容发布更新时间 : 2024/12/23 23:18:19星期一 下面是文章的全部内容请认真阅读。

答案:A

评析:本题程序的功能是求1到_99之问(包括1和99)所有奇数之和。程序中的while循环的终止条件为++i=100,在while循环体内,如果i是偶数,则执行continue,跳过这一次循环,执行下一次循环,否则求和。最后输出的值是1到99之间(包括l和99)所有奇数之和(1+99)*50/2=2500。

(20)下列程序的输出结果是_________。

main()

{ int I=3;

switch(i)

{ case 1:

case 2:printf(”%d”,i);

case 3:

case 4:break;

default:printf(”OK”);

}

}

A)0 B)3 C)OK D)没有任何输出

答案:D

评析:在题中,i的值为3,由于“case 3:”后面没有break语句,所以继续向下执行“case 4:”后面的语句,由于“case 4:”后面的语句为break强行退出switch语句,所以,本题没有任何输出。

(21)下列程序执行后的输出结果是________。

main()

{ int m[][3]={1,4,7,2,5,8,3,6,9};

int i,k=2:

for(I=0;i<3;i++)

{printf(”%d”,m[k][i]);}

}

A)456 B)258 C)369 D)789

答案:C

评析:根据二维数组的定义得出:m[O][O]=1,m[O][1]=4,m[O][2]=7,m[1][0]=2,rail][1]=5,m[1][2]=8,m[2][0]=3,m[2][l]=6,m[2][2]=9,所以本题的输出是第3行的值m[2][0],m[2][1],m[2][2],即369。

(22)设已定义洱口k为int类型变量,则以下for循环语句_________。

for(i=0;k=-1,k=1;i++,k++)

printf(”****\n”);

A)判断循环结束的条件不合法 B)是无限循环

C)循环一次也不执行 D)循环只执行一次

答案:B

评析:本题定义了一个for循环,循环变量是i,但由于本题并没有设置循环条件,所以循环的条件永远默认为真,即无限次执行循环。

(23)下面程序的输出结果是___________。

unsigned fun(unsigned num)

{ unsigned k=1;

do{

k*=num%lO;

num/=lO;

}while(num);

return(k);

}

main()

{ unsigned n。26;

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

}

A)0 B)4 C)12 D)无限次循环

答案:C

评析:本题定义了一个fun函数,用于num求和,具体执行过程如下:

num=26:k=k*(num%10)=1*(26%10),所以k=6,num=num/10=2;

num=2:k=k*(num%10)=6*(2%10),所以k=12,num=num/lO=O;

num=O:while条件不成立,所以返回k的值12.

(24)已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序_______。

main()

{ char a=‘A’;

int b=20;

printf(“%d,%o”,(a=a+a,a+b,b),a+‘a’-‘A’,b);

}

A)表达式非法,输出零或不确定值

B)因输出项过多,无输出或输出不确定值

C)输出结果为20,141

D)输出结果为20,141,20

答案:C

评析:本题中首先输出逗号表达式“a=a+a,a+b,b”的值,即20。然后以八进制的形式输出a+‘a’-‘A’的值为97对应的八进制数141,由于最后一个表达式b没有对应输出格式的输出项表列就不会输出。