a:
d的值是:
A)4B)3C)2D)1
D
7.以下程序的输出结果是:
main()
{inta=12,b=12;
printf("%d,%d\n",--a,++b);
}
A)10,10B)12,12C)11,10D)11,13
D
8.若有代数式(3ae)/(bc),则下面不正确的C语言表达式是:
A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*3
C
9.已知x=43,ch='A',y=0,则表达式(x>=y&&ch<'B'&&!
y)的值是:
A)0B)语法错C)1D)"假"
C
10.下面程序的输出结果是:
main()
{inta=-1,b=4,k;
k=(a++<=0)&&(!
(b--<=0));
printf("%d,%d,%d\n",k,a,b);
}
A)1,1,2B)1,0,3C)0,1,2D)0,0,3
B
11.已知字母A的ASCII码为十进制的65,下面程序的输出是:
main()
{charch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
A)67,DB)B,CC)C,DD)不确定的值
A
12.下面程序的输出的是
main()
{intx=10,y=3;
printf("%d\n",y=x/y);
}
A)0B)1C)3D)不确定的值
C
二、程序设计题
1.从键盘上输入一个小写字母,编程输出其对应的大写字母以及它们的十进制ASCII码。
程序如下:
#include
voidmain()
{
charch;
printf("Pleaseinputalowercharacter:
");
ch=getchar();
printf("Loweris%c,ASCIIis%d\n",ch,ch);
printf("Upperis%c,ASCIIis%d\n",ch-32,ch-32);
}
2.一个水分子的质量约为3.0×10-23g,1夸脱水大约950g。
编写一个程序,要求输入水的夸脱数,然后显示这么多水中包含多少水分子。
程序如下:
#include
voidmain()
{
doubleq,m;
printf("Pleaseinputthequalityofwater(quart):
");
scanf("%lf",&q);
m=q*950.0/(3.0e-23);
printf("Themoleculusof%fquartwateris%e\n",q,m);
}
3.写出下列程序的运行结果:
#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\b%c%c\n”,c4,c5);
}
运行结果:
aabbccabc
AN
4.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'。
写出程序,使之输出下面的结果。
a=3b=4c=5
x=1.200000,y=2.400000,z=-3.600000
x+y=3.60y+z=-1.20z+x=-2.40
u=51274n=127865
c1=‘a’orc1=97
c2=‘b’orc2=98
程序如下:
#include
voidmain()
{
inta=3,b=4,c=5;
doublex=1.2,y=2.4,z=-3.6;
unsignedintu=51274,n=128765;
charc1='a',c2='b';
printf("a=%db=%dc=%d\n",a,b,c);
printf("x=%f,y=%f,z=%f\n",x,y,z);
printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%un=%u\n",u,n);
printf("c1='%c'orc1=%d\n",c1,c1);
printf("c2='%c'orc2=%d\n",c2,c2);
}
5.用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'。
说明在键盘上如何输入数据。
#include
voidmain()
{
inta,b;
floatx,y;
charc1,c2;
scanf(“a=%db=%d”,&a,&b);
scanf(“x=%fy=%e”,&x,&y);
scanf(“c1=%c,c2=%c”,&c1,&c2);
}
输入数据:
a=3b=7x=8.5y=7.182e1c1=A,c2=a<回车>
验证程序:
#include
voidmain()
{
inta,b;
floatx,y;
charc1,c2;
scanf("a=%db=%d",&a,&b);
scanf("x=%fy=%e",&x,&y);
scanf("c1=%c,c2=%c",&c1,&c2);
printf("a=%db=%d\n",a,b);
printf("x=%.2fy=%.2f\n",x,y);
printf("c1=%c,c2=%c\n",c1,c2);
}
6.编写程序,输入一个华氏温度,求出相应的摄氏温度(输出结果保留两位有效数字)。
公式为:
程序如下:
#include
voidmain()
{
floatf,c;
printf("Pleaseinputf=");
scanf("%f",&f);
c=5.0/9*(f-32);
printf("f=%0.2f,c=%0.2f\n",f,c);
}
习题3
一、基础题
1.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中值为0的表达式是
A)'a'&&'b'B)a<=b
C)a||b+c&&b-cD)!
((a
c||1)
D
2.设x.y.z.t均为int型变量,则执行以下语句后,t的值为
x=y=z=1;
t=++x||++y&&++z;
A)不定值B)4C)1D)0
C
3.若运行下面程序时,给变量a输入15,则输出结果是()。
main()
{inta,b;
scanf("%d",&a);
b=a>15?
a+10:
a-10;
printf("%d\n",b);
}
A)5B)25C)15D)10
A
4.下面程序的输出结果是
#include
main()
{inta=2,b=7,c=5;
switch(a>0)
{case1:
switch(b<0)
{case1:
printf("@");break;
case0:
printf("!
");break;
}
case0:
switch(c==5)
{case0:
printf("*");break;
case1:
printf("#");break;
default:
printf("%%");break;
}
default:
printf("&");
}printf("\n");
}
A)&B)!
#&C)%%D)@*&
B
5.以下程序的运行结果是()。
main()
{inta=0,b=1,c=0,d=20,x;
if(a)d=d-10;
elseif(!
b)
if(!
c)x=15;
elsex=25;
printf("%d\n",d);
}
A)15B)25C)20D)10
C
6.若k是int型变量,且有下面的程序片段:
k=8;
if(k<=0)
if(k==0)printf("####")
elseprintf("&&&&");
elseprintf("****");
上面程序片段的输出结果是
A)####B)&&&&C)****D)有语法错误,无输出结果
D(第一个printf语句少分号)
7.假定所有变量均已正确说明,下列程序段运行后x的值是
a=b=c=0;x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
A)34B)4C)35D)3
B
8.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是
for(i=5;i;i--)
for(j=0;j<4;j++){...}
A)20B)25C)24D)30
A
9.设i,j,k均为int型变量,则执行完下面的for循环后,k的值为
for(i=0,j=10;i<=j;i++,j--)k=i+j;
A)12B)10C)11D)9
B
10.有以下程序段
intk=0;
while(k=1)k++;
while循环执行的次数是
A)无限次B)有语法错,不能执行C)一次也不执行D)执行一次
A
11.C语言中while和do-while循环的主要区别是()。
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
A
12.以下叙述正确的是()。
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
B
13.对下面程序段,描述正确的是()。
for(t=1;t<=100;t++)
{scanf("%d",&x);
if(x<0)continue;
printf("%d\n",t);
}
A)当x<0时,整个循环结束B)当x>=0时,什么也不输出
C)printf函数永远也不执行D)最多允许输出100个非负整数
D
14.以下程序的输出结果是()。
#include
main()
{inti;
for(i=1;i<=5;i++)
if(i%2)
printf("*");
elsecontinue;
printf("#");
printf("$\n");
}
A)***#$B)#*#*#*$C)*#*#*#$D)**#*$
A
15.以下程序的输出结果是()。
#include
main()
{intcount,i=0;
for(count=1;count<=4;count++)
{i+=2;printf("%d",i);}
}
A)20B)246C)2468D)2222
C
16.下面程序的输出结果是()。
main()
{unsignedintnum,k;
num=26;k=1;
do{
k*=num%10;
num/=10;
}while(num);
printf("%d\n",k);
}
A)2B)12C)60D)18
B
17.下面程序的输出结果是()。
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
A)10192B)9876C)10990D)101091
D
18.设有以下程序
main()
{intn1,n2;
scanf("%d",&n2);
while(n2!
=0)
{n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序运行后,如果从键盘上输入1298,则输出结果为(8921)。
8921
19.下面程序的运行结果是()。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",--i);
}
A)4B)3C)5D)6
B
20.以下程序运行后的输出结果是()。
#include
main()
{ints=0,k;
for(k=7;k>=0;k--)
{switch(k)
{
case1:
case4:
case7:
s++;break;
case2:
case3:
case6:
break;
case0:
case5:
s+=2;break;}
}
printf("s=%d\n",s);
}
A)s=5B)s=1C)s=3D)s=7
D
21.下面程序的功能是:
计算1到10之间奇数之和及偶数之和,请填空。
#include
main()
{inta,b,c,i;
a=c=0;
for(i=0;i<=10;i+=2)
{a+=i;
______;
c+=b;
}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11);
}
A)i+=2B)i++C)b=b+1D)b=i+1
D
22.运行以下程序后,如果从键盘上输入12,8<回车>,则输出结果为()。
main()
{inta,b,n1,n2,t;
scanf("%d,%d",&n1,&n2);
if(n1>n2)
{t=n1;n1=n2;n2=t;}
a=n1;b=n2;
while(b!
=0)
{t=a%b;
a=b;
b=t;}
printf("%d,%d\n",a,n1*n2/a);
}
A)2,6B)4,24C)4,12D)8,96
B
二、程序设计题
1.输入一个实数x,计算并输出下式的值,直到最后一项的绝对值小于10-5(保留两位小数)。
程序如下:
#include
#include
main()
{
floatx;
intn=1;
floats=0.0,term;
printf("Pleaseinputthex:
");
scanf("%f",&x);
term=1.0*x/n;
while(fabs(term)>10e-5)
{
s=s+term;
n=n+1;
term=term*x/n;
}
printf("Theresultis:
%.2f\n",s);
}
2.输入园的半径r,求该圆的周长、面积。
结果保留两位小数。
程序如下:
#include
voidmain()
{
floatpi=3.14,s,c,r;
printf("请输入圆的半径:
");
scanf("%f",&r);
s=pi*r*r;
c=2*pi*r;
printf("圆的面积为:
%f,周长为:
%f\n",s,c);
}
3.有一分数序列,求出这个数列前20项之和。
程序如下:
#include
voidmain()
{
inti,n=20;
doubles=0,a,b,c;
for(a=2,b=1,s=0,i=1;i<=n;i++){
s+=a/b;
c=b,b=a,a=a+c;//调整下一项的分子分母
}
printf("s=%f\n",s);
}
4.百钱买百鸡问题:
鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
凡百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
程序如下:
#include
voidmain()
{
intCock,Hen,Chick;
for(Cock=0;Cock<=20;Cock++){
for(Hen=0;Hen<=33;Hen++){
Chick=100-Cock-Hen;
if(Cock*5+Hen*3+Chick/3.0==100){
printf("Cock=%d,Hen=%d,Chick=%d\n",Cock,Hen,Chick);
}
}
}
}
5.输入两个正整数m和n,求其最大公约数和最小公倍数。
提示:
求最大公约数的算法如下:
(1)将两个数中较大的放在变量m中,较小的放在n中;
(2)求出m被n除后的余数;
(3)若余数为0,转步骤(7),否则转步骤(4);
(4)把除数作为新的被除数,余数作为新的除数;
(5)求出新的余数;
(6)重复步骤(3)~(5);
(7)输出n,即为最大公约数。
最小公倍数=(m×n)÷最大公约数。
程序如下:
#include
main()
{
intp,r,n,m,temp;
printf("请输入两个正整数n,m:
");
scanf("%d,%d",&n,&m);
if(n{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!
=0)
{
r=n%m;
n=m;
m=r;
}
printf("它们的最大公约数为:
%d\n",n);
printf("它们的最小公倍数为:
%d\n",p/n);
}
6.编程求Sn=a+aa+aaa+…+aaa…a的值,其中a和n的值从键盘上输入。
例如当a=2,n=4时,Sn=2+22+222+2222=2468。
程序如下:
#include
main()
{
inta,n,i=1,sn=0,tn=0;
printf("a,n=");
scanf("%d,%d",&a,&n);
while(i<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
i++;
}
printf("a+aa+aaa+....=%d\n",sn);
}
7.编写一程序,功能是输入一个整数,将它反向输出。
例如,输入12345,则输出54321。
程序如下:
#include
voidmain()
{
intx;
printf("inputx:
");
scanf("%d",&x);
while(x>0){
printf("%d",x%10);
x=x/10;
}
}
8.编程解决数学题:
有一长阶梯,若每步跨2阶,最后剩1阶;若每步跨3阶,最后剩2阶;若每步跨5阶,最后剩4阶;若每步跨6阶,最后剩5阶;只有每步跨7阶,最后才正好1阶不剩。
问这条阶梯共有多少阶?
程序如下:
#include
voidmain()
{
intStep=0;
while
(1)
{
if((Step%2==1)&&(Step%3==2)&&(Step%5==4)&&(Step%6==5)&&(Step%7==0))break;
Step++;
}
printf("TheStepis%d\n",Step);
}
9.编程解决三色球问题。
若一个口袋中放有12个球,其中3个红色球,3个白色球,6个黑色球,从中任取8个球,问共有多少种不同的颜色搭配?
程序如下:
#include
main()
{
intwhite,red,black,count=0;
for(white=1;white<=3;white++)
for(red=1;red<=3;red++)
{
black=8-white-red;
if(black<=6){
count=count+1;
printf("white\t%d\tred\t%d\tblack\t%d\n",white,red,black)