C语言错题汇总.docx

上传人:b****5 文档编号:6990952 上传时间:2023-01-15 格式:DOCX 页数:22 大小:26.03KB
下载 相关 举报
C语言错题汇总.docx_第1页
第1页 / 共22页
C语言错题汇总.docx_第2页
第2页 / 共22页
C语言错题汇总.docx_第3页
第3页 / 共22页
C语言错题汇总.docx_第4页
第4页 / 共22页
C语言错题汇总.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C语言错题汇总.docx

《C语言错题汇总.docx》由会员分享,可在线阅读,更多相关《C语言错题汇总.docx(22页珍藏版)》请在冰豆网上搜索。

C语言错题汇总.docx

C语言错题汇总

练习1

1、在下数据输出的判断中,正确的是()。

intx=0xaffbc;printf(“%x”,x);

A.赋值非法B.输出值不确定C.输出值为affbD.输出值为ffbc

2、下列语句中,最正确的赋值语句是()。

A.a=7+b+c=a+7;B.a=7+b++=a+7;C.a=7+b,b++,a+7;D.a=(7+b,c=a+7);

3、下列语句中正确的是()。

A.intx=y=z=0;B.intz=(x+y)++;C.x+=3==2;D.x%=2.5;

4、表达式a=(a=6,a*3,a+3);运行后。

则a的值为()。

A.39B.36C.6D.9

5、C语言的程序一行写不下时,可以()。

A.用逗号换行B.用分号换行C.在任意一空格处换行D.用回车符换行

6、对于条件表达式(M)?

(a++):

(a--)来说,其中的表达式M等价于()。

A.M==0B.M==1C.M!

=0D.M!

=1

7、下列程序的输出结果是()。

main()

{intx=0,y=5,z=3;

while(z-->0&&++x<5)y=y-1;

printf(“%d,%d,%d\n”,x,y,z);

}

A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,5

练习2

1、若x和y均为int型变量,则执行下面的循环后,y的值为()。

for(y=1,x=1;y<=5;y++)

{if(x>=10)break;

if(x%2==1){x+=5;continue;}

x-=3;

}

A.2B.4C.6D8

2、在下列程序中,若要求a1,a2,c1,c2的值分别为10,20,A,B,正确的数据输入是()。

main()

{inta1,a2;

charc1,c2;

scanf(“%d%d”,&a1,&a2);

scanf(“%c%c”,&c1,&c2);

}

A.1020ABB.1020ABC.1020ABD.1020AB

3、下列程序段中所表示的逻辑关系是()。

