C 复习题A.docx
《C 复习题A.docx》由会员分享,可在线阅读,更多相关《C 复习题A.docx(35页珍藏版)》请在冰豆网上搜索。
![C 复习题A.docx](https://file1.bdocx.com/fileroot1/2023-6/22/70e201f4-b9f8-45b5-b7ed-4fad13a4616e/70e201f4-b9f8-45b5-b7ed-4fad13a4616e1.gif)
C复习题A
一、单项选择题
(01)下列合法的变量名是()
A)2sp
B)qe$3
C)short
D)T_fe
(02)下列各表达式中,其值为零的是()
A)!
(1/2)
B)(4,1,3/7)
C)1&&1||0
D)3%11
(03)下列程序段运行的结果是()
#include
main()
{
inti=1,s=4;
do{
s+=i++;
if(s%7==0)
continue;
else
++i;
}while(s<15);
printf("%d",i);
}
A)9
B)7
C)8
D)6
(04)下面程序的执行结果是()
main()
{
intu=010,v=0x10,w=10;
printf("%d,%d,%d\n",u,v,w);
}
A)15,11,10
B)13,17,10
C)8,16,10
D)13,11,10
(05)以下程序中,while的循环次数是()
main()
{
inti=2;
while(i)
{
if(i=1)continue;
if(i>=5)break;
i++;
}
}
A)0
B)5
C)1
D)死循环
(06)执行下面循环的输出结果是()
main()
{
inty=7;
for(;y>0;y--)
if(y%2==0)printf("%d",--y);printf("\n");
}
A)74
B)52
C)531
D)753
(07)若有定义:
enumball{good,old,big,small}bl;则下面语句正确的是()
A)bl=2;
B)bl=small;
C)old=10;
D)bl.good=3;
(08)以下程序的输出结果是()
main()
{
inta=5,b=3;
printf("%d\n",a&b);
}
A)5B)3
C)1D)2
(09)下列程序的执行结果是()
unionlht
{
inta[2];
doubled;
floatu;
}len;
structdate
{
float*p;
unionlhtt;
intc;
}da;
main()
{
printf("%d\n",sizeof(structdate)+sizeof(len));
}
A)20B)22
C)18D)23
(10)以下程序的输出结果是()
structstudent
{intnum;
charname[10];
intage;
}stu[3]={{9801,"Zhang",20},
{9802,"Wang",19},
{9803,"Zhao",18}};
main()
{
structstudent*p=stu;
printf("%s\n",p->name);
}
A)ZhangB)Zhao
C)WangD)18
(11)下面程序的输出结果是()
main()
{charstr[]="abc",*p=str;
printf("%c\n",*(p+3));
}
A)bB)c
C)0D)无输出
(12)若有以下定义:
inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;
则下面值为5的表达式是()。
A)p+=4,++*p
B)p+=4,*(p++)
C)p+=5,*p++
D)p+=4,*++p
(13)对于下述程序段,结构体变量stu的成员num的非法引用是()。
structst
{
intage;
intnum;
}stu,*p;
p=&stu;
A)stu.numB)*p->num
C)p->numD)(*p).num
(14)以下程序的输出结果是()
voidf(intb[])
{inti=0;
while(b[i]<=10)
{printf("%d",b[i]);
i++;
}
}
main()
{intb[]={1,3,7,10,11,8};
f(b+3);
}
A)13710B)10
C)137D)运行时出错
(15)以下程序的输出结果是()。
main()
{
inta=5,t,s=6,*p1=&t,*p2=&s;
a=p1==p2;
printf("%d\n",a);
}
A)4B)1
C)0D)运行时出错
(16)函数fun的返回值是()
intfun(char*a,char*b)
{
intnum=0,n=0;
while(*(a+num)!
='\0')num++;
num=0;
while(b[n])
{
*(a+num)=b[n];num++;n++;
}
returnnum;
}
A)字符串a的长度
B)字符串b的长度
C)字符串a和b的长度之差
D)字符串a和b的长度之和
(17)以下程序输出结果是()
voidsub(floatx,float*y,float*z)
{
*y=*y-3.0;*z=*z+x;
}
main()
{
floata=3.5,b=8.0,*pa,*pb;
pa=&a;pb=&b;
sub(b-a,pa,pb);
printf("%2.1f\n",a);
}
A)4.0B)2.0
C)3.5D)0.5
(18)以下程序的输出结果是()。
main()
{
chara[]="photoshop",b[]="proe";
char*p1,*p2;inti;
p1=a;p2=b;
for(i=0;i<5;i++)
if(*(p1+i)==*(p2+i))
printf("%c",*(p1+i));
}
A)phB)pr
C)poD)o
(19)以下程序中输入’B’,将输出的结果是()。
main()
{
charc;
c=getchar();
switch(c)
{
case'A':
case'a':
printf("$\n");break;
case'B':
case'b':
printf("#");
default:
printf("@\n");
}
}
A)#B)无输出
C)#@D)@
(20)以下程序的输出结果是()
main()
{
char*ss[2]={"1234","5678"};
printf("%s\n",ss[0]);
printf("%c\n",**ss);
}
A)1234B)5678
55
C)1234D)5678
11
(21)下列程序的输出结果是()
voidfun()
{staticinta;
intb=1;
printf("%d",(a+=3,a+b));
}
main()
{
inti;
for(i=1;i<3;i++)
fun();
}
A)不确定B14
C)44D)47
(22).以下程序的输出结果是()。
voidbg(int*t,intm,intn)
{
*t=m%n;
}
main()
{inta,b,c;
bg(&a,8,3);
bg(&b,7,a);
bg(&c,a,b);
printf("%d,%d,%d\n",a,b,c);
}
A)3,1,2B)2,1,0
C)2,1,2D)1,2,11
(23)以下程序的执行结果是()
intfun(intn)
{
if(n==1)return1;
else
returnn+fun(n-1);
return0;
}
main()
{
printf("%d\n",fun(4));
}
A)8B)10
C)1D)6
(24)以下程序的输出结果是()。
main()
{int*p,a=3,b=2;
p=&a;
p++;
printf("%d\n",*p);
}
A)0B)2
C)3D)不确定
(25)执行下列语句后,a的值是()。
inta=3;
a+=a-=a*a;
A)0B)-12C)-8D)6
(26)下面程序的输出结果是()
intss(char*s)
{
char*p=s;
while(*p)p++;
return(p-s);
}
main()
{
char*str="Ilovechina";
intn;
n=ss(str+7);
printf("%d\n",n);
}
A)12B)5
C)13D)6
(27)以下程序的输出结果是()。
main()
{
intx,i;
for(i=1;i<50;i++)
{
x=i;
if(x++%2==0)
if(x++%3==0)
if(x++%7==0)
printf("%4d",x);
}
printf("\n");
}
A)2849B)42
C)29D)1435
(28)已知:
intx=5;下列do-while循环语句的循环次数是()。
do{
printf("%d\n",x--);
x--;
}while(!
x);
A)0
B)1
C)5
D)无限
(29)以下程序的输出结果是()
#include
main()
{
chars1[20]="black",*s2="ball";
strcat(s1,s2);printf("%d\n",strlen(s1));
}
A)5B)4
C)9D)10
(30)已知:
intx=10,*px=&x;下列表达式中非法的是()
A)*&x=3B)*px=8
C)x=5D)px=x
(31)下面程序的执行结果是()
main()
{
charch1='d',ch2='h';
printf("%c\n",ch2-ch1+'A');
}
A)MB)E
C)FD)101
(32)下列程序段运行的结果是()
main()
{intk=3,s=5;
do{s+=k++;
if(s%3==0)
continue;
else++k;
}while(s<11);
printf("%d\n",k);
}
A)8B)6
C)7D)9
(33)下列数组初始化错误的表示是()。
A)charstr[3]={'a','b','c'};
B)charstr[5]="abc";
C)charstr[]="ijkh";
D)charstr[5];
str[5]={'m','n','s','r'};
(34)以下程序的输出结果是()
main()
{
inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k);
}
A)20B)21
C)22D)23
(35)下面程序的执行结果是()
main()
{
intx=1,y;
for(y=1;y<=10;y++)
{
if(x==10)break;
if(x%2==1)
{x+=5;continue;}
x-=3;
}
printf("%d\n",y);
}
A)2B)4
C)6D)8
(36)下面程序的执行结果是()
main()
{
intj;
for(j=10;j>3;j--)
{
if(j%3)j--;
--j;--j;
printf("%d",j);
}
}
A)63B)74
C)62D)73
(37)以下程序的输出结果是()
main()
{
union{inti[2];
doublek;
charc[2];
}r,*s=&r;
s->c[0]=0x39;
s->c[1]=0x38;
printf("%c\n",s->c[0]);
}
A)39B)9
C)38D)8
(38)以下程序的输出结果是()
intd=1;
fun(intp)
{
intd=5;
d+=p++;
printf("%d",d);
}
voidmain()
{
inta=3;
fun(a);
d+=a++;
printf("%d\n",d);
}
A)84B)96
C)94D)85
(39)下述对C语言字符数组的描术中错误的是()
A)字符数组可以存放字符串
B)字符数组中的字符串可以整体输入、输出
C)可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
(40)执行以下程序后,y的值是()
main()
{
inta[]={2,4,6,8,10};
inty=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf("%d\n",y);
}
A)17B)18C)19D)20
(41)C中运算符优先级由高到低排列正确的是()
A)?
:
%+!
B)<*||,
C)->+++||
D)%=,&&sizeof
(42)已知:
inta=8,b=4;表达式!
a&&++b的值及b的值是()。
A)05B)14C)04D)15
(43)设inta=3,b=2;则表达式b*a++的结果是()
A)2B)3C)6D)8
(44)下面程序的运行结果为()
main()
{
for(ints=0,x=0;!
x&&s<=10;s++)
{
s++;
}
printf("%d\n",s);
}
A)10B)12C)11D)0
(45)指出下面哪条语句中,变量a不被赋值()
A)a++;B)a==b;
C)a+=b;D)a%=b;
(46)以下程序的输出结果是()。
main()
{
inta=1,b=2,c=3;
b=a+3*a+b;
c%=(a+b+3);
a=bprintf("%d,%d,%d\n",a,b,c);
}
A)1,6,9B)0,6,3
C)6,6,3D)6,6,9
(47)已知:
inta,*pa=&a;下列表达式中与&*pa相同的是()
A)*paB)aC)&aD)&pa
(48)下列不正确的转义字符是()
A)'\\'B)'\"C)'074'D)'\0'
(49)执行下列语句后,a的值是()。
inta=2;
a+=a-=a*a;
A)0B)2C)4D)-4
(50)以下程序的输出结果是()。
main()
{
inta=3,k,m=6,*p1=&k,*p2=&m;
a=p1!
=&m;
printf("%d\n",a);
}
A)4B)0C)1D)运行时出错
51)以下程序的执行结果是()
main()
{
doubled=3.2;
intx,y;
x=1.2;
y=(x+3.8)/5.0;
printf("%d\n",y*d);
}
A)0B)3C)3.2D)3.0
(52)设x,y,z,t均为int型变量,则执行以下语句后,t的值为()
x=y=z=1;
t=++x||++y&&++z;
A)不定值B)2C)1D)0
(53)以下说法错误的是()
A)static型变量只初始化一次
B)auto型变量只在其定义的函数或分程序中有效
C)变量的存储类别分为四种
D)外部变量的作用域与它的定义位置无关
(54)以下程序段的输出结果是()。
charstr[]="BCDE",*p=str+3;
printf("%d\n",*p);
A)字符E的地址B)0
C)69D)不确定
(55)以下程序的输出结果是()。
main()
{
float*p,u;
p=&u;
*p=18.5;
printf("%d\n",sizeof(p));
}
A)4B)12.3C)2D)8
(56)以下程序的输出结果是()。
main()
{
inti=1,j=1,k=2;
if((j++||k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
A)2,2,2B)2,2,1C)1,1,2D)2,2,3
(57)若有语句:
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
则下面对a数组元素的引用不正确的是()
A)*(*a+i)B)*(&a[i])
C)*pD)a[p-a]
(58)以下程序的输出结果是()
#include
main()
{
char*s1="abcdef",*s2="abcd";
printf("%d\n",strlen(strcpy(s1,s2)));
}
A)5B)4C)9D)10
(59)下面程序的执行结果是()
main()
{
inta=5,b=0,c=0;
if(a=b+c)printf("***");
elseprintf("%d\n",a);
}
A)0B)编译错误C)5D)***
(60)对于下述程序段,结构体变量data的成员a的正确引用是()。
structsk
{
inta;
floatb;
}data,*p;
p=&data;
A)(*p).data.aB)(*p).a
C)p->data.aD)p.data.a
单选题答案:
01.D02.B03.A04.C05.D
06.C07.B08.C09.A10.A
11.D12.B13.B14.B15.C
16.B17.D18.C19.C20.C
21.D22.B23.B24.D25.B
26.B27.C28.B29.C30.D
31.B32.C33.D34.B35.C
36.B37.B38.A39.C40.C
41.C42.C43.C44.B45.B
46.B47.C48.C49.D50.C
51.A52.C53.D54.C55.C
56.A57.A58.B59.A60.B
二、改错题
(1)以下程序的功能是:
从键盘上输入5个学生的成绩,计算其平均值。
题中有两处错误,均在/********found******/下一行,请改正。
main()
{
inti;
floatx,sum=0,aver;
for(i=0;i<5;i++)
{
/*************found*************/
scanf("%f",x);
sum+=x;
}
aver=sum/5;
/*************found*************/
printf("%4.1f\n,aver");
}
(2)以下程序的功能是:
求二维数组中最大的元素值及其行列号。
题中有两处错误,均在/********found******/下一行,请改正。
main()
{
inta[3][4]={{1,2,3,4},
{9,8,7,6},
{-10,10,-5,2}};
inti,j,hang=0,lie=0,max;
max=a[0][0];
/*************found*************/
for(i=0;i<2;i++)
for(j=0;j<=3;j++)
/*************found*************/
if(a[i][j]{
max=a[i][j];
hang=i;
lie=j;
}
printf("%d,%d,%d\n",max,hang,lie);
}
(3)以下程序的功能是:
从键盘上输入10个数,用函数求其平均值。
题中有两处错误,均在/********found******/下一行,请改正。
floataverage(intstu[10],intn)
{
inti;
floatav,total=0;
for(i=0;iav=total/n;
/*************found*************/
returntotal,av;
}
main()
{
intscore[10],i;
floatav;
printf("In