C语言期中试题.docx
《C语言期中试题.docx》由会员分享,可在线阅读,更多相关《C语言期中试题.docx(10页珍藏版)》请在冰豆网上搜索。
![C语言期中试题.docx](https://file1.bdocx.com/fileroot1/2022-12/19/5d2f2346-c3f2-477d-9c83-a4f9ba63c80f/5d2f2346-c3f2-477d-9c83-a4f9ba63c80f1.gif)
C语言期中试题
《C语言程序设计》期中考试卷
一、选择题
1.下面程序段的运行结果是。
for(x=3;x<6;x++)printf((x%2)?
(“**%d”):
(“##%d\n”),x);
A.**3
##4
**5
B.##3
**4
##5
C.##3
**4##5
D.**3##4
**5
2.下面程序的运行结果是。
#include
intmain()
{inti;
for(i=1;i<=5;i++)
switch(i%5)
{case0:
printf("*");break;
case1:
printf("#");break;
default:
printf("\n");
case2:
printf("&");
}return0;}
A.#&&&*
B.#&
&
&*
C.#
&
&
&
*
D.#&
*
3.下面程序的功能是求算式xyz+yzz=532中的x,y,z的值(其中xyz和yzz分别表示一个三位数),请选择填空。
#include
intmain()
{intx,y,z,I,result=532;
for(x=1;x<10;x++)
for(y=1;y<10;y++)
for(;z<10;z++)
{i=100*x+10*y+z+100*y+10*z+z;
if()
printf(“x=%d,y=%d,z=%d\n”,x,y,z);
}
return0;
}
A1.z=xB1.z=1C1.z=0D1.z=y
A2.i/result==1B2.i=resultC2.i!
=resultD2.i==result
4.以下正确的描述是。
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循坏体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出,只能使用goto语句
5.在下面的程序中,。
#include
intmain()
{intt,x;
for(t=1;t<=100;t++)
{scanf("%d",&x);
if(x<0)continue;
printf("%3d",t);
}
return0;
}
A.当x<0时整个循环结束
B.x>=0时什么也不输出
C.printf函数永远也不执行
D.最多允许输出100个非负整数
6.与下面程序段等价的是。
for(n=100;n<=200;n++)
{if(n%3==0)continue;
printf(“%4d”,n);}
A.for(n=100;(n%3)&&n<=200;n++)printf(“%4d”,n);
B.for(n=100;(n%3)||n<=200;n++)printf(“%4d”,n);
C.for(n=100;n<=200;n++)if(n%3!
=0)printf(“%4d”,n);
D.for(n=100;n<=200;n++)
{if(n%3)printf(“%4d”,n);
elsecontinue;
break;
}
7.下面程序的运行结果是。
#include
intmain()
{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);
return0;
}
A.7B.8C.9D.10
二、填空题
1.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
请填空。
intn=0,c;
c=getchar();
while()
{if()n++;
c=getchar()
}
2.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,下面的程序统计买完所需的天数,请填空。
#include
intmain()
{intday=0,x1=1020,x2;
while
{x2=;
x1=x2;
day++;
}
printf(“day=%d\n”,day);
return0;
}
3.当运行以下程序时,从键盘键入right?
<回车>,则下面程序的运行结果是。
#include
intmain()
{charc;
while((c=getchar())!
='?
')putchar(++c);
putchar('\n');
return0;
}
4.下面程序的运行结果是。
#include
intmain()
{inta=2,s=0,n=1,count=1;
while(count<=7){n=n*a;s=s+n;++count;}
printf("s=%d\n",s);
return0;
}
5.当运行以下程序时,从键盘输入“China#<回车>”,则下面程序的运行结果是。
#include
intmain()
{intv1=0,v2=0;charch;
while((ch=getchar())!
='#')
switch(ch)
{case'a':
case'h':
default:
v1++;
case'o':
v2++;
}
printf("%d,%d\n",v1,v2);
return0;
}
6.下面程序段中循环体的执行次数是。
a=10;b=0;
do{b+=2;a-=2+b;}while(a>=0);
7.下面程序段的运行结果是。
x=2;
do{printf(“*”);x--;}while(!
x==0);
8.下面的程序的功能是用do-while语句求1—1000之间满足“用3除余2,用5除余3,用7除余2”的数,且一行只打印5个数,请填空。
#include
intmain()
{inti=1,j=0;
do
{if
{printf(“%4d”,i);
j++;
ifprintf(“\n”);
}
i=i+1;
}while(i<1000);
return0;
}
9.当运行以下程序时,从键盘输入“12345-1<回车>”,则下面程序的运行结果是。
#include
intmain()
{intk=0,n;
do
{scanf("%d",&n);k+=n;}while(n!
=-1);
printf("k=%dn=%d\n",k,n);
return0;
}
10.下面程序的运行结果是。
#include
intmain()
{inti=0,x=0,y=0;
do
{++i;
if(i%2!
=0){x=x+i;i++;}
y=y+i++;
}while(i<=7);
printf("x=%d,y=%d\n",x,y);
return0;
}
11.下面程序段是找出整数的所有因子。
请填空。
#include
intmain()
{intx,i;
scanf("%d",&x);
i=1;
for(;;)
{if(x%i==0)printf("%3d",i);
i++;}return0;}
12.鸡、兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,x代表有多少只鸡,y代表有多少只兔子,请填空完成程序。
for(x=1;x<=30;x++)
{y=30-x;
if()printf(“%d,%d\n”,x,y);
}
13.下面程序段的运行结果是。
for(a=1,i=-1;-1<=i<1;i++)
{a++;printf(“%2d”,a);}
printf(“%2d”,i);
14.下面程序的功能是1-3+5-7+……-99+101的值。
请填空。
#include
intmain()
{inti,t,s=0,q=1;
for(i=1;i<=101;i+=2)
{t=;s=s+t;q=;}
printf("%d\n",s);
return0;
}
15.以下程序的功能是根据公式e=1+1/1!
+1/2!
+1/3!
+……,求e的近似值,精度要求为10-6。
请填空。
#include
intmain()
{inti;doublee,n;
;n=1.0;
for(i=1;;i++)
{n/=i;e+=n;}
printf("e=%f\n",e);
return0;
}
16.下面程序的运行结果是。
#include
intmain()
{inti;
for(i=1;i<=5;i++)
switch(i%2)
{case0:
i++;printf("#");break;
case1:
i+=2;printf("*");
default:
printf("\n");
}
return0;
}
17.下面程序的功能是统计用数字0-9可以组成多少个没有重复数位的3位偶数。
请填空。
#include
intmain()
{intn=0,i,j,k;
for(i=1;i<=9;i++)
for(k=0;k<=8;)
if(k!
=i)
for(j=0;j<=9;j++)
if()
{printf("%d\n",i*100+j*10+k);
n++;
}
printf("n=%d\n",n);
return0;
}
18.下面程序的功能是输出1-100之间满足每位数的乘积大于每位数的和的数。
请填空。
#include
intmain()
{intn,k=1,s=0,m;
for(n=1;n<=100;n++)
{k=1;s=0;
;
while()
{k*=m%10;
s+=m%10;
;
}
if(k>s)printf("%5d",n);
}
printf("\n");
return0;
}
三、编程题
1.打印出以下图形(10’)
********
**s*u*s*
********
2.有三个数a、b、c,由键盘输入,输出其中第二大的数。
(12’)
3.编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。
(15’)
4.输入一批非0数,直到输入0时为止,计算其中奇数的平均值和偶数的乘积。
(15’)
5.有一口深度为h米的水井,井底有一只青蛙,它每天白天能够沿井壁向上爬m米,夜里则顺井壁向下滑n米,若青蛙从某个早晨开始向外爬,试编写一个函数:
对于任意指定的h,m,n值(均为自然数),计算青蛙多少天能够爬出井口?
(15’)