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