评析:美国国家标准化协会ANSI规定了一些常用的流程图符号,其中椭圆框表示起止框,方框表示处理框,菱形框表示判断分支,箭头表示流程线。
(13)C语言中下列叙述正确的是________。 A)不能使用do…while语句构成的循环
B)do…while语句构成的循环,必须用break语句才能退出
C)do…while语句构成的循环,当while语句中的表达式值为非零时结束循环 D)do…while语句构成的循环,当while语句中的表达式值为零时结束循环 答案:D
评析:选项A是错误的,c语言支持d0…while语句;选项B是错误的,do...while构成的循环,当while语句中的表达式值为零时结束循环,而不是非零;选项c也是错误的。
(14)以下选项中属于C语言的数据类型是________。 A)复数型 B)逻辑型 C)双精度型 D)集合型 答案:C
评析:c语言的数据类型分为基本类型、构造类型、指针类型、空类型四大类。其中,基本类型分为整型、字符型、实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。
(15)在C语言中,不正确的int类型的常数是________。 A)32768 B)0 C)037 D)0xAF 答案:A
评析:c语言中int类型的常数的范围是:-32768~32767。c整常数可用三种形式表示:十进制整数,八进制整数,十六进制整数。选项A超出范围,不正确。
(16)以下程序输出的结果是________。 main() {
int a=65535;
printf(“%d%u”,a,a); }
A)-1 -1 B)6553565535 C)-1 65535 D)65535 –l 答案:C
评析:printf函数中不同类型的数据用不同的格式字符,其中%d是按整型数据的实际长度输出十进制整数。变量a=65535以%d格式输出时溢出输出值为该数的补码值,即.1;%u用来输出unsigned型数据,无符号整型变量的数值范围为0~65535,所以变量a=65535以%u格式输出的值为65535。
(17)下列描述中不正确的是________。 A)字符型数组中可以存放字符串
B)可以对字符型数组进行整体输入、输出 C)可以对整型数组进行整体输入、输出
D)不能在赋值语句中通过赋值运算符”=”对字符型数组进行整体赋值 答案:C
评析:c语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将整个字符串一次输入或输出。所以,选项c的说法是不正确的。
(18)以下程序的输出结果是________。 main()
{ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(I=0;i<4;i+=2)printf(”%d”,p[I]); }
A)5 2 B)5 l C)5 3 D)9 7 答案:C
评析:题中*p=&x[1][1];是指将数组x的数组元素x[1][1]的地址赋值给指针变量p,使p指向x[11[1]这个数组元素,那么p[0]即为指针变量p当前所指向的数组元素x[1][1]的值。
(19)下列可用于C语言标识符的一组是________。 A)voidWORDdefine B)a 6$sysFor C)2asizeof abc D)Int define sizeof 答案:D
评析:c语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。注意,大写字母和小写字母被认为是两个不同的字符。C语言中的关键字不能用作标识符。
(20)以下程序的运行结果是__________。 #include “stdio.H” main() {
int a[]={1,2,3,4,5,6,7,8,9,10,1 1,12}; int*p=a+5,*q=NULL; *q=*(p十5);
printf(”%d %d、n”,‘p,*q); }
A)运行后报错 B)6 6 C)6 12 D)5 5 答案:A
评析:题目中没有给q分配存储单元,只是简单的给它赋了一个值,所以程序的运行结果是6 ll NULL pointer assignment,也就是运行后报错。
(21)以下说法中正确的是_________。 A)C语言程序总是从第一个函数开始执行
B)在C语言程序中,要调用函数必须在main()函数中定义 C)c语言程序总是从main()函数开始执行
D)c语言程序中的main()函数必须放在程序的开始部分 答案:C
评析:c语言的程序是由主函数main()开始运行,由主函数来调用其他函数,函数必须是并列的,定义后使用,不能在一个函数中定义其他函数,main()函数不一定要放在程序的开始部分,故选c。
(22)有如下程序
float fun(int x,int y){return(x+y);} main() {
int a=2,b=5,c=8;
printf(”%3.0f\\n”,fun((int)fun(a+c,b),(a-C))); }
程序运行后的输出结果为__________。
A)编译出错 B)9 C)21 D)9.0
答案:B
评析:本题中先执行(int)fun(a+c,b)函数的调用,值为整型数值15;然后再执行fun(15,(a-e))函数调用,值为单精度实型数值9.000000。输出为%3.0f,即有效数长度为3,没有小数位数,所以最后结果为9。
(23)能正确表示a和b同时为正或同时为负的逻辑表达式是_________。 A)(a>=‖b>=0)&&(a
评析:选项A中,表达式表示的是a,b为异号;选项B中,表达式表示的是0,因为没有满足条件的值;选项c中,表达式表示的是0,因为没有满足条件的值;选项D表示的是a和b为同号。
(24)若己定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[l]地址的
表达式是__________。
A)p+l B)a+l C)a++ D)++p 答案:C
评析:数组名是指针常量,是个固定的指针,不能对数组名赋予一个新的地址值,也不能使这个指针常量“移动”,指向数组的其它元素。
(25)以下程序的输出结果是__________。 main()
{ int a==-1,b=1,k; if((++a<0)&&!(b–<=0))
printf(”%d %d\\n”,a,b);