if(a

elsex=2;

1(a

A.x=B.x=C.x=D.x=

2(a>=b)2(a>=b且c≠d)2(c≠d)2(a>=b且c≠d)

4、在下列程序中,对输出结果描述正确的是()。

#include

voidmain()

{intx;

for(x=1;x<=100;x++)

if(++x%2==0)

if(++x%3==0)

if(++x%5==0)

printf(“%d,”,x);

}

A.输出31,61,91,B.输出30,60,90,C.不输出任何内容D.输出29,59,89,

5、在下列程序段中与语句k=a>b?

(b>c?

1:

0):

0功能等价的是()。

A.if((a>b)&&(b>c))k=1;B.if(a>b)||(b>c)k=1;C.if(a<=b)k=0;D.if(a>b)k=1;

elsek=0;elsek=0;elseif(b<=c)k=1;elseif(b>c)k=1;

elsek=0

6、在执行下列程序时,若输入123,则输出结果是:

a=1,b=,c=2

#include

main()

{inta,c;

charb;

scanf(“%d%c%d”,&a,&b,&c);

printf(“a=%d,b=%c,c=%d\n”,a,b,c);

}

练习3

1、若有以下程序段,则执行后,c3的值是()。

intc1=1,c2=2,c3;

c3=1.0/c2*c1;

A.0B.0.5C.1D.2

2、以下错误的转义字符是()。

A.‘\\’B.‘\’C.‘\81’D.‘\0’

3、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为()。

A.0B.1C.2D.3

4、已知chara;intb;floatc;doubled;,执行语句c=a+b+c+d;后,变量c的数据类型是()。

A.intB.charC.floatD.double

5、已知inti,a;,执行语句i=(a=2*3,a*5),a+6;后,变量i的值是()。

A.6B.12C.30D.36

6、已知inti=5;,执行语句i+=++i;后,i的值是()。

A.10B.11C.12D.A,B,C答案都不对

7、已知charc=‘A’;inti=1,j;,执行语句j=!

c&&i++;后,则i和j的值是()。

A.1,1B.1,0C.2,1D.2,0

8、已知intx=1,y=2,z;,执行语句z=x>y||x&&y;后,则z的值是()。

A.1B.2C.3D.4

9、已知intx=1,y;,则y=++x*++x的结果是()。

A.y=9B.y=6C.y=1D.表达式是错误的

10、写出下面程序的结果。

#include

voidmain()

{

charc1=‘a’,c2=‘b’,c3=‘c’,c4=‘\101’,c5=‘\116’;

printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);

printf(“\t%c%c”,c4,c5);

}

答:

运行结果如下:

aabbccabc

AN

练习4

1、设有程序段如下,则以下选项描述正确的是()。

t=0;

while(printf(“*”))

{t++;

if(t<3)break;

}

A.其中循环控制表达式与0等价B.其中循环控制表达式与‘0’等价

C.其中循环控制表达式是不合法的D.以上说法都不对

解析:

printf(“*”)的值为非零,因为printf()函数的返回值是输出字符的个数。

2、以下程序运行后输出的结果是()。

#include

voidmain()

{inta=15,b=21,m=0;

switch(a%3)

{case0:

m++;break;

case1:

m++;

switch(b%3)

{default:

m++;break;

case0:

m++;break;

}

}

printf(“%d\n”,m);

}

A.1B.2C.3D.4

3、以下程序的输出结果是()。

#include

voidmain()

{inti,j,x=0;

for(i=0;i<2;i++)

{x++;

for(j=0;j<3;j++)

{if(j%2)continue;

x++;

}

x++;

}

printf(“x=%d\n”,x);

}

A.x=4B.x=8C.x=6D.x=12

4、执行下面程序的输出语句后,a的值是20

#include

voidmain()

{inta;

printf(“%d\n”,(a=3*5,a*4,a+5));

}

5、有以下程序

#include

voidmian()

{charc;

while((c=getchar())!

=‘?

’)

putchar(--c);

}

程序运行时,若从键盘输入:

Y?

N?

<回车>,则输出结果为X。

6、以下程序的输出结果是8。

#include

voidmain()

{inta,b;

for(a=1,b=1;a<=100;a++)

{if(b>20)break;

if(b%3==1)

{b+=3;

continue;

}

b-=5;

}

printf(“%d\n”,a);

}

7、8、9、

 

第三章数组和字符串与指针

3.1例题分析

1、假定p1和p2是已赋值的字符型指针,在下述有关运算中,非法的是:

A.p1+(p1-p2)=30B.if(p1==p2)printf("equal")

C.*(p1-2+p2)=getchar()D.*(p1+=2)=*p2

2、下列程序的输出结果是:

#include<stdio.h>

Voidmain()

{int*p1,*p2,x=10;

floaty=2.5;

p1=&x;

p2=&y;

printf("%d,%f",++(*p1),(*p2)++);

A.11,3.5B.11,2.5C.10,2.5D.以上三个答案都不对

3、下列程序中,对输出结果的描述正确的是()

chars[]="ABCD",*p=s;

printf("%d\n",p[4]);

A.p[4]引用格式错误,不能输出B.输出指不定

C.输出68D.输出0

4、若有下面的程序片段,则对数组元素的错误引用是

inta[12]={0},*p[3],**pp,i;

for(i=0;i<3;i++)p[i]=&a[i*4]pp=p;

A.pp[0][1]B.a[10]C.p[3][1]D.*(*(p+2)+2)

5、若有如下说明,且0<=I<10,则对数组元素地址的正确表示是

inta[]={1,2,3,4,5,6,7,8,9,10};*p=a,I;

A.&(a+1)B.a++C.&pD.&p[I]

6、在下列程序中,对输出结果描述正确的是

intx=10,*p;

floaty=2.4;

x=y++;

*p=x;

*p+=x+y++;

printf("%d,%f",*p,y);

A.输出13,4.4B.输出6,4.4

C.因为程序有误,结果不定D.输出4,4.4

7、数组s定义为:

chars[81];若准备将字符串"ThisisaProgram".记录下来,()是错误的输出语句。

A.gets(s+2)B.scanf("%20s",s)

C.for(I=0;I<17;I++)D.while((c=getchar())!

='\n')s[I++]=c

s[I]=getchar();

3.2练习题

1、下列程序执行后,变量I的正确结果是()

intI;

char*s="a\045+045\'b";

for(I=0;*s++;I++)

A.7B.8C.9D.10

2、下列说法正确的是()

A.字符'\0'是字符串的结束标记,其ASCII代码是0

B.字符'0'是字符串的结束标记,其ASCII代码是0

C.字符'\0'是字符串的结束标记,其ASCII代码是32

D.字符'0'是字符串的结束标记,其ASCII代码是32

3、如下有关数组描述正确的是()

A.数组的大小是固定的,但可以有不同类型的数组元素

B.数组的大小是固定的,但所有数组元素的类型必须相同

C.数组的大小是固定的,所有数组元素的类型必须相同

D.数组的大小是固定的,可以有不同类型的数组元素

4、下述程序的输出结果是Front

#include<stdio.h>

voidmain()

{chars1[20]="Front",s2[20]="Behind";

char*ps1=s1,*ps2=s2;

while(*ps++);

while(*ps++=*ps2++);

*ps1='\0';

printf("%s,s1");

}

第四章函数

4.1例题分析

1、下列程序段的输出结果是()

intx=10;

inty=x;x++;

printf("%d,%d",(x++,y),y++);

A.11,10B.11,11C.10,10D.10,11

2、下列程序的输出结果是()

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*(z++));}

