错题集

1.有以下程序
#include
main()
{
int x;
scanf("%d",&x);
if(x<=3); else
if(x!=10) printf("%d\n",x);
}
程序运行时,输入的值在哪个范围才会有输出结果( )

A: 大于3且不等于10的整数
B: 小于3的整数
C: 不等于10的整数
D: 大于3或等于10的整数
标准答案:A 您的答案:D

!=是不等于的意思

2.设int x,a,b;则下面if语句中错误的是( )

A: if(a=b) x++;
B: if(a= C: if(a-b) x++;
D: if(x) x++;
标准答案:B 您的答案:C

B少了)

3.以下程序输出结果是( )
main( )
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch(y)
{
case 0 :a++;break;
case 1 :b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;
}
printf(“a=%d,b=%d”,a,b);
}
A: a=1,b=0
B: a=2,b=1
C: a=1,b=1
D: a=2,b=2
标准答案:B 您的答案:A

x=1进入第二个switch进行再次判断y=0所以a++

4.已知 int x=10, y=20, z=30; 以下语句执行后x, y, z的值是( )。
if(x>y)
z=x;x=y;y=z;

A: x=10,y=20,z=30 
B: x=20,y=30,z=30
C: x=20,y=30,z=10 
D: x=20,y=30,z=20
标准答案:B 您的答案:A

if判断语句后面没有{}所以只有z=x在循环中 所以要进行x=y,y=z的赋值判断

5.设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为( )

A: 1
B: 2
C: 3
D: 4
标准答案:B 您的答案:C

有&&的语句中只会执行前一个语句

6.下列表达式中,不满足“当x的值为偶数时值为真,为奇数时值为假”要求的是( )

A: x%2==0
B: !x%2!=0
C: (x/2*2-x)==0
D: !(x%2)
标准答案:B 您的答案:A

!的优先级要高于!=,!x的值为0,0%2=0,所以B错误

7.语句:printf(“%d”,(a=2)&&(b= -2));的输出结果是( )。

A: 无输出
B: 结果不确定
C: -1
D: 1
标准答案:D 您的答案:B

语句没有错误所以值为1

