C语言笔试题带答案

switch(ch)

{

case’a’:

case ‘h’:

default:v1++;

case’0’:v2++:

}

printf(”%d,%d\n”,v1,v2);

}

A)2,0 B)5,0 C)5,5 D)2,5

答案:C

评析:执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。

(35)请选出可用作c语言用户标识符的一组标识符__________。

A)void B)a3.b3 C)For D)2a

define -123 -abc DO

WORD IF case sizeof

答案:B

评析:c语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。选项A中的void是c语言的关键字,不合法;选项c中的case和c语言的关键字重名,不合法;选项D中的2a是数字打头而且sizeof和c语言的关键字重名,不合法。

(36)下面能正确定义数组,并正确赋值的语句是_________。

A)int N=5,b[N][N] B]int a[1][2]={{1},{3}}

C)int c[2][]={{1,2},{3,4}} D)int d[3][2]={{1,2},{34}}

答案:D

评析:可以用下面的方法对二维数组初始化:

l、分行给二维数组赋初值。如int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

2、可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。如:

int a[3][4]={1,2,3,4,5,6,7,8;9,10,1 l,12);

3、可以对部分元素赋初值:int a[3][4]={{1},{5},{9}};

它的作用是只对各行第一列的元素赋初值,其余元素值自动为0。

4、如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

与下面的定义等价:int a[][4]={1,2,3,4,5,6,7,8,9,10,1l,12};

(37)请选出以下程序的输出结果___________。

#include

sub(int*s,int y)

{ static int t=3;

y=s[t];t–;

}

main()

{ int a[]={1,2,3,4},i,x=0;

for(i=0;i<4;i++){

sub(a,x);printf(”%d”,x);)

printf(”\n”);

}

A)1234 B)432l C)0000 D)4444

答案:C

评析:x作为函数sub()的实参时,函数对x值的改变没有返回主函数,并不能使得x的值变化,所以在打印时,x的值是始终不变的,即为0。

(38)假定下面程序可执行文件名prg.exe,则该程序所在的子目录下输入命令行:prg hello

good<回车>后,程序的输出结果是_________。

main(int argc,char*argv[])

{

int i;

for=1;i

}

A)heUo good B)hg C)hel D)hellogood

答案:B

评析:带参数的main()函数常用形式为:main(int argc,char.*argv[]),其中,整型变量argc用来记录命令行中的参数个数。参数的个数由c程序运行时自动计算出来。字符型指针数组argv的第一个元素存放命令名,其后各个元素依次存放命令行中各个参数的首地址,数组的大小由argc确定。for循环语句实现输出各参数的第一个字母。

(39)若有以下说明和语句,请选出哪个是对c数组元素的正确引用_________。

int c[4][5],(*cp)[5];

cp=c;

A)cp+l B)*(cp+3) C)*(cp+1)+3 D)*(*cp+2)

答案:D

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4