C语言书中习题新完整.docx
《C语言书中习题新完整.docx》由会员分享,可在线阅读,更多相关《C语言书中习题新完整.docx(35页珍藏版)》请在冰豆网上搜索。
![C语言书中习题新完整.docx](https://file1.bdocx.com/fileroot1/2023-1/26/b01386f9-5c03-42c5-a66a-53e0ac3f286a/b01386f9-5c03-42c5-a66a-53e0ac3f286a1.gif)
C语言书中习题新完整
5201
编写程序,借助中间变量,交换A,B两个整型变量的值。
例如:
a=5,b=8,输出时a=8,b=5
#include
voidmain(){
inta,b,c;
scanf("%d%d",&a,&b);
c=a;
a=b;
b=c;
printf("%d%d",a,b);
}
5202
编写程序,输入一个字符,然后顺序输出该字符的前驱字符、该字符本身和它的后继字符。
例如:
输入字符m,则输出kmn。
#include
voidmain(){
charch;
ch=getchar();
putchar(ch-1);
putchar(ch);
putchar(ch+1);
}
5203
编写程序,读入角度值,输出弧度值。
例如:
输入角度值为450,输出的值为0。
785
#include
voidmain(){
floata,b;
scanf("%f",&a);
b=a/180.0*3.14;
printf("%f",b);
}
5204
编写程序,不用中间变量,交换A,B两个整型变量的值。
例如:
a=5,b=8,输出时a=8,b=5
#include
voidmain(){
inta,b;
scanf("%d%d",&a,&b);
a=a+b;
b=a-b;
a=a-b;
printf("%d%d",a,b);
}
5205
编写程序,输入两个整数,分别求他们的和、差、积、商、余数并输出。
例如:
a=10,b=5,输出时:
15,5,50,2,0
#include
voidmain(){
inta,b,c,d,n,m,y;
scanf("%d%d",&a,&b);
c=a+b;
d=a-b;
n=a*b;
m=(float)a/b;
y=a%b;
printf("%d%d%d%d%d",c,d,n,m,y);
}
5206
编写程序,输入3个浮点数,求他们平均值并输出。
例如:
a=2.5,b=3.6,c=4.7,输出ave=3.600000
#include
voidmain(){
floata,b,c,n;
scanf("%f%f%f",&a,&b,&c);
n=(a+b+c)/3.0;
printf("%f",n);
}
5207
编写程序,用如下公式计算∏值。
=4arctan(1/5)-arctan(1/239)
#include
#include
voidmain(){
floata,b,c;
a=4*atan(1.0/5);
b=atan(1.0/239);
c=4*(a-b);
printf("%f",c);
}
5208
已知摄氏温度C与华氏温度F的转换关系式是:
C=5/9(F-32),编一个摄氏温度与华氏温度的转换程序,输入摄氏温度C,输出华氏温度F。
例如:
输入10,输出结果为:
50
#include"stdio.h"
voidmain(){
floatc,f;
scanf("%f",&c);
f=c*9.0/5+32;
printf("%f",f);
}
5209
编写程序,输入底的半径和高,求圆柱的体积和表面积,并输出。
例如:
输入底半径为2,高为10,则输出结果表面积为150.720001,体积为125.599998
#include"stdio.h"
voidmain(){
floatr,h,v,s;
scanf("%f%f",&r,&h);
v=3.14*r*r*h;
s=(3.14*r*r*2)+(3.14*2*r*h);
printf("%f%f",v,s);
}
5210
编写程序,输入两个两位整数a、b,将其合并成一个4位整数c,规则是c的千位数字是b的个位;c的百位数字是a的十位;c的十位数字是b的十位;c的个位数字是a的个位。
例如:
a=12,b=45,则输出结果为5142。
#include"stdio.h"
voidmain(){
inta,b,c,d,e,f,m;
scanf("%d%d",&a,&b);
c=a/10;d=a%10;
e=b/10;f=b%10;
m=f*1000+c*100+e*10+d;
printf("%d",m);
}
5301
编写程序,输入某个学生本学期程序设计课程成绩,判断并输出他是否及格。
例如:
输入成绩为85分,则输出"youaresuccess!
",如果输入成绩为48分,则输出"youarefail!
"
#include"stdio.h"
voidmain(){
intx;
scanf("%d",&x);
if(x>=60)
printf("youaresuccess!
");
else
printf("youarefail!
");
}
5302
编写程序,从键盘输入两个整数,求两个数中大数。
例如:
输入5和8,则输出的结果为8。
#include"stdio.h"
voidmain(){
intx,y;
scanf("%d%d",&x,&y);
if(x>y)
printf("%d",x);
else
printf("%d",y);
}
5303
编写程序,计算数学中的符号函数,1(x>0)
sign(x)=0(x=0)
-1(x<0)
例如:
输入10时,则输出1,输入0时,则输出0,输入-9时,则输出-1。
#include"stdio.h"
voidmain(){
intx;
scanf("%d",&x);
if(x>0)
printf("1");
elseif(x==0)
printf("0");
else
printf("-1");
}
5304
学校曾经组织了一次“程序设计大赛”,规定本学期程序设计课的成绩可以根据是否在大奖赛上获奖而加5分,编写程序,计算某同学的程序设计课成绩。
例如:
输入成绩85,并且获奖y,则输出成绩为90,如果输入成绩98,并且获奖y,则输出成绩为100。
#include"stdio.h"
voidmain(){
intm;
charw;
scanf("%d%c",&m,&w);
if(w=='y'||w=='Y')
m=m+5;
if(m>100)
m=100;
printf("%d",m);
}
5305
输入一个年份,判断该年是否闰年。
某年是闰年的条件是:
能被4整除,但不能被100整除;或能被400整除。
例如:
输入2000年,则输出2000isaleapyear,如果输入1998年,则输出1998isnotaleapyear。
#include"stdio.h"
voidmain(){
intm;
scanf("%d",&m);
if(m%4==0&&m%100!
=0||m%400==0)
printf("%disaleapyear",m);
else
printf("%disnotaleapyear",m);
}
5306
求一元二次方程ax2+bx+c=0的根。
5307
学校曾经组织了一次“程序设计大奖赛”,规定本学期程序设计课程的成绩可以根据大奖赛的成绩适度加分。
加分规则是参赛者加5分,三等奖加15分,二等奖加20分,一等奖加30分,总分不超过100分。
编程序,计算某同学的程序设计课成绩。
例如:
用(0:
未参加,1:
参赛,2:
三等奖,3:
二等奖,4:
一等奖),输入成绩85,并且获得一等奖输入4,则输出成绩为100,如果输入成绩78,并且参赛输入1,则输出成绩为83。
#include"stdio.h"
voidmain(){
intw,m;
scanf("%d",&m);
printf("(0:
未参加,1:
参加,2:
三等奖,3:
二等奖,4:
一等奖):
");
scanf("%d",&w);
switch(w){
case0:
break;
case1:
m=m+5;break;
case2:
m=m+15;break;
case3:
m=m+20;break;
case4:
m=m+30;break;
}
if(m>100)
m=100;
printf("%d",m);
}
5308
模拟单步计算器。
设计一个模拟单步计算器的程序,设该计算器只能作加、减、乘、除运算。
#include
voidmain(){
floata,b;
charw;
scanf("%f%c%f",&a,&w,&b);
switch(w){
case'+':
a=a+b;break;
case'-':
a=a-b;break;
case'*':
a=a*b;break;
case'/':
a=a/b;break;}
printf("%.2f",a);}
5309
高速公路每公里的收费标准按不同种汽车收费,小汽车(car):
0.50元;卡车(truck):
1.00元;大客车(bus):
1.50元。
编程序,为某高速公路收费站计算各种车辆的收费额。
#include
voidmain(){
floatm,p;
charch;
scanf("%f%c",&m,&ch);
switch(ch){
case'x':
p=0.5;break;
case'k':
p=1.00;break;
case'd':
p=1.5;break;
}
p=p*m;
printf("p=%.2f",p);}
5310
编程序,输入三个实数a,b,c;然后按递增顺序把它们输出。
#include
voidmain(){
floata,b,c,t;
scanf("%f%f%f",&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("%f%f%f",a,b,c);}
5311
编程序,输入一个字母,若其为小写字母,将其转换成大写,最后输出。
#include
voidmain(){
charc;
scanf("%c",&c);
if(c>='a'&&c<='z')
printf("%c",c-32);}
5312
编程序,输入一个自然数n,判断n的第四位数字是否为0。
(规定从右向左数)
#include
voidmain(){
inta,b;
scanf("%d",&a);
b=a/1000%10;
if(b==0)
printf("是0");
else
printf("不是0");}
5313
编程序,输入一个4位自然数n,判断n是否为降序数。
降序数是指对于n=d0d1d2d3有di>=di+1,i=0,1,2,3
#include
voidmain(){
inta,b,c,d,n;
scanf("%d",&n);
a=n/1000;
b=n%1000/100;
c=n%100/10;
d=n%10;
if((a>b)&&(b>c)&&(c>d))
printf("是");
else
printf("不是");}
5314
编程序,输入一个5位自然数n,判断n是否为对称数。
对称数是正序和反序读相等的整数,如96769.
#include
voidmain(){
inta,b,c,d,e,n;
scanf("%d",&n);
a=n/10000;
b=n%10000/1000;
c=n%1000/100;
d=n%100/10;
e=n%10;
if((a==e)&&(b==d))
printf("对称数");
else
printf("不是对称数");}
5315
编程序,读入三个点的坐标,确定它们是否在一条直线上。
#include
voidmain(){
inta,b,c,d,e,f,m,n,h;
scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
m=(a,b);
n=(c,d);
h=(e,f);
if((d-b)/(c-a)==(f-d)/(e-c))
printf("一条直线上");
else
printf("不在一条直线上");}
5316
编程序,判断给定的三位数是否Armstrong数。
所谓Armstrong数是指其值等于它本身每位数字立方和的数。
#include
voidmain(){
inta,b,c,n;
scanf("%d",&n);
if(n>=100&&n<1000)
{a=n/100;
b=n/10%10;
c=n%10;}
if(n==a*a*a+b*b*b+c*c*c)
printf("yes");
else
printf("no");
}
如153=13+53+33
5317
编程序,读入一个点的坐标X、Y,计算:
有问题
lnX+lnY,X、Y在第一象限
z=sinX+cosY,X、Y在第二象限
e2x+e3y,X、Y在第三象限
tan(X+Y),X、Y在第四象限
#include
#include
voidmain(){
floatx,y,z;
scanf("%f%f",&x,&y);
if(z==(log(x)+log(y)))
printf("x,y在第一象限");
elseif(z==(sin(x)+cos(y)))
printf("x,y在第二象限");
elseif(z==(exp(x)*exp(x)+exp(y)*exp(y)))
printf("x,y在第三象限");
elseif(z==(tan(x)+tan(y)))
printf("x,y在第四象限");
}
5318
编程序,输入一个整数,判断它能否被3、5、7整除,并输出如下信息。
(1)能同时被3、5、7整除;
(2)能同时被两个数整除,并指明是哪两个数;
(3)能被一个数整除,并指明是哪个数;
(4)不能被所有数整除。
#include
voidmain(){
inta;
scanf("%d",&a);
if(a%3==0&&a%5==0&&a%7==0)
printf("能同时被357整除");
elseif(a%3==0&&a%5==0)
printf("能同时被35整除");
elseif(a%3==0&&a%7==0)
printf("能同时被37整除");
elseif(a%5==0&&a%7==0)
printf("能同时被57整除");
elseif(a%3==0)
printf("能被3整除");
elseif(a%5==0)
printf("能被5整除");
elseif(a%7==0)
printf("能被7整除");
elseif(a%3!
=0&&a%5!
=0&&a%7!
=0)
printf("不能被所有数整除");
}
5319
某旅游宾馆房间价格随旅游季节和团队规模浮动。
规定:
在旅游旺季(7-9月份),20房间以上团队,优惠30%;不足20房间团队,优惠15%。
在旅游淡季,20房间以上团队,优惠50%;不足20房间团队,优惠30%。
编程序,根据输入的月份、订房间数,输出总金额。
5320
某货运公司按如下公式计算运费:
运费=里程*货物重量*单价
除此之外还按表给予折扣。
编一个计算运费的程序。
重量/kg
>6
[6,12)
[12,18)
[18,24)
>=24
里程<500
0%
1%
2%
5%
8%
1000>里程>=500
1%
2%
5%
8%
12%
里程>=1000
2%
5%
8%
12%
16%
A货物重量b里程c单价
#include
voidmain(){
floata,b,c,w;
scanf("%f%f%f",&a,&b,&c);
w=a*b*c;
if(b<500)
switch((int)(a/6)){
case0:
w;break;
case1:
w=w*(1-0.01);break;
case2:
w=w*(1-0.02);break;
case3:
w=w*(1-0.05);break;
default:
w=w*(1-0.08);break;}
if(b>500&&b<1000)
switch((int)(a/6)){
case0:
w=w*(1-0.01);break;
case1:
w=w*(1-0.02);break;
case2:
w=w*(1-0.05);break;
case3:
w=w*(1-0.08);break;
default:
w=w*(1-0.12);break;}
if(b>=1000)
switch((int)(a/6)){
case0:
w=w*(1-0.02);break;
case1:
w=w*(1-0.05);break;
case2:
w=w*(1-0.08);break;
case3:
w=w*(1-0.12);break;
default:
w=w*(1-0.16);break;}
printf("%f",w);
}
5321
某商场打折促销。
(1)购买不足200元货物,不赠代金券;
(2)购买满200元货物,赠50元代金券;
(3)购买满400元货物,赠150元代金券;
(4)购买满600元货物,赠200元代金券;
(5)购买满800元货物,赠300元代金券;
(6)购买满1000元货物,赠400元代金券;
(7)超过1000元,赠总金额50%元代金券;
编程序,求买x元商品,获得的代金券数。
#include
voidmain(){
floata,b;
scanf("%f",&a);
switch((int)(a/200)){
case0:
b=0;break;
case1:
b=50;break;
case2:
b=150;break;
case3:
b=200;break;
case4:
b=300;break;
case5:
b=400;break;
default:
b=0.5*a;}
printf("%f",b);}
5322
编写一个程序,从键盘输入一个整数,判断该数是否为偶数。
例如:
输入5,则输出“奇数”,如果输入8,则输出“偶数”。
#include
voidmain(){
inta;
scanf("%d",&a);
if(a%2==0)
printf("偶数");
else
printf("奇数");
}
5401
某评估单位要对学生的学习情况进行评估,需要计算每个学生的平均学习成绩。
编程序,从终端逐次输入一个学生n门课程的成绩,计算并输出他的平均成绩。
#include
voidmain(){
floats,a;
intk,m,n;
k=1;s=0;
scanf("%d",&n);
do{
scanf("%d",&m);
s=s+m;
k++;
}
while(k<=n);
a=s/n;
printf("%f",a);
}
5402
编程序计算数列ak=1/k(k+1)前n项和。
#include
voidmain(){
intn,i;
floatsum;
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
sum=sum+1.0/(i*(i+1.0));
printf("%f",sum);
}
5403
编程序,输入一个年份,求该年以后的n个闰年。
#include
voidmain(){
intn,y;
scanf("%d",&y);
scanf("%d",&n);
y=(y/4+1)*4;
do{
if((y%4==0)&&(y%100!
=0)||(y%400==0)){
printf("%d",y);
n=n-1;}
y=y+4;}
while(n>0);
}
5404
编程序,按下述公式求自然对数底e的近似值。
e=1+1/1!
+1/2!
+……+1/n!
#include"stdio.h"
voidmain(){
floatsum=0,s=1,n=1;
while(1.0/n>=1e-5){
s=s*n;n=n+1;
sum=sum+(1.0/s);}
sum=sum+1;
printf("%f",sum);
}
5405
编程序,统计以100为结束符的整数输入流中-1、0、+1的出现次数并输出。
#include
voidmain(){
inti,s=1;
floatx,e=1,y=1;
scanf("%f",&x);
for(i=1;i<=100;i++)
{y=y*x;
e=e+y/(s*i);}
printf("%f",e);}
5406
编程序,打印99乘法表。
#include
voidmain(){
inti,j;
for(i=1;i<9;i++)
{for(j=1;j<=i;j++)
printf("%2d*%2d=%2d",i,j,i*j);
printf("\n");}}老师
#include
voidmain(){
inti,j;
for(i=1;i<10;i++){
printf("%4d",i);
for(j=1;j<=i;j++)
printf("%4d",i*j);
printf("\n");
}
printf("%4c",'*');
for(i=1;i<10;i++)
printf("%4d",i);
printf("\n");
}书上
5407
编程序,打印100以内的素数。
#include"stdio.h"
voidmain(){
inti,j;
for(i=2;i<=100;i++){
for(j=2;j<=i-1;j++)
if(i%j==0)break;
if(j>=i)
printf("%d",i);}
}
5408
编程序,输出斐