1. 能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是 (C)
A.(x >= 1) && (x <= 10)&& (x >= 200) && (x <= 210)
B. (x >= 1) || (x <= 10) || (x >= 200) || (x <= 210)
C. (x >= 1) && (x <= 10) || (x >= 200) && (x<= 210)
D.(x >= 1) || (x <= 10) && (x >== 200) || (x <= 210)
2.若有以下定义:
int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[3]=x;
则能够正确表示数组元素x[1][2]的表达式是 (D)
A.*((*p+1)[2)
B.(*p+1)+2
C.*(*(p+5))
D.(*(p+1)+2)
3. 以下选项中,合法的一组C语言数值常量是 (D)
A. 0x8A 10,000 3.e5
B.177 4e1.5 0abc
C.028 .5e-3 -0xf
D.12. 0Xa23 4.5e0
答案:4.5e0是4.5乘以10的0次方,就是浮点数4.5。3.e5这个是不对的,正确的表示方法是3e5 3E5 3.0e5。指数形式的格式由两部分组成:十进制小数形式或十进制整型常量部分和指数部分。其中指数部分是在 e 或 E(相当于数学中幂底数 10)后跟整数阶码(即可带符号的整数指 数)。
0xa23才是十六进制的数值常量,转换为十进制为10*16*16+2*16+3*1=2595.
0开头是八进制,所以028不对,八进制是0~7,没有8
4.以下程序
#include “stdio.h”
main()
{
int a, b, d = 241;
a = d / 100 % 9;
b = (-1) && (-1);
printf(“%d, %d”, a, b);
}
其运行结果是 (B)
A.6, 1
B.2, 1
C.6, 0
D.2, 0
5.下面程序的功能是计算1至10之间的奇数之和及偶数之和。
#include “stdio.h”
main()
{
int a, b, c, i;
a = c = 0;
for( i = 0; i <= 10; i += 2 )
{
a += i;
【1】;
c += b;
}
printf(“偶数之和=%d\n”, a);
printf(“奇数之和=%d\n”, c-11);
}
则【1】中的内容应为 (B)
A.b = i--
B.b = i+1
C.b = i++
D.b = i-1
6. 以下选项中可用作C程序合法实数的是 (D)
A.E9
B.9.12E
C.3.0e1.2
D.1.00E-01
7. 若有说明:int a [ 3 ][4 ]={0};则下面正确的叙述是 (D)
A.只有元素a[0][0]可得到初值。
B.此说明语句不正确
C.数组a 中各元素都可得到初值,但其值不一定为0
D.数组a 中每个元素均可得到初值0
8.对两个静态变量k1,k2进行初始化:
static chark1="A";
static char k2='A';
则下列叙述正确的是 (A)
A.上述语句有错误
B.K1=K2='A'
C.K1是字符串,K2是字符
D.K1是字符,K2是字符串
9.char a = ‘\70’;则变量a中 (A)
A.包含1个字符
B.包含2个字符
C.包含3个字符
D.说明不合法
10. 下面四个选项中,均是非法常量的选项是 (A)
A.‘as’ -0fff ‘\0xa’
B.‘\\’ ‘\01’ 12,456
C.-0x18 01177 0xf
D.0xabc ‘\0’ “a”
11.设 charc1='a',c2='A';则表达式 c1==c2+32?c1:(c1=c2+32)的值为 (C)
A.1
B.0
C.'a'
D. 'A‘
12.请读程序:
# define LETTER 0
main ( )
{ char str〔 20 〕=”C Language”,c ;
int i ;
i=0 ;
while ( ( c = str 〔 i 〕)!=”\n”)
{ i + + ;
# if LETTER
if ( c > = ‘a’&&<= ‘z’)
c = c-32 ;
# else
if ( c > = ‘A’&&c< = ‘ Z ’ )
c = c+32 ;
# endif
printf ( “ % c ” , c ) ;
}
上面程序的运行结果是 (B)
A.C Language
B.c language
C.C LANGUAGE
D.c IANGUAGE
13.若有以下定义,
int x[10]={0,1,2,3,4,5,6,7,8,9),*pl;
则数值不为3 的表达式 (C)
A.x[3]
B.pl=x+3,*pl++
C.pl=x+2,*(pl++)
D.pl=x+2,*++pl
14.若有以下定义,
int a[5],*p=a;
则对a 数组元素的正确引用是 (D)
A.p+5
B.*a+1
C.&a+1
D.&a[0]
15.假设所有变量均为整形,则表达式(a = 2, b = 5, b++, a + b)的值是 (B)
A.7
B.8
C.6
D.2
16.设有定义:int x=2;,以下表达式中,值不为6的是 (D)
A.x*=(1+x)
B.x*=x+1
C."x++,2*x"
D."2*x,x+=2"
17. 以下可作为函数fopen 中第一个参数的正确格式是 (D)
A.c: user \ t ext . txt
B.c: \ u Ser \ t ext . txt
C.“c : \user\text.txt”
D. “c:\\user \\text . txt "
18. char p;
char buf[10] = {1, 2, 3, 4, 5, 6, 9, 8};
p = (buf + 1)[5];
printf("%d\n,p);
以上代码输出结果为 (B)
A.6
B.9
C.8
D.编译出错
19.设有以下语句:
char x = 3 , y = 6 , z ;
z =x ^ y << 2 ;
则z 的二进制值是 (B)
A.10100
B.11011
C.11100
D.11000
20.若有以下定义和赋值语句,
int s[2][3]={0},(*p)[3];
p=s;
则对s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为 (A)
A.*(*(p+i)+j)
B.*(p[i]+j)
C.(p+i)+j
D.(*(p+i)){j}