评析:本题通过算术表达式的运算实现小数位数保留两位并四舍五入的操作,其中(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
int v1=0,v2=0;char ch: while((ch=getchar())!=’#’) 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
{ 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 评析:cp=c这个语句是将数组第0行的地址赋给了cp。cp+1使指针指向二维数组c的第一行;+(cp+3)是数组c的第三行的第0列的地址值;+(cp+1)+3是数组c的第一行第三列的地址值。 (40)下列选项中不能正确定义结构体的是_________。 A)typede fstruct B)struct color c1 { int red; { int red; int green; int green; int blue; int blue; }cOLOR; }; COLOR cl; C)struct color D)struct { int red; { int red; int green; int green; int blue; int blue; }cl; }cl; 答案:B 评析:将一个变量定义为标准类型与定义为结构体类型不同之处在于:后者不仅要求指定变量为结构体类型,而且要求指定为某一特定的结构体类型(例如,struct color),不能只指定结构体名。其中可以不出现结构体名,答案D就是缺省结构体名的情况。而变量名列表必须放在成员列表后面,所以B答案不能正确将c1定义为结构体变量。 (41)设有以下语句 char a=3,b=6,c; c=a^b<<2: 则c的二进制值是_________。 A)00011011 B)00010100 C)00011100 D)00011000