一、选择题
在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(11)以下不正确的叙述是
A)在C程序中,逗号运算符的优先级最低 三目条件运算符?:的含义
B)在C程序中,APH和aph是两个不同的变量
C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
(11)D 【解析】 在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。
(12)请选出可用作C语言用户标识符的是
A)void,define,WORD B)a3_b3,_123,IF
C)FOR,--abc,Case D)2a,Do,Sizeof
(12)B 【解析】 C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下划线,可见选项C),D)是错误的;此外,C语言不允许用户将关键字作为标识符,而选项A)中的void正是C语言的关键字。
(13)以下选项中,不能作为合法常量的是
A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0
(13)B 【解析】 C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。
(14)在C语言中,运算对象必须是整型数的运算符是
A)% B)\ C)%和\ D)**
(14)A 【解析】 在C语言中,"%"运算符两侧的运算数必须是整型。
(15)若变量均已正确定义并赋值,以下合法的C语言赋值语句是
A)x=y==5; B)x=n%2.5;
C)x+n=i; D)x=5=4+1;
(15)A 【解析】 赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项C)和D)错误。"%"运算符两侧都应当是整型数据,选项B)错误。
(16)有以下程序段
char ch; int k;
ch=′a′; k=12;
printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);
已知字符a的ASCII码值为97,则执行上述程序段后输出结果是
A)因变量类型与格式描述符的类型不匹配输出无定值
B)输出项与格式描述符个数不符,输出为零值或不定值
C)a,97,12k=12 D)a,97,k=12
(16)D 【解析】 输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。
(17)已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是
A)kk>=′A′&& ′Z′ B)!(kk>=′A′||kk<=′Z′)
C)(kk+32)>=′a′&&(kk+32)<=′Z′ D)isalpha(kk)&&(kk<91)
(17)B 【解析】 C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个
字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。
(18)当变量c的值不为2、4、6时,值也为"真"的表达式是
A)(c==2)||(c==4)||(c==6) B)(c>=2&& c<=6)||(c!=3)||(c!=5)
C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&& c<=6)&&(c%2!=1)
(18)B 【解析】 满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,表达式B)都为"真"。
(19)若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是 A)(exp==0) B)(exp!=0) C)(exp==1) D)(exp!=1)
(19)B 【解析】 条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3其求解顺序是:先求解表达
式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值,注意++、--的用法。
(20)以下不正确的定义语句是
A)double x[5]={2.0,4.0,6.0,8.0,10.0};
B)int y[5]={0,1,3,5,7,9};
C)char c1[]={′1′,′2′,′3′,′4′,′5′};
D)char c2[]={′\x10′, ′xa′, ′\x8′};
(20)B 【解析】 在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。
(21)下列程序执行后的输出结果是
main()
{ int a[3][3], *p,i;
p=&a[0][0];
for(i=1; i<9; i++)p[i]=i+1;
printf("%d\n",a[1][2];)
A)3 B)6 C)9 D)随机数
(21)B 【解析】 本题中,a[1][2]是二维数组中的第6个元素,对应for循环中i的值为5,p[5]=5+1。
(22)设有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
则
A)运行程序段后输出0 B)运行程序段后输出1
C)程序段中的控制表达式是非法的 D)程序段执行无限次
(22)B 【解析】 本题中,"!"表示逻辑非运算符,"!="表示不等于运算符,逻辑非运算符比不等于运算符的优先级高。
(23)下面程序段的运行结果是
char *s="abcde";
s+=2;printf("%d",s);
A)cde B)字符′c′ C)字符′c′的地址 D)无确定的输出结果
(23)C 【解析】 对于字符串指针,其保留的是整个串的首地址,即第一个字符的起始地址;当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。
(24)阅读下列程序,则执行后的结果为
#include "stdio.h"
main()
{ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
A)3e,6 B)62,5 C)56,5 D)3E,6
(24)A 【解析】 数组c[][4]表示一个4行4列数组,c[2][2]表示第3行第3列上的元素62,*(*(c+1)+1))表示第2行第2列上的元素6,通过十六进制输出为3e,6。
(25)下面判断正确的是
A)char *a="china";等价于 char *a;*a="china";
B)char str[5]={"china"};等价于char str[]={"china"};
C)char *s="china";等价于 char *s;s="china";
D)char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc";
(25)C 【解析】 选项A)char *a;*a="china"应改为 a=china ;,选项B)应该是char str[6];D)项表述方法有错误。
(26)若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是
A)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][!1]
(26)D 【解析】 C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a[0][0]。
(27)有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是
A)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]);
(27)D 【解析】 在格式输入中,要求给出的是变易的地址,而D)答案中给出的s[1]是一个值的表达式。
(28)有以下程序
#include <stdio.h>
#define N 5
#define M N+1
#define f(x) (x*M)
main()
{ int i1,i2;
i1=f(2);
i2=f(1+1);
printf("%d %d\n",i1,i2);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论