k:
c
c:
a);
}
A)4B)3C)2D)1
【题10】执行以下程序段后,变量a,b,c的值分别是 。
intx=10,y=9;
inta,b,c;
a=(--x==y++)?
--x:
++y;
b=x++;
c=y;
A)a=9,b=9,c=9B)a=8,b=8,c=10
C)a=9,b=10,c=9D)a=1,b=11,c=10
【题11】以下程序的运行结果是 。
#include
voidmain(void)
{
intx=1,y,z;
x*=3+2;
printf(“%d\t”,x);
x*=y=z=5;
printf(“%d\t”,x);
x=y==z;
printf(“%d\n”,x);
}
【题12】当a=3,b=2,c=1时,表达式f=a>b>c的值是【 】。
【题13】若a=6,b=4,c=2,则表达式!
(a-b)+c-1&&b+c/2的值是【 】。
【题14】设有变量定义:
inta=10,c=9;则表达式(--a!
=c++)?
--a:
++c的值是【 】。
【题15】若a=2,b=4,则表达式!
(x=a)||(y=b)&&0的值是【 】。
【题16】若a=3,b=4,c=5,则表达式a||b+c&&b==c的值是【 】。
【题17】以下程序的运行结果是 。
main()
{
intx,y,z;
x=1;y=2;z=3;
x=y--<=x||x+y!
=z;
printf(“%d,%d”,x,y);
}
【题18】请阅读以下程序:
main()
{
intt,h,m;
scanf(“%d”,&t);
h=(t/100)%12;
if(h==0)h=12;
printf(“%d”,h);
m=t%100;
if(m<10)printf(“0”);
printf(“%d”,m);
if(t<1200||t==2400)
printf(“AM”);
elseprintf(“PM”);
}
若运行时输入:
1605<回车>时,程序的运行结果是 。
【题19】以下程序实现:
输入三个整数,按从大到小的顺序进行输出。
请在【】内填入正确内容。
main()
{
intx,y,z,c;
scanf(“%d%d%d”,&x,&y,&z);
if(【1】)
{c=y;y=z;z=c;}
if(【2】)
{c=x;x=z;z=c;}
if(【3】)
{c=x;x=y;y=c;}
printf(“%d,%d,%d”,x,y,z);
}
【题20】以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。
如‘a’变成‘f’,‘w’变成‘b’。
请在【】内填入正确内容。
#include“stdio.h”
main()
{
charc;
c=getchar();
if(c>=‘a’&&c<=‘u’)【1】;
elseif(c>=‘v’&&c<=‘z’)【2】;
putchar(c);
}
【题21】以下程序根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。
请在【】内填入正确内容。
#include“math.h”
main()
{
floata,b,c;
floats,area;
scanf(“%f%f%f”,&a,&b,&c);
if(【1】)
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“%f”,area);
if(【2】)
printf(“等边三角形”);
elseif(【3】)
printf(“等腰三角形”);
elseif((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))
printf(“直角三角形”);
elseprintf(“一般三角形”);
}
elseprintf(“不能组成三角形”);
}
【题22】执行以下的C语言程序段后,a=【1】,b=【2】,c=【3】。
intx=10,y=9;
inta,b,c;
a=(x--==y++)?
x--:
y++;
b=x++;
c=y;
【题23】设有intx=1,y=0;,则以下表达式的值为【 】。
x-->(y+x)?
10:
12.5>y++?
‘A’:
‘Z’
【题24】以下程序段的运行结果是 。
intx=1,y=0;
switch(x)
{
case1:
switch(y)
{
case0:
printf(“**1**\n”);break;
case1:
printf(“**2**\n”);break;
}
case2:
printf(“**3**\n”);
}
【题25】某个自动加油站有‘a’,‘b’,‘c’三种汽油,单价分别为1.50,1.35,1.18(元/千克),也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠。
本程序针对用户输入加油量a,汽油品种b和服务类型c(‘f’――自动,‘m’――自己,‘e’――协助),输出应付款m。
请在【】内填入正确内容。
main()
{
floata,r1,r2,m;
charb,c;
scanf(“%f%c%c”,&a,&b,&c);
switch(b)
{
case‘a’:
r1=1.5;break;
case‘b’:
【1】;break;
case‘c’:
r1=1.18;break;
}
switch(c)
{
case‘f’:
r2=0;break;
case‘m’:
r2=0.05;break;
case【2】:
r2=0.1;break;
}
m=【3】;
printf(“%f”,m);
}
第六章 补充作业
【题1】设有以下程序段
intx=0,s=0;
while(!
x!
=0)s+=++x;
printf(“%d”,s);
则 。
A)运行程序段后输出0B)运行程序段后输出1
C)程序段中的控制表达式是非法的D)程序段执行无限次
【题2】语句while(!
E);中的表达式!
E等价于 。
A)E==0B)E!
=1C)E!
=0D)E==1
【题3】下面程序段的运行结果是 。
a=1;b=2;c=2;
while(a
printf(“%d,%d,%d”,a,b,c);
A)1,2,0B)2,1,0C)1,2,1D)2,1,1
【题4】设有程序段
t=0;
while(printf(“*”))
{
t++;
if(t<3)break;
}
则下面描述正确的是 。
A)其中循环控制表达式与0等价B)其中循环控制表达式与‘0’等价
C)其中循环控制表达式是不合法的D)以上说法都不对
【题5】下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。
#include
main()
{
intm=0,n=0;
charc;
while((【1】)!
=‘\n’)
{
if(c>=‘A’&&c<=‘Z’)m++;
if(c>=‘a’&&c<=‘z’)n++;
}
printf(“%d\n”,m【2】);
}
【1】A)c=getchar()B)getchar()C)scanf(“%c”,c)
【2】A)n:
mB)m:
nC)m:
mD)n:
n
【题6】若运行以下程序时,从键盘输入2473<回车>,则下面程序的运行结果是 。
#include
main()
{
intc;
while((c=getchar())!
=‘\n’)
switch(c-‘2’)
{
case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
printf(“\n”);
}
A)668977B)668966C)66778777D)6688766
【题7】以下能正确计算1×2×3×…×10的程序段是 。
A)do{i=1;s=1;B)do{i=1;s=0;
s=s*i;s=s*i;
i++;i++;
}while(i<=10);}while(i<=10);
C)i=1;s=1;D)i=1;s=0;
do{s=s*i;do{s=s*i;
i++;i++;
}while(i<=10);}while(i<=10);
【题8】若有如下语句
intx=3;
do{printf(“%d\n”),x-=2;}while(!
(--x));
则上面程序段 。
A)输出的是1B)输出的是1和-2C)输出的是3和0D)是死循环
【题9】下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。
请选择填空。
#include
main()
{
inti=0,j,k;
do{i++;k=316-13*i;}while( );
j=k/11;
printf(“316=13*%d+11*%d”,i,j);
}
A)k/11B)k%11C)k/11==0D)k%11==0
【题10】下面程序的运行结果是 。
#include
main()
{
inta=1,b=10;
do{b-=a;a++;}while(b--<0);
printf(“a=%d,b=%d\n”,a,b);
}
A)a=3,b=11B)a=2,b=8C)a=1,b=-1D)a=4,b=9
【题11】以下for循环的执行次数是 。
for(x=0,y=0;(y=123)&&(x<4);x++)
A)是无限循环B)循环次数不定C)执行4次D)执行3次
【题12】以下不是无限循环的语句为 。
A)for(y=0,x=1;x>++y;x=i++)i=x
B)for(;;x++=i);
C)while
(1){x++;}
D)for(i=10;;i--)sum+=i;
【题13】下面程序段的运行结果是 。
for(y=1;y<10;)y=((x=3*y,x+1),x-1);
printf(“x=%d,y=%d”,x,y);
A)x=27,y=27B)x=12,y=13C)x=15,y=14D)x=y=27
【题14】有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。
下面程序是求这堆零件总数,请选择填空。
#include
main()
{
inti;
for(i=100;i<200;i++)
if((i-2)%4==0)
if(!
((i-3)%7))
if( )
printf(“%d”,i);
}
A)i%9=5B)i%9!
=5C)(i-5)%9!
=0D)i%9==5
【题15】下面程序是输出一个正整数等差数列的前十项,此数列前四项之和及之积分别是26和880,请选择填空。
#include
main()
{
inta,d,i,s,f,x;/*a是第一项*/
for(a=1;a<30;a++)
for(d=1;【1】;d++)
{
s=0;f=1;x=a;
for(i=1;i<=4;i++)
{
s=s+x;
f=f*x;
x=x+d;
}
if(s==26&&f==880)
for(i=0;i<10;i++)
printf(“%3d”,【2】);
}
printf(“\n”);
}
【1】A)d<=aB)空C)d<=5D)d【2】A)a+i*dB)i*dC)a+(i+1)*dD)a+d
【题16】下面程序的功能是用公式
求π的近似值,直到最后一项的小于10-6为止。
请填空。
#include
#include
main()
{
longi=1;
【1】pi=0;
while(i*i<=10e+6){pi=【2】;i++;}
pi=sqrt(6.0*pi);
printf(“pi=%10.6f\n”,pi);
}
【题17】有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?
请填空。
#include
main()
{
intday,x1,x2;
day=0;x1=1020;
while(【1】){x2=【2】;x1=x2;day++;}
printf(“day=%d\n”,day);
}
【题18】下面程序的功能是统计正整数的各位数字中零的个数,并求各位数字中的最大者。
请填空。
#include
main()
{
intn,count,max,t;
count=max=0;
scanf(“%d”,&n);
do{
t=【1】;
if(t==0)++count;
elseif(maxn/=10;
}while(n);
printf(“count=%d,max=%d”,count,max);
}
【题19】下面程序的功能是求出用数字0至9可以组成多少个没有重复的三位偶数。
请填空。
#include
main()
{
intn,i,j,k;
n=0;
for(i=1;i<=9;i++)
for(k=0;k<=8;【1】)
if(k!
=i)
for(j=0;j<=9;j++)
if(【2】)n++;
printf(“n=%d\n”,n);
}
【题20】下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数。
请填空。
#include
main()
{
intn,k=1,s=0,m;
for(n=1;n<=100;n++)
{
k=1;s=0;
【1】;
while(【2】)
{
k*=m%10;
s+=m%10;
【3】;
}
if(k>s)printf(“%d”,n);
}
}
【题21】下面程序的运行结果是 。
#include
main()
{
inti=1;
while(i<=15)
if(++i%3!
=2)continue;
elseprintf(“%d”,i);
printf(“\n”);
}
【题22】下面程序的运行结果是 。
#include
main()
{
inti,j,k=19;
while(i=k-1)
{
k-=3;
if(k%5==0){i++;continue;}
elseif(k<5)break;
i++;
}
printf(“i=%d,k=%d\n”,i,k);
}
编程题
【题1】编程实现以下功能:
读入两个运算数(data1和data2)及一个运算符(op),计算表达式data1opdata2的值,其中op可为+,-,*,/(用switch语句实现)。
【题2】每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数达到不超过100的最大值。
编写程序求每天平均花多少钱?
【题3】编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。