C语言上机题库.docx
《C语言上机题库.docx》由会员分享,可在线阅读,更多相关《C语言上机题库.docx(42页珍藏版)》请在冰豆网上搜索。
C语言上机题库
C语言习题集
3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。
输入格式:
B
输出格式:
26
#include
intmain(void)
{
charch;
intsum;
ch=getchar();
sum=ch-'A'+10+15;
printf("%d\n",sum);
return0;
}
3.12输入三个整数,求其平均值。
输入格式:
357
输出格式:
5
#include
intmain(void)
{
inta,b,c,aver;
scanf("%d%d%d",&a,&b,&c);
aver=(a+b+c)/3;
printf("%d\n",aver);
return0;
}
3.13根据c=5/9*(f-32)公式,输入华氏温度f,求摄氏温度c,结果精确到小数点后两位。
输入格式:
80.0
输出格式:
26.67
#include
intmain(void)
{
floatf,c;
scanf("%f",&f);
c=5.0/9*(f-32);
printf("%.2f\n",c);
return0;
}
3.14输入一个四位正整数,求其各位数字之和。
例如,1357的各位数字之和为1+3+5+7=16。
输入格式:
1357
输出格式:
16
#include
intmain(void)
{
intnum;
inta,b,c,d,total;
scanf("%d",&num);
a=num/1000;
b=(num-a*1000)/100;
c=(num-a*1000-b*100)/10;
d=num-a*1000-b*100-c*10;
total=a+b+c+d;
printf("%d\n",total);
return0;
}
3.15输入一大写字母,输出对应的小写字母。
输入格式:
A
输出格式:
a
#include
intmain(void)
{
charc1,c2;
scanf("%c",&c1);
c2=c1+32;
printf("%c",c2);
}
3.16输入两个整数分别赋值给变量a和b,将a和b的值互换,输出a、b的值。
输入格式:
35
输出格式:
53
#include
intmain(void)
{
inta,b,temp;
scanf("%d%d",&a,&b);
temp=a;
a=b;
b=temp;
printf("%d%d",a,b);
return0;
}
3.21输入一小写字母,输出对应的大写字母。
输入格式:
b
输出格式:
B
#include
intmain(void)
{
charch;
ch=getchar();
putchar(ch-32);
putchar('\n');
}
3.22输入任意四位整数,以反序的方式输出该整数。
例如:
输入1234,输出4321
输入格式:
1357
输出格式:
7531
#include
intmain(void)
{
charc1,c2,c3,c4;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
printf("%c%c%c%c\n",c4,c3,c2,c1);
}
3.23输入两个电阻值,求它们并联和串联的电阻值,结果保留两位小数。
并联和串联的电阻值的计算公式为:
并联电阻:
PR=(R1*R2)/(R1+R2)串联电阻:
RS=R1+R2
输入格式:
35
输出格式:
1.888.00
#include
intmain(void)
{
doubler1,r2,pr,rs;
scanf("%lf%lf",&r1,&r2);
pr=(r1*r2)/(r1+r2);
rs=r1+r2;
printf("%.2f%.2f\n",pr,rs);
return0;
}
3.24使用getchar函数分别输入两个字符变量c1和c2,要求c1、c2均是字符'0'到'9'中的一个字符。
将c1、c2中的值转换成相应的数字,如将字符'1'转换为数字1,并输出这两个数相加的结果。
输入格式:
26
输出格式:
8
#include
intmain(void)
{
charc1,c2;
c1=getchar();
c2=getchar();
c1=c1-48;
c2=c2-48;
printf("%d\n",c1+c2);
return0;
}
3.25输入梯形的上下底边长度和高,计算梯形的面积,保留一位小数。
计算梯形面积的公式如下:
S=h*(a+b)/2
输入格式:
354
输出格式:
16.0
#include
intmain(void)
{
inta,b,h;
floatS;
scanf("%d%d%d",&a,&b,&h);
S=h*(a+b)/2.0;
printf("%.1f",S);
return0;
}
3.26输入圆的半径,求圆的周长和面积,结果精确到小数点后两位。
已知圆周率为3.14159。
输入格式:
5.0
输出格式:
31.4278.54
#include
voidmain()
{doubler,l,s;
scanf("%lf",&r);
l=2*3.14159*r;
s=3.14159*r*r;
printf("%.2f%.2f\n",l,s);
}
4.1输入整数a和b,如果a^2+b^2大于100,则输出a+b的值;否则,输出a-b的值。
输入格式:
35
输出格式:
-2
#include
voidmain()
{
inta,b;
scanf("%d%d",&a,&b);
if(a*a+b*b>100)
printf("%d\n",a+b);
else
printf("%d\n",a-b);
}
4.2输入整数n,如果n既是5的整倍数又是7的整倍数,则输出yes;否则输出no。
输入格式:
35
输出格式:
Yes
#include
voidmain()
{
intn;
scanf("%d",&n);
if(n%5==0&&n%7==0)
printf("yes\n");
else
printf("no\n");
}
4.3商场为促销实行打折销售商品,假定商品价格为p元,编程计算某顾客购买x件商品的应付金额,保留一位小数。
先输入价格p,再输入购买的件数x。
计算公式sum=p*x*(1-d)其中,sum为应付金额,d为折扣(x<5时:
d=0;5<=x<10时:
d=1%;10<=x<21时:
d=2%;21<=x<30时:
d=4%;30<=x时:
d=6%;)。
输入格式:
9.915
输出格式:
145.5
#include
voidmain()
{
intx;
floatp,sum,d;
scanf("%f%d",&p,&x);
if(x<5)
d=0;
elseif(x<10)
d=0.01;
elseif(x<21)
d=0.02;
elseif(x<30)
d=0.04;
elsed=0.06;
sum=p*x*(1-d);
printf("%.1f",sum);
}
4.4输入'0'~'9'或'a'~'f'或'A'~'F'中的一个字符,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。
输入格式:
6
输出格式:
21
#include
voidmain()
{
charch;
ch=getchar();
if(ch>='0'&&ch<='9')
printf("%d\n",ch-'0'+15);
elseif(ch>='A'&&ch<='F')
printf("%d\n",ch-'A'+10+15);
elseif(ch>='a'&&ch<='f')
printf("%d\n",ch-'a'+10+15);
else
printf("IaputError!
!
\n");
}
4.5已知一张如下所示的时间表:
***************Time***************
1morning
2afternoon
3night
**********************************
Pleaseinputyourchoice:
根据输入的序号显示相应的问候信息:
输入1时,输出Goodmorning;输入2时,输出Goodafternoon;输入3时,输出Goodnight;对于其他的输入,则输出error。
输入格式:
2
输出格式:
Goodafternoon
#include
intmain(void)
{
intchoice;
scanf("%d",&choice);
switch(choice)
{
case1:
printf("Goodmorning\n");break;
case2:
printf("Goodafternoon\n");break;
case3:
printf("Goodnight\n");break;
default:
printf("error\n");
}
}
4.6输入3个整数,要求按从小到大的顺序输出。
输入格式:
531
输出格式:
135
#include
intmain(void)
{
inta,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(b>c){t=b;b=c;c=t;}
printf("%d%d%d\n",a,b,c);
return0;
}
4.7输入两个实数和一个算术运算符(+,-,*,/),根据运算符执行相应的运算并输出运算结果,保留一位小数。
(提示:
运算符先输入,两个实数后输入)
输入格式:
+1.52.1
输出格式:
3.6
#include
intmain(void)
{
doublea,b;
charop;
scanf("%c%lf%lf",&op,&a,&b);
if(op=='+')printf("%.1f\n",a+b);
elseif(op=='-')printf("%.1f\n",a-b);
elseif(op=='*')printf("%.1f\n",a*b);
elseprintf("%.1f\n",a/b);
return0;
}
4.8输入3个整数,要求按从大到小的顺序输出。
输入格式:
135
输出格式:
531
#include
intmain(void)
{
inta,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a
if(aif(bprintf("%d%d%d\n",a,b,c);
return0;
}
5.11编写程序,接收两个整数num1和num2,找出这两个数之间所有奇数的和。
输入格式:
1100
输出格式:
2500
#include
intmain(void)
{
intnum1,num2,t,i,sum=0;
scanf("%d%d",&num1,&num2);
if(num1>num2)
{t=num1;num1=num2;num2=t;}
if(num1%2==0)num1++;
for(i=num1;i<=num2;i+=2)
sum+=i;
printf("%d",sum);
}
5.12输入10个分数(浮点型),去掉最高分和最低分后求平均分,保留一位小数。
输入格式:
0123456789
输出格式:
4.5
#include
voidmain()
{inti;
doublesum=0,a,max,min;
scanf("%lf",&a);
sum=max=min=a;
for(i=1;i<=9;i++)
{scanf("%lf",&a);
if(maxif(min>a)min=a;
sum=sum+a;
}
sum=sum-max-min;
printf("%.1f",sum/8);
}
5.13输入n,求1*2*3*...*n的值。
输入格式:
10
输出格式:
3628800
#include
intmain(void)
{
inti,n,k=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
k=k*i;
printf("%d",k);
}
5.14根据用户输入的正整数a(1~9)和正整数n,求a+aa+...+aa...a(n个a)的值。
例如,当用户输入a为6,n为5时,结果为74070。
输入格式:
65
输出格式:
74070
#include
voidmain()
{inta,n,i,t;
longintsum=0;
scanf("%d%d",&a,&n);
t=a;
for(i=1;i<=n;i++)
{sum=sum+t;
t=t*10+a;
}
printf("%d",sum);
}
5.15已知函数头为voidavg(void),函数avg的功能:
输入10个分数(浮点型),去掉最高分和最低分,求平均分,保留一位小数。
编写main函数并调用函数avg。
输入格式:
0123456789
输出格式:
4.5
#include
voidavg(void)
{
inti;
floatsum,n,max,min,aver;
scanf("%f",&n);
max=min=n;
sum=n;
for(i=2;i<=10;i++)
{
scanf("%f",&n);
max=(max>n)?
max:
n;
min=(minmin:
n;
sum+=n;
}
aver=(sum-max-min)/8;
printf("%.1f\n",aver);
}
5.16根据用户输入的正整数n,求1-1/2+1/3-1/4+...+((-1)^(n+1))/n的值。
保留两位小数。
输入格式:
2
输出格式:
0.50
#include
voidmain()
{
inti,flag=1,n;
doublesum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=1.0/i*flag;
flag=-flag;
}
printf("%.2f\n",sum);
}
5.21输入n,求1!
+2!
+3!
+...+n!
的值。
输入格式:
10
输出格式:
4037913
#include
intmain(void)
{
intsum=0,i,n,s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s*=i;
sum+=s;
}
printf("%d\n",sum);
}
5.22根据用户输入的正整数n,求2/1+3/2+5/3+8/5+13/8+...的前n项之和。
保留两位小数。
输入格式:
2
输出格式:
3.50
#include
voidmain(void)
{
inta=1,b=2,c,i,n;
doubled,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{d=1.*b/a;
sum+=d;
c=a+b;
a=b;
b=c;
}
printf("%.2f",sum);
}
5.23根据用户输入的正整数n,求1-2/3+3/5-4/7+5/9-6/11+...的前n项之和。
保留两位小数。
输入格式:
2
输出格式:
0.33
#include
intmain(void)
{
inti,n,flag=1;
doublesum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=flag*1.0*i/(2*i-1);
flag=-flag;
}
printf("%.2f\n",sum);
return0;
}
5.24根据用户输入的正整数n,求数列1,2,3,5,8,13,21,34,...中第n项的值。
输入格式:
25
输出格式:
121393
#include
intmain(void)
{
inta=1,b=2,c,n,i;
scanf("%d",&n);
for(i=3;i<=n;i++)
{
c=a+b;
a=b;
b=c;
}
printf("%d\n",c);
return0;
}
5.25输入一行字符,统计其中英文字母、数字字符、空格和其他字符的个数。
输入格式:
kf3f5;p08d?
^@
输出格式:
5424
#include
intmain(void)
{
charc;
inteng=0,dig=0,space=0,others=0;
scanf("%c",&c);
while(c!
='\n')
{if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
eng++;
elseif(c>='0'&&c<='9')
dig++;
elseif(c=='')
space++;
else
others++;
scanf("%c",&c);}
printf("%d%d%d%d\n",eng,dig,space,others);
return0;
}
5.26根据用户输入的正整数n,输出数列0,1,2,3,6,11,20,37,68,...中第n项的值。
输入格式:
4
输出格式:
3
#include
voidmain()
{inti,a=0,b=1,c=2,d,n;
scanf("%d",&n);
for(i=4;i<=n;i++)
{d=a+b+c;
a=b;
b=c;
c=d;}
printf("%d\n",d);
}
5.31输入若干整数,以-1结束,去掉最大值和最小值,求平均值,保留一位小数。
输入格式:
13579-1
输出格式:
5.0
#include
voidmain()
{
intscore;
doublesum=0,n=0,avg,max,min,b;
scanf("%d",&score);
max=min=b=score;
while(score!
=-1)
{
if(score>max)
max=score;
if(scoremin=score;
sum+=score;
n++;
scanf("%d",&score);
}
avg=(sum-max-min)/(n-2);
printf("%.1f\n",avg);
}
5.32输入两个正整数,求最大公约数。
输入格式:
155
输出格式:
5
#include
intmain(void)
{inti,m,n,temp,maxgy;
scanf("%d%d",&m,&n);
if(m>n){temp=m;m=n;n=temp;}
for(i=m;i>=1;i--)
if(m%i==0&&n%i==0)
{maxgy=i;break;}
printf("%d\n",maxgy);
return0;
}
5.33输入两个正整数,求最小公倍数。
输入格式:
515
输出格式:
15
#include
intmain(void)
{inti,m,n,temp,maxgy;
scanf("%d%d",&m,&n);
if(mfor(i=m;;i++)
if(i%m==0&&i%n==0)
{maxgy=i;break;}
printf("%d\n",maxgy);
return0;
}
5.34输入一个正整数n,求n是几位数。
输入格式:
1357
输出格式:
4
#include
main(void)
{
intn,sum=0,k=0;
scanf("%d",&n);
while(n)
{
n/=10;k++;
}
printf("%d\n",k);
}
5.35输入一个正整数n,判断n是否为回文数。
所谓回文数,是从左到右读这个数和从右到左读这个数是一样的。
例如,98789是回文数。
如果