8.若有说明语句int i=5,j=4,k=6;float f;则执行f=(i

A: 4.0
B: 5.0
C: 6.0
D: 7.0
标准答案:A 您的答案:B

因为i=5>j=4 所以执行(j

9.若希望当A的值为奇数时,表达式的值为”真”,A的值为偶数时,表达式的值为”假”,则以下不能满足要求的表达式是( )。

A: A%21 
B: !(A%2
0)
C: !(A%2)
D: A%2
标准答案:C 您的答案:A

C选项的答案可以是0,1 不确定

10.语句int(*prt)();的含义是____________。

A: prt是一个指向一维数组的指针变量
B: prt是指向int型数据的指针变量
C: prt是指向函数的指针,该函数返回一个int型数据
D: prt是一个函数名,该函数的返回值是指向int型数据的指针

标准答案:C 您的答案:D

11.以下不正确的if语句形式是( )。

A: if(x>y&&x!=y);
B: if(x==y) x+=y;
C: if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y)
D: if(x
标准答案:C 您的答案:A

判断语句后面不能接输入语句

12.若有定义:int a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1.则表达式值相等的是( )

A: ①和②
B: ②和③
C: ①和③
D: ③和④
标准答案:C 您的答案:A

因为a%b的值为1;a>b为真,值为1但是1>1为假,值为0;c+1为真,第三个语句的值也为1

13.逻辑运算符两侧运算对象的数据类型是( )。

A: 只能是0或1
B: 只能是0或非0正数
C: 只能是整型或字符型数据
D: 可以是任何类型的数据
标准答案:D 您的答案:C

概念理解错误

14.以下正确的定义语句和赋值语句是_________。

A: int b[3][5],(*p)[3],(*q)[5];p=b;q=b;
B: float b[3][5],*p[3];p[0]=b[0];p[2]=*b+4;
C: double b[3][5],s[5][3],*q;q=b;s=q;
D: int b[10],*q;char *s;q=b;s=b;
标准答案:B 您的答案:A

**(p)[3]和(q)[5]是指针变量,b是数组名,所以不能进行赋值

15.若有以下定义,则赋值正确的是( )。
int a ,b , *p;
float c, *q;

A: p=&c
B: q=p
C: p=NULL
D: q=new int
标准答案:C 您的答案:B

B:p是int型的指针q是float型的指针,所以不能直接赋值 C:让指针p指向空

16.若有以下定义和语句,则对a数组元素地址的正确引用为________________。
int a[2][3], (*p)[3];
p=a;

A: *(p+2)
B: p[2]
C: *(p[1]+1)
D: (p+1)+2
标准答案:C 您的答案:B

*(p)[3]是指针变量,表示指向含有3个整型元素的一维数组;B:p[2]指的是值,不是地址;C:加了 * 指的才是地址

17.设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a,*p=a[0];
则下列能够正确表达数组元素a[1][2]的表达式是( )。
A: *((*prt+1))
B: *( * (p+5))
C: (*prt+1)+2
D: ((a+1)+2)
标准答案:D 您的答案:B


18.若有说明语句
char a[]=“It is mine”; char *p=" It is mine";
则以下不正确的叙述是___________。

A: a+1表示的是字符t的地址
B: p指向另外的字符串时,字符串的长度不受限制
C: p变量中存放的地址值可以改变
D: a中只能存放10个字符
标准答案:D 您的答案:A

char a[]=“It is mine”;这句语句中mine后面还有个\0也算一个字符,所以a中有11个字符

19.下面判断正确的是____________。

A: char *a=“china”;等价于char *a; a=“china”;
B: char str[10]={“china”};等价于char str[10];str[]={“china”};
C: char *s=”china”;等价于char *s; *s=”china”;
D: char c[4]=”abc”,d[4]=”abc”;等价于char c[4]=d[4]=”abc”;
标准答案:A 您的答案:B

对字符型数组赋值,只能对各个元素赋值

20.已有定义int k=2,*ptrl,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )

A: k=*ptr1+*ptr2
B: ptr2=k
C: ptr1=ptr2
D: k= * ptr1 * (*ptr2)
标准答案:B 您的答案:D

ptr2是一个指针变量,k是int整型变量,不能够直接赋值,除非强转:ptr2=(int * )k;

21.若有说明:int*p1,*p2,m=5,n;以下程序段正确的是( )

A: p1=&m;p2=&p1
B: p1=&n;scanf("%d",*p1)
C: scanf("%d",n); *p1=n
D: p1=&n; *p1=m
标准答案:D 您的答案:B

B:中*p代表的是一个值,而scanf语句中要是一个地址

22.下面程序段中,for循环的执行次数是( )。
char *s=”\ta\018bc” ;
for( ;*s!=’ \0 ’ ; s++) printf(“ * ”);

A: 9
B: 5
C: 6
D: 7
标准答案:C 您的答案:A

\后面加一串数字只表示一个字符

23.在下列叙述中,正确的一条是( )。

A: 以下语句是正确的:char c[]=“ab”;
B: 一维数组的定义可采用下列格式:int a(10);
C: 下面的语句定义了一个二维数组:float a[3,4];
D: 以下两个语句中的a[3][4]的含义相同:int a[3][4]; a[3][4]=1;

标准答案:A 您的答案:D

给指针赋值是要用{},所以D选项错误

24.若fp是指向某文件的指针,且没读到此文件末尾,则库函数feof(fp)的返回值是( )。
A: EOF
B: 0
C: 非零值
D: -1

若fp已指向文件末,则feof(fp)函数值为“真”,即返回非零值;否则返回0

25.若有以下定义,则不能表示a数组元素的表达式是______。
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

A: *p
B: a[10]
C: *a
D: a[p-a]

标准答案:B 您的答案:A

a[10]表示的是一个数组,不是一个数组的元素

你可能感兴趣的:(错题集)