2017年计算机二级C语言试题
知识点:带参数的宏定义
评析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参,如果宏定义中的字符串中的字符不是参数字符,则保留,这样就形成了置换的字符串。
根据以上原则,我们将实参带入已经定义的宏中,可以得出答案,最后打印出来的是“12”。
(60)以下程序段给数组所有的元素输入数据,请选择正确答案填入:
#include
main()
{
int a[10],i=0;
while(i
:
:
}
A)a+(i++) B)&a[i+l] C]a+i D]&a[++i]
(60)A
知识点:格式输入函数scanf()
评析:因为a实际上就是数组a的首地址,而a+x则是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入一个数据,选项D不能给a[0]输入数据,只有选项A可以完成给数组所有的元素输入数据的任务。
(61)字符(char)型数据在微机内存中的存储形式是________。
A)反码 B)补码
C)EBCDIC码 D)ASCII码
(61)D
知识点:字符数据在内存中的存储形式
评析:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。
(62)下面程序的输出是________。
typedef union
{ long x[2];
int y[4];
char z[8];
}MYTYPE;
MYTYPE them;
main()
{ printf("%d ",sizeof(them));}
A)32 B)16 C)8 D)24
(62)C
知识点:共用体的长度
评析:sizeof(x)是一个标准c函数,它的返回值是x型的数据结构占用的内存字节数。题目中定义了一个共用体,共用体变量在内存中所占的长度等于最长的成员的长度,所以共用体MYTYPE需要8个字节的存储空间,由它定义的变量的长度当然也是8。
(63)不能把字符串:“Hello!”赋给数组b的语句是________。
A)char b[10]={‘H’,‘e’,‘l’,‘l’,‘0’,‘!’};
B)char b[10]={‘h’,‘e’,‘l’,‘l’,‘0’,‘!’};
C)char b[10];strcpy(b,"Hello!");
D)char b[10]="Hello!";
(63)B
知识点:给数组赋值
评析:在c语言中,大写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。
(64)下面程序的输出是________。
main()
{ int x=3,y=6,a=0;
while(x++!=(y—=1))
{ a+=1;
if(y
}
printf("x:%d,y:%d,a=%d ",x,y,a);
}
A)x=4.v=4,a=1 B)x=5,y=5,a=1
C)x=5,y=4,a=3 D)x=5,y=4,a=l
(64)D
知识点:运算符
评析:注意在x++中x值的引用时,这里应当是先引用,后自加,具体执行过程如下:
第一次while循环:x=3与y=5比较,条件为真,执行a=a+1=1;此时,x的值己为4,判断y
第二次while循环:x=4与y=4比较,条件为假,此时x的值已为5,退出while循环,执行printf。
(65)下面程序的输出是_______。
main()
{char*s:"12134211";
int vl=0,v2=0,V3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{ default:V4++;
case‘1’:vl++:
case‘3’:v3++:
case‘2’:v2++:
}
printf("vl=%d,v2=%d,v3=%d,v4=%d ",vl,v2,v3,V4);
}
A)vl=4,v2=2,v3=l,v4=1 B)vl=4,V2=9,V3=3,V4=l
C)vl=5,v2=8,v3=6,v4=1 D)vl=8,V2=8,V3=8,v4=8
(65)C
知识点:switch()语句
评析:当switch后面括弧内的表达式的值与某一个case后面的常量的表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。本题中,for循环的条件是s数组的数组元素值,只要将数组的值一一代入程序逐步求解即可。
(66)下面程序的输出是_______。
main()
{int k=ll;
printf("k=%d,k=%o,k=%x ",k,k,k);
}
A)k=11.k=12,k=ll B)k=ll,k=13,k=13
C)k=ll,k=013,k=0xb D)k=ll,k=13,k=B
(66)D
知识点:格式字符
评析:在c语言格式字符的输出中,“%d”是以带符号的十进制形式输出整数,即k=ll:“%o”是以8进制无符号形式输出整数(不输出前导符0),即k=13:“%x”是以16进制无符号形式输出整数(不输出前导符0x),即k=B。
(67)以下叙述中正确的是_______。
A)c语言比其他语言高级
B)C语言可以不用编译就能被计算机识别执行
c)c语言以接近英语国家的自然语言和数学语言作为语言的表达形式