C语言机试题作答.docx
《C语言机试题作答.docx》由会员分享,可在线阅读,更多相关《C语言机试题作答.docx(65页珍藏版)》请在冰豆网上搜索。
C语言机试题作答
第一部分-分支、循环部分
1、某一次考试之后,需要统计考生(10人)的平均成绩,并找出其中的最高分和最低分。
2、从键盘输入两个正整数,输出这两个整数的商,要求商的小数点后保留5位。
例如输入355和113,输出3.14159.
#include
voidmain()
{
inta,b;
floats;
printf("Pleaseentertwonumbers:
\n");
scanf("%d%d",&a,&b);
s=(float)a/b;
printf("%d/%d=%.5f\n",a,b,s);
}
3、用while循环结构编写程序打印ASCII码为33-127的字符
#include
voidmain()
{
inti=33;
while(i<=127)
{
printf("%3d....%2c\t",i,i);
if((i-32)%4==0)
printf("\n");
i++;
}
}
4、用do-while循环结构编写程序打印ASCII码为33-127的字符
#include
voidmain()
{
inti=33;
do
{
printf("%3d....%2c\t",i,i);
if((i-32)%4==0)
printf("\n");
i++;
}while(i<=127);
}
5、用for循环结构编写程序打印ASCII码为33-127字符
#include
voidmain()
{
inti;
for(i=33;i<=127;i++)
{
printf("%3d....%2c\t",i,i);
if((i-32)%4==0)
printf("\n");
}
}
6、在1-500中,找出能同时满足用3除余2,用5除余3,用7除余4的所有整数,用循环结构
#include
voidmain()
{
inti;
for(i=1;i<=500;i++)
{
if((i%3==2)&&(i%5==3)&&(i%7==4))
printf("%d\t",i);
}
printf("\n");
}
7、输入一个整数将其倒着输出,如54321
8、计算s=1+1/3+1/5+…+1/n,截止到1/n<10-4
#include
voidmain()
{
intn=1;
floatt,s;
s=0;
do
{
t=(float)1/n;
s=s+t;
n+=2;
}while(t>=1e-4);
printf("s=%2.1f\n",s);
}
9、从键盘输入一整数n,计算1*1+2*2+...+n*n的值
#include
voidmain()
{
intn,i,t;
longs=0;
printf("Pleaseenteranumber:
\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=i*i;
s=s+t;
}
printf("1*1+2*2+...+%d*%d=%ld\n",n,n,s);
}
10、用while循环计算1+2+……+100的和
#include
voidmain()
{
intn=1,s=0;
while(n<=100)
{
s+=n;
n++;
}
printf("1+2+……+100=%d\n",s);
}
11、用dowhile循环计算1+2+……+100的和
#include
voidmain()
{
intn=1,s=0;
do
{
s+=n;
n++;
}while(n<=100);
printf("1+2+……+100=%d\n",s);
}
12、用for循环计算1+2+……+100的和
#include
voidmain()
{
intn=1,s=0;
for(n=1;n<=100;n++)
s+=n;
printf("1+2+……+100=%d\n",s);
}
13、输入一个小于等于10的整数n,计算n!
#include
voidmain()
{
intn,i;
longs=1;
printf("Pleaseenterann(<10):
\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s*i;
printf("%d!
=%d\n",n,s);
}
14、输入两个正整数m和n,计算m!
+n!
,m和n的值均小于10。
#include
voidmain()
{
intm,n,i;
longsm=1,sn=1;
printf("Pleaseentermandn(<10):
\n");
scanf("%d%d",&m,&n);
for(i=1;i<=m;i++)
sm=sm*i;
for(i=1;i<=n;i++)
sn=sn*i;
printf("%d!
+%d!
=%d\n",m,n,sm+sn);
}
15、用循环语句,计算1~100之间的所有3的倍数之和
#include
voidmain()
{
intsum=0,i;
for(i=1;i<=100;i++)
{
if(i%3==0)
{
printf("i=%d\t",i);
sum=sum+i;
}
}
printf("\nsum=%d\n",sum);
}
16、用循环语句,计算100-200之间的所有7的倍数之和
#include
voidmain()
{
intsum=0,i;
for(i=100;i<=200;i++)
{
if(i%7==0)
{
printf("i=%d\t",i);
sum=sum+i;
}
}
printf("\nsum=%d\n",sum);
}
17、输出1-100之间,7的整数倍数或数字尾数为7的数字,统计出这些数字个数
#include
voidmain()
{
intcount=0,i;
for(i=1;i<=100;i++)
{
if((i%7==0)||(i%10==7)||(i==7))
{
printf("i=%d\t",i);
count++;
}
}
printf("\ncount=%d\n",count);
}
18、输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数
19、输入一个整数,统计它有几位数
20、编写程序,输出1到50中间所有能被3整除的正整数
#include
voidmain()
{
inti;
for(i=1;i<=50;i++)
{
if(i%3==0)
printf("i=%d\t",i);
}
printf("\n");
}
21、把100~200之间不能被3整除的输出
#include
voidmain()
{
inti;
for(i=100;i<=200;i++)
{
if(i%3!
=0)
printf("i=%d\t",i);
}
printf("\n");
}
22、编程Y=1+3+5+7+...111
#include
voidmain()
{
inty,i;
y=0;i=1;
while(i<=111)
{
y=y+i;
i+=2;
}
printf("1+3+5+7+...111=%d\n",y);
}
23、编程y=1*1/2*1/3*1/4*1/5*1/6*...前十项之积
24、编程实现九九乘法表
#include
voidmain()
{
inti,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%d\t",j,i,i*j);
printf("\n");
}
}
25、求1到100奇数和
#include
voidmain()
{
inti,sum;
sum=0;
for(i=1;i<=100;i++)
{
if(i%2!
=0)
sum+=i;
}
printf("sum=%d\n",sum);
}
26、求1到100偶数和
#include
voidmain()
{
inti,sum;
sum=0;
for(i=1;i<=100;i++)
{
if(i%2==0)
sum+=i;
}
printf("sum=%d\n",sum);
}
27、编程求200以内所有质数(素数)
28、从键盘输入一个整数,求该数的绝对值
#include
voidmain()
{
intx,tx;
printf("Pleaseentetanumber:
\n");
scanf("%d",&x);
tx=x;
if(x<0)
tx=-x;
printf("|%d|=%d\n",x,tx);
}
29、从键盘输入+、-、*、/中的任一个,输出对应的英文单词:
plus、minus、mutiply、divide,如输入的不是这4个字符中的任一个,则输出“sorry,youarewrong”。
#include
voidmain()
{
charops;
printf("Pleaseenter:
\n");
scanf("%c",&ops);
switch(ops)
{
case'+':
printf("plus\n");break;
case'-':
printf("minus\n");break;
case'*':
printf("mutiply\n");break;
case'/':
printf("divide\n");break;
default:
printf("sorry,youarewrong\n");
}
}
30、从键盘输入一个字符,判断其是否为a,r,或f,并输出相应的信息(不区分大小写)。
#include
voidmain()
{
charops;
printf("Pleaseenter:
\n");
scanf("%c",&ops);
switch(ops)
{
case'a':
case'A':
printf("a\n");break;
case'r':
case'R':
printf("r\n");break;
case'f':
case'F':
printf("f\n");break;
}
}
31、编一程序,对于给定的一个百分制成绩,输出用像'A','B','C','D','E'表示的等级成绩。
设:
90分以上为'A',80~89分为'B',70~79分为'C',60~69分'D',60分以下为'E'。
(要求用switch语句编程)。
#include
voidmain()
{
intscore,s;
printf("Pleaseenterthescores:
\n");
scanf("%d",&score);
if((score>=0)&&(score<=100))
{
s=score/10;
switch(s)
{
case10:
case9:
printf("A\n");break;
case8:
printf("B\n");break;
case7:
printf("C\n");break;
case6:
printf("D\n");break;
default:
printf("E\n");
}
}
else
printf("Youarewrong!
\n");
}
32、输入一个整数,判断它能否被3,5,7整除。
#include
voidmain()
{
intx;
printf("Pleaseenterx:
\n");
scanf("%d",&x);
if(x>0)
{
if(x%3==0)
printf("%d能被3整除\n",x);
if(x%5==0)
printf("%d能被5整除\n",x);
if(x%7==0)
printf("%d能被7整除\n",x);
}
else
printf("Youarewrong!
\n");
}
33、用整数1~12依次表示1~12月,由键盘输入一个月份数,输出对应的季节英文名称(12~2月为冬季;3~5月为春季;6~8月为夏季;9~11月为秋季。
要求用if嵌套实现)。
#include
voidmain()
{
intmonth;
printf("Pleaseenter:
\n");
scanf("%d",&month);
if((month>=1)&&(month<=12))
{
if((month>=3)&&(month<=5))
printf("Spring\n");
elseif((month>=6)&&(month<=8))
printf("Summer\n");
elseif((month>=9)&&(month<=11))
printf("Fall\n");
else
printf("Winter\n");
}
else
printf("Youarewrong!
\n");
}
34、编写输入整数a,b,c,当a为1时显示b和c之和,a为2时显示b与c之差,a为3时显示b*c之积,a为4时取b/c之商,a为其他数值时不做任何操作的程序。
#include
voidmain()
{
inta,b,c;
printf("Pleaseentera,bandc:
\n");
scanf("%d%d%d",&a,&b,&c);
switch(a)
{
case1:
printf("b+c=%d\n",b+c);break;
case2:
printf("b-c=%d\n",b-c);break;
case3:
printf("b*c=%d\n",b*c);break;
case4:
printf("b/c=%f\n",(float)b/c);break;
default:
;
}
}
35、编写输入一个整数,将其数值按小于10,10~99,100~999,1000以上分类并显示。
#include
voidmain()
{
intx;
printf("Pleaseenterx:
\n");
scanf("%d",&x);
if((x>0)&&(x<=10))
printf("%d小于10\n",x);
elseif((x>10)&&(x<=99))
printf("%d位于10~99\n");
elseif((x>=100)&&(x<=999))
printf("%d位于100~999\n");
elseif(x>=1000)
printf("%d在1000以上\n");
}
36、编写输入一个整数,当为65时显示A,66时显示B,67时显示C,其他值时显示END的程序。
#include
voidmain()
{
intx;
printf("Pleaseenterx:
\n");
scanf("%d",&x);
switch(x)
{
case65:
printf("A\n");break;
case66:
printf("B\n");break;
case67:
printf("C\n");break;
default:
printf("END\n");
}
}
37、编程实现:
输入4个整数,要求按由小到大输出
#include
#defineN4
voidmain()
{
inta[N];
inti,j,t;
printf("Pleaseenterthevalueofa:
\n");
for(i=0;iscanf("%d",&a[i]);
for(i=0;i{
for(j=0;jif(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<4;i++)
printf("%d\t",a[i]);
}
38、企业发放的奖金根据利润的提成,利润I低于或等于10万元的,奖金可提10%;利润高于10万元低于20万时,低于10万的部分按10%提成,高于10万元的部分,可提成7.5%;20万元
从键盘输入当月利润I,求应发奖金部分。
#include
voidmain()
{
floati,jiangjin;
printf("当月利润:
\n");
scanf("%f",&i);
if(i<=10)
jiangjin=i*0.1;
elseif(i<=20)
jiangjin=(i-10)*0.075+10*0.1;
elseif(i<=40)
jiangjin=(i-20)*0.05+10*0.075+10*0.1;
else
jiangjin=(i-40)*0.01+20*0.05+10*0.075+10*0.1;
printf("应发奖金是%2.2f万\n",jiangjin);
}
39、给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。
90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。
#include
voidmain()
{
intscore,s;
printf("Pleaseenterthescore:
\n");
scanf("%d",&score);
if((score>=0)&&(score<=100))
{
s=score/10;
switch(s)
{
case10:
case9:
printf("A\n");break;
case8:
printf("B\n");break;
case7:
printf("C\n");break;
case6:
printf("D\n");break;
default:
printf("E\n");break;
}
}
else
printf("Youarewrong!
\n");
}
40、给出一个不多于5位的正整数,要求①求出它是几位数;②分别打印出每一位数字。
41、从键盘输入三个正整数,判断这三个数能否构成三角形。
#include
#include
voidmain()
{
inta,b,c;
printf("pleaseenterthenumbers:
\n");
scanf("%d%d%d",&a,&b,&c);
if((a+b>c)&&(a+c>b)&&(c+b>a))
{
if((fabs(a-b)printf("可以构成三角形\n");
else
printf("不可以构成三角形\n");
}
else
printf("不可以构成三角形\n");
}
42、编写输入两个整数a和b,若a≥b时,求其积c并显示,若a
#include
voidmain()
{
inta,b,c;
floatd;
printf("pleaseenterthenumbers:
\n");
scanf("%d%d",&a,&b);
if(a>=b)
{
c=a*b;
printf("c=%d\n",c);
}
else
{
d=(float)a/b;
printf("c=%f\n",d);
}
}
43、用循环结构实现下列图形的输出:
********
运行结果是:
Pleaseentertherowandcol:
816
********
********
********
********
********
********
********
********
********
********
********
********
********
********
********
#include
voidmain()
{
inti,j,row,col;
printf("Pleaseenter