voidmain()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

A.11,42,31B.11,41,20C.11,21,40D.11,41,21

12,22,4112,42,2011,21,4112,42,22

3、下列函数的功能()

intfun(char*x)

{char*y=x;

while(*y++);

returny-x-1;

}

A.求字符串的长度B.求字符串存放位置

C.比较两个字符串的大小D.将字符串x连接到字符串y后面

4、若一个外部变量的定义形式为staticintx;那么,其中static的作用应该是()

A.将变量存放在静态存储区B.使变量x可以由系统自动初始化

C.使x只能在本文件内引用D.使x的值可以永久保留

5、下列程序的输出结果是()

voidf(intx,inty)

{inttemp;

temp=x;x=y;y=temp;

}

main()

{intx=1,y=3,z=2;

if(x>y)f(x,y);

elseif(y>z)f(y,z);

elsef(x,z);

printf("&d,%d,%d\n",x,y,z);

}

A.1,2,3B.3,1,2C.2,3,1D.1,3,2

6、本程序是用冒泡法对数组a的元素从小到大排序,请填空

voidbub(inta[],intn)

{intj,k,jmax;

jmax=

(1)n-1;

do

{k=

(2)0;

for(j=0;j

if(a[j]

{inttemp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

k=(3)j;

}

jmax=(4)k;

}while(jmax>0);

}

4.2练习题

1、以下函数调用语句中的实参个数是()

fun(a+b,(x,y),fun(n+k,a,x+y));

A.3B.4C.5D.6

2、一个C语言程序由函数A,B,C和P构成,在函数A中分别调用了函数B和函数C,在函数B中调用了函数A,且在函数P中也调用了函数A,则可以说()

A.函数B中调用的函数A是函数A的间接递归调用

B.函数A被函数B中调用的函数A间接递归调用

C.函数P直接递归调用了函数A

D.函数P中调用的函数A是函数P的嵌套

3、有一个名为newpr的函数用于打印机sin(x),cos(x)和ln(x)等函数的曲线模型,其参数就是这些函数,则newpr的说明是

A.doublenewpr(doublex)

B.voidnewpr(double(*f)(doublex))

C.voidnewpr(double(*f)(),doublex)

D.void(*newpr)(doublef(doublex))

4、下列程序的输出结果是

main()

{staticchar*a[]={"Morning","Afternoon","Evening"};

char**n;

n=a;

fun(n);

}

fun(char**m){++m;printf("%s\n",*m);}

A.为空B.MorningC.AfternoonDEvening

5、下列程序的输出结果是

func1(inta,intb){return(a+b);}

func2(inta,intb){return(a-b);}

func3(int(*t)(),intx,inty){retirn(*t)(x,y)}

main()

{intx,(*p)(int,int);

p=func1;

x=func3(p,9,3);

x+=func3(func2,8,3);

printf("%d\n",x);

}

A.9B.17C.3D.27

6、下列函数的功能是计算两个整数的和与差,并通过参数传回这两个结果。

请填空

voidfun(intx,inty,int*p,int*m)

{(3)*p=x+y;

(4)*m=x-y;

}

7、以下函数fun(n)利用递归方法计算阶乘n!

(n>=1),main函数则输出1到10的阶乘,请填空

#include

Longfun(intn)

{returnn==1?

1:

n*fun(n-1)}

voidmain()

{intk;

for(k=0;k<10;k++)

print(“%ld”,fun(++k));

}

8、下列程序的输出结果是s=7

#includ

inta=2;

intf(int*b)

{return(*b)++;}

voidmian()

{ints=0;

{intb=5;

s+=f(&b);

}

s+=f(&a);

print(“s=%d”,s);

}

第五章结构体与共有体

5.1例题分析

1、若有如下说明,则()的叙述式正确的(int占两个字节)

structst

{inta;

intb[2];

}a;

A.结构体变量a与结构体成员a同名,定义是非法的

B.程序只在执行到该定义时才为结构体st分配存储单元

C.程序运行时为结构体st分配6字节存储单元

D.类型名structst可以通过extern关键字提前引用(即引用在前,说明在后)

2、下列程序的输出结果是

#includ

{structst

{intx;

unsigneda:

2;

unsignedb:

2;

}

printf(“\n%d”,sizeof(structst));

}

A.2.5B.3C.2D.不确定

3、对于下列说明,表达式()不能使变量p->b的值增1

structst

{inta;

int*b;

}*p;

A.*++p->bB.*++((p++)->bC.*p->b++D.(*(p++)->b)++

4、下列程序的运行结果是

#includ

structst

{intn;

int*m;

}*p;

voidmain()

{intd[5]={10,20,30,40,50};

structstarr[5]={100,d,200,d+1,300,d+3,400,d+3,500,d+4};

p=arr;

print(“%d\t”,++p->n);

print(“%d\t”,(++p)->n);

print(“%d\t”,++(*p->m));

}

A.10120021B.1012030C.20010121D.10110110

5、下列程序的执行结果是

#includ

unionun

{intI;

Charc[2];

};

voidmain()

{unionunx;

x.c[0]=10;

x.c[1]=1;

print(“\n%d”,x.i);

}

A.266B.11C.265D.138

5.2练习题

1、下列程序的输出结果是

#includ

voidmain()

{union

{unsignedcharc;

UnsignedintI[4];

}z;

z.i[0]=0x39;

z.i[1]=0x36;

print(“%c”,z.c);

}

A.6B.9C.0D.3

2、以下程序的执行结果是

mian()

{union

{intx;

struct

{charc1;

charc2;

}b;

}a;

a.x=0x1234;

printf(“%x,%x\n”,a.b.c1,a.b.c2);

}

A.12,34B.34,12C.12,00D.34,00

3、若有下说明和定义语句,则变量W在内存中所占的字节数是34

unionaa{floatx;floaty;charc[6];};

structst{unionaav;floatw[5];doubleave;}W;

4、以下程序的执行结果是4,8

#includ

main()

{unionEXAMPLE

{struct

{intx;inty;}in;

inta;

intb;

}e;

e.a=1;e.b=2;

e.in.x=e.a*e.b;

e.in.y=e.a+e.b;

printf(“%d,%d\n”,e.in.x,e.in.y);

}

第六章文件和预处理

6.1例题分析

1、对于下列程序,在方式串分别采用“wt”“wb”运行时,两次生成的文件TEST的长度是

#includ

voidmain()

{FILE*fp=fopen(“TEST”,方式串);

fputc(‘A’,fp);fputc(‘\n’,fp);

fputc(‘B’,fp);fputc(‘\n’,fp);

fputc(‘C’,fp);

fclose(fp);

}

A.7字节,7字节B.7字节,5字节C.5字节,7字节D.5字节,5字节

2、在宏定义#definePI3.1415926中,用宏名PI代替一个

A.单精度数B.双精度数C.常量D.字符串

3、执行下列程序后输出的结果是

#includ

#defineSQR(X)X*X

voidmain()

{inta=10;k=2;m=1;

a/=SOR(k+m)/SQR(k+m);

printf(“%d”,a);

}

A.10B.1C.9D.0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1