C语言程序的设计习题有答案1.docx
《C语言程序的设计习题有答案1.docx》由会员分享,可在线阅读,更多相关《C语言程序的设计习题有答案1.docx(66页珍藏版)》请在冰豆网上搜索。
![C语言程序的设计习题有答案1.docx](https://file1.bdocx.com/fileroot1/2023-2/6/dadb6280-7c5d-4a02-9fe9-25cd709bafb4/dadb6280-7c5d-4a02-9fe9-25cd709bafb41.gif)
C语言程序的设计习题有答案1
《C语言程序设计》复习题
一、填空题
1、C语言的源程序必须通过编译和后,才能被计算机执行。
2、C语言的源程序必须通过编译和连接后,才能被计算机执行。
3、C语言中的标示符可分为关键字、拥护标示符和预定义标识符3类。
4、C语言中的标示符可分为关键字、用户标识符和预定义标示符3类。
5、在C语言中,用关键字float定义单精度实型变量。
6、在C语言中,用关键字double定义双精度实型变量。
7、在C语言中,用关键字char定义字符型变量。
8、在C语言的赋值表达式中,赋值好左边必须是变量。
9、设C语言中的一个int型数据在存中占2个字节,则int型数据的取值围为-32768--32768。
10、若有定义语句:
ints=6;则表达式s%2+(s+1)%2的值为1。
11、若a是int型变量,且a的初值为6,则执行表达式a+=a-=a*a后a的值为-60。
12、若a是int型变量,则执行表达式a=25/3%3后a的值为2。
13、在程序运行过程中,其值不能被改变的量称为常量。
14、C程序中定义的变量,代表存中的一个存储单元。
15、C语言中,int类型数据字符占存2个字节。
16、C语言中,char类型数据占存1个字节。
17、C语言的字符常量是用单引号括起来的一个字符。
18、语句printf(“\n”);的作用是换行输出。
19、10/3的结果是3。
20、10%3的结果是1。
21、C语句的最后用;结束。
22、要使用putchar函数,在#include命令行中应包含的头文件是#include。
23、要使用getchar函数,在#include命令行中应包含的头文件是#include。
24、为表示关系|x|≥9;应使用的C语言表达式是x<=-9||x>=9。
25、为表示关系|x|≤9;应使用的C语言表达式是x>=-9&&x<=9。
26、C语言中用1表示逻辑值“真”。
27、C语言中用0表示逻辑值“假”。
28、当a=3,b=2,c=1时;表达式f=a>b>c的值是0。
29、以下程序段的输出结果是83。
intx=0123;
printf(“%d\n”,x);
30、以下程序段的输出结果是291。
intx=0x123;
printf(“%d\n”,x);
31、以下程序段的输出结果是d1。
intx=0321;
printf(“%x\n”,x);
32、若A的ASCII为65,则以下程序段的输出结果是D。
charx=’A’;
printf(“%c”,x+3);
33、以下程序段的输出结果是51。
charx=’0’;
printf(“%d”,x+3);
34、以下程序段的输出结果是00.500000
intn=2;floatx=2.0;
printf(“%d%f”,1/n,1/x);
35、以下程序段的输出结果是67.000000
intn=2;floatx=2.0;chara=’A’;
printf(“%f”,1/n+x+a);
36、以下程序段的输出结果是x=3.600000i=3。
floatx=3.6;inti;i=(int)x;
printf(“x=%fi=%d”,x,i);
37、以下程序段的输出结果是45.500000。
floatx=9.0;
printf(“%f”,x=45.5);
38、以下程序段的输出结果是-100。
intx=100,y=200;
printf(“%d”,(x+y,x-y));
39、以下程序的输出结果为-4.177774,fffc,65532。
main()
{shortI;
i=-4;
printf(“\n%d,%o,%x,%u”,i,i,i,i);
}
40、以下程序的输出结果为*3.1400003.142。
main()
{printf(“*%f,%4.3f\n”,3.14,3.1415);
}
41、以下程序的输出结果为000325,3.141596e+000。
main()
{inta=325;doublex=3.141596;
printf(“%06d,%+e\n”,a,x);
}
42、若从键盘上输入987654321,以下程序的输出结果是32.00。
main()
{inta;floatb,c;
scanf("%3d%3f%2f",&a,&b,&c);
printf("%6.2f",c);
}
43、以下程序段的输出结果是a=12。
inta=12;
if(a>12)printf(“a=%d”,a);
elseprintf(“a=%d”,a);
44、以下程序段的输出结果是***。
inta=1;
if(--a)printf(“###”);
elseprintf(“***”);
45、若变量已正确定义,以下语句段的输出结果是*%*#。
x=0;y=2;z=2;
switch(x)
{case0:
switch(y==2)
{case1:
printf(“*”);
case2:
printf(“%”);break;
}
case1:
switch(z)
{case1:
printf(“$);
case2:
printf(“*”);
default:
printf(“#”);
}
}
46、以下程序的输出结果是a=2,b=1
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf("\na=%d,b=%d",a,b);
}
47、以下程序的运行结果是1。
main()
{intx,y,z;
x=3;y=3;
z=x==y;
printf(“%d\n”,z);
}
48、以下程序的运行结果是1,0。
main()
{intx,y,z;
x=1;y=1;z=0;
x=x||y&&z;
printf(“%d,%d”,x,x&&!
y||z);
}
49、以下程序的运行结果是F。
main()
{if(2*2==5<2*2==4)
printf(“T”);
else
printf(“F”);
}
50、若运行时输入5999,则以下程序的运行结果是3635.4。
main()
{intx;floaty;
scanf(“%d”,&x);
if(x>=0&&x<=2999)y=18+0.12*x;
if(x>=3000&&x<=5999)y=36+0.6*x;
if(x>=6000&&x<=10000)y=54+0.3*x;
printf(“%6.1f”,y);
}
51、以下程序的输出结果是2。
main()
{intx,y;
x=y=2;
if(x==1)
if(x==2
printf(“%d\n”,x=x+y);
else
printf(“%d\n”,x=x-y);
printf(“%d\n”,x);
}
52、以下程序的输出结果是20。
main()
{inta,b,c,d,x;
a=c=0;b=1;d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)x=15;
elsex=25;
printf(“%d\n”,d);
}
53、以下程序的输出结果是-1。
main()
{nta=2,b=3,c;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
printf(“%d\n”,c);
}
54、以下程序的输出结果是01。
main()
{intx,y,z;
x=3;
y=z=4;
printf(“%d,”(x>=y>=x)?
1:
0);
printf(“%d\n”,z>=y&&y>=x);
}
55、若a、b、c均已正确定义且a=0、b=2、c=3,则以下程序的输出是。
switch(a)
{case0:
switch(b==2)
{case1:
printf(“&”);break;
case2:
printf(“%”);break;
}
case1:
switch(c)
{case1:
printf(“$”);
case2:
printf(“*”);break;
default:
printf(“#”);
}
}
56、以下程序段的输出结果是**1**
57、**3**。
intx=1,y=0;
switch(x)
{case1:
switch(y)
{case0:
printf(“**1**\n”);break;
case1:
printf(“**2**\n”);break;
}
case2:
printf(“**3**\n”);
}
58、当运行以下程序时,从键盘输入:
right?
<回车>,则输出结果是sjhiu。
main()
{charc;
while((c=getchar())!
=’?
’)putchar(++c);
}
59、下面程序段的运行结果是**。
x=2;
do{
printf(“*”);x--;
}while(!
x==0);
60、下面程序段的运行结果是-5。
i=1;a=0;s=1;
do{a=a+s*i;s=-s;i++;}while(i<=10);
printf(“%d”,a);
61、下面程序段的运行结果是16,15。
main()
{inti,x,y;
i=x=y=0;
do
{++i;
if(i%2!
=0){x=x+i;i++;}
y=y+y++;
}while(i<=7);
printf(“%d,%d”,x,y);
}
62、下面程序段的运行结果是sum=19。
main()
{inti,t,sum=0;
for(t=i=1;i<=10;)
{sum+=t;++i;
if(i%3==0)t=-i;
elset=i;
}
printf(“sum=%d”,sum);
}
63、下面程序段的运行结果是*
64、#。
main()
{inti;
for(i=1;i<=5;i++)
switch(i%2)
{case0:
i++;printf(“#”);break;
case1:
i+=2;printf(“*”);
default:
printf(“\n”);
}
}
65、下面程序段的运行结果是****#。
main()
{inti,j=4;
for(i=j;i<=2*j;i++)
switch(i/j)
{case0:
case1:
printf(“*”);break;
case2:
printf(“#”);
}
}
66、以下程序的运行结果是358。
main()
{intx[5],i;
x[0]=1;x[1]=2;
for(i=2;i<5;i++)x[i]=x[i-1]+x[i-2];
for(i=2;i<5;i++)printf(“%d”,x[i]);
}
67、以下程序段的输出结果是8。
intk=1,n=4,m=1;
while(k<=--n)m*=2;
printf(“%d\n”,m);
68、(6.3p107)以下程序段输出结果是0。
main()
{intx=2;
while(--x);
printf("%d\n",x);
}
69、以下程序段输出结果是16。
inti=0,sum=1;
do{sum+=i;}while(i++<5);
printf("%d\n",sum);
70、以下程序段的输出结果是11。
ints=1,k=1;
for(;k<=10;k++)s=s+s/k;
printf(“%d\n”,s);
71、以下程序段的输出结果是**3##4**5
intx;
for(x=3;x<6;++x)printf((x%2)?
("**%d"):
("##%d"),x);
72、以下程序的输出结果是7/13=0.538461
main()
{
longa=7,b=13,c,i;
printf("\n%ld/%ld=%ld.",a,b,a/b);
c=a%b;
a=c;
do
{
a=a*10;
for(i=1;i<=10;i++)
{
if(a
}
}
while(a!
=c);
}
73、以下程序的输出结果是100
#defineN100
main()
{
inta[N],i,j,k;
for(i=2;ia[i]=i;a[N-1]=0;
for(i=2;a[i];i++)
for(j=i+1;a[j];j++)
if(a[j]%a[i]==0)
for(k=j;a[k];k++)
a[k]=a[k+1];
while(a[i])
printf("%4d",a[i++]);
}
74、以下程序的输出结果是14。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=0;i<4;i++)k+=arr[i]*i;
printf(“%d\n”,k);
}
75、以下程序的输出结果是7
fun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;
}
main()
{printf("%d\n",fun(9));}
76、以下程序的输出结果是120。
fun(intnum)
{intk=1;
do
{k*=num%10;num/=10;}
while(num);
returnk;
}
main()
{intn=456;printf(“%d\n”,fun(n));}
77、以下程序的输出结果是120。
funa(inta,intb)
{returna%b;}
funb(inta,intb)
{intc;
a+=a;b+=b;
c=funa(a,b);
returnc*c;
}
main()
{intx=15,y=7;
printf(“%d\n”,funb(x,y));
}
78、以下程序段的输出结果是变量ab的地址。
int*var,ab;
ab=100;var=&ab;ab=*var+10;
printf(“%x\n”,var);
79、以下程序的输出结果是7010。
intast(intx,inty,int*cp,int*dp)
{*cp=x+y;
*dp=x-y;
}
main()
{inta,b,c,d;
a=40;b=30;
ast(a,b,&c,&d);
printf(“%d%d\n”,c,d);
}
80、以下程序的输出结果是18。
main()
{inta[]={2,4,6,8,10},*p=a,y,z=0;
for(y=0;y<5;y+=2)
z+=*(p+y);
printf("%d\n",z);
}
81、以下程序的输出结果是9。
main()
{inta[]={1,3,5,7,9},*prt=&a[0],x=4,y,z;
for(y=0;y<5;y++)
z=(*(prt+y),--x)?
*(prt+y):
x;
printf(“%d\n”,z);
}
82、若输入3个整数3,2,1,则以下程序的输出结果是2721。
voidsub(intn,intuu[])
{intt;
t=uu[n--];t+=3*uu[n];
n++;
if(t>=10)
{uu[n++]=t/10;uu[n]=t%10;}
elseuu[n]=t;
}
main()
{inti,n,aa[10]={0};
scanf(“%d,%d,%d”,&n,&aa[0],&aa[1]);
for(i=1;ifor(i=0;i<=n;i++)printf(“%d”,aa[i]);
}
83、下面程序的输出结果是6
F(char*s)
{
char*p=s;
while(*++p!
='\0');
return(p-s);
}
main()
{printf("%d\n",F("ABCDEF"));}
84、以下程序的输出结果是5。
fun(char*s,chara)
{
intj=0;
while(s[j]!
='\0')
if(a==s[j++])break;
if(s[j]!
='\0')
returnj;
else
return-99;
}
main()
{char*s="zxcevbn";
printf("%d\n",fun(s,'v'));
}
85、(11.3p263)以下程序的输出结果是6
main()
{structcmplx{intx;inty;}cnum[2]={1,3,2,7};
printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}
86、
二、单项选择题(每题1分,共30分)
1、以下不符合C语法的赋值语句是【C】
A.m=(2+1,m=1);B.m=n=0;
C.m=1,n=2D.n++;
2、设x、y均为float型变量,则以下不合法的赋值语句是【B】
A.++x;B.y=(x%2)/10;
C.x*=y+8;D.x=y=0;
3、逻辑运算符两侧运算对象的数据类型【D】
A.只能是0或1B.只能是0或非0正数
C.只能是整型或字符型数据D.可以是任何类型的数据
4、下列关系表达式中结果为假的是【C】
A.0!
=1B.2<=8
C.(a=2*2)==2D.y=(2+2)==4
5、判断char型变量ch是否为大写字母的正确表达式是【C】
A.’A’<=ch<=’Z’B.(ch>=’A’)&(ch<=’Z’)
C.(ch>=’A’)&&(ch<=’Z’)D.(‘A’<=ch)AND(‘Z’>=ch)
6、设x、y和z是int型变量,且x=3,y=4,z=5,则下列表达式中值为0的是【D】
A.’x’&&’y’B.x<=y
C.x||y+z&&y-zD.!
((xz||1)
7、一个C程序的执行是从【A】
A.本程序的main函数开始,到main函数结束
B.本程序的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序的第一个函数开始,到本程序main函数结束
8、以下叙述正确的是【C】
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
9、以下叙述不正确的是【D】
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
10、C语言规定,在一个源程序中,main函数的位置【C】
A.必须在最开始B.必须在系统调用的库函数的后面
C.可以任意D.必须在最后
11、一个C语言程序是由【B】
A.一个主程序和若干子程序组成B.函数组成
C.若干过程组成D.若干子程序组成
12、设C语言中的一个int型数据在存中占2个字节,则unsingedint型数据的取值围为【C】
A.0-255B.0-32767
C.0-65535D.0-2147483647
13、下列4组选项中,均是C语言关键字的选项是【B】
A.autoenumincludeB.switchtypedefcontinue
C.signedunionscanfD.ifstructtype
14、下列4组选项中,均不是C语言关键字的选项是【A】
A.defineIFtypeB.getccharprintf
C.includescanfcaseD.whilegopow
15、(2.4)下面4个选项中,均是不合法的用户标示符的选项是【C】
A.AP_0doB.floatla0_A
C.b-agotointD._123tempINT
16、C语言中的标示符只能由字母、数字和下划线3种字符组成,且第一个字符【C】
A.必须为字母B.必须为下划线
C.必须为字母或下划线D.可以是字母、数字和下划线中的任一种字符
17、下面4个选项种,均是合法整型常量的选项是【A】
A.160-0xffff0011B.-0xcdf01a0xe
C.-01986,0120668D.-0x48a2e50x
18、下面4个选项种,均是不合法的整型常量的选项是【D】
A.—00f1-0xffff0011B.-0Xcdf01712,456
C.-0189995e2D.-0x48eg-06803f
19、下面4个选项种,均是不合法的浮点数的选项是【B】
A.160.0.12e3B.1232e4.2.e5
C.-.18123e40.0D.-e3.2341e3
20、在C语言中,int、char和short三种类型数据在