C语言PTA平台习题与答案Word格式文档下载.docx
《C语言PTA平台习题与答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言PTA平台习题与答案Word格式文档下载.docx(61页珍藏版)》请在冰点文库上搜索。
scanf(”%d%d"
,&a,&b);
%d+%d=%d\n"
,a,b,a+b);
%d—%d=%d\n”,a,b,a—b);
%d*%d=%d\n"
a,b,a*b);
printf(”%d/%d=%d"
a,b,a/b);
③整数152的各位数字本题要求编写程序,输出整数152的个位数字、十位数字和百位数字的值
152=个位数字+十位数字*10+百位数字*100
inta=152/100;
intc=152%10;
intcount=152%100;
intb=count/10;
152=%d+%d*10+%d*100”,c,b,a);
第二章作业3
①求奇数分之一序列前N项和
计算序列1+1/3+1/5+.。
.的前N项之和
输入在一行中给出一个正整数N。
在一行中按照“sum=S"
的格式输出部分和的值S,精确到小数点后6位。
题目保证计算结果不超过双精度范围
intn;
inti=1;
doubles=0;
scanf(”%d”,&n);
for(i=1;
i〈=n;
i++)
{s+=1.0/(2*i—1);
sum=%。
6f"
s);
return0;
②计算序列1-1/4+1/7-1/10+.。
。
的前N项之和在一行中按照“sum=S”的格式输出部分和的值S,精确到小数点后三位。
#include<
stdio.h>
{
intfm=1,N,b=1;
doubleitem,sum=0,i;
scanf(”%d”,&N);
for(i=1.0;
i<
=N;
i++)
{
item=b*(i/fm);
sum=sum+item;
b=-b;
fm=fm+2;
}
printf("
%。
3f\n”,sum);
③求平方根序列前N项和
计算平方根序列√1+√2+√3+⋯的前N项之和
#include〈math。
intn,i;
doublex,s=0;
%d"
&n);
for(i=1;
i〈=n;
{
x=sqrt(i);
s=s+x;
}
printf(”sum=%.2f\n"
return0;
④特殊a串数列求和
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和.
math。
intn,a,i,j;
doublenum=0,sum=0;
%d%d”,&a,&n);
=n;
{
for(j=1;
j<
=i;
j++)
num=num+a*pow(10,j—1);
}
sum=sum+num;
num=0;
s=%d”,sum);
第二章作业4
①本题目要求计算下列分段函数f(x)的值:
输入在一行中给出实数x
在一行中按“f(x)=result”的格式输出,其中x与result都保留一位小数。
输入样例1:
10
输出样例:
1
f(10.0)=0。
输入样例2:
234
输出样例2:
f(234。
0)=234。
#include〈stdio.h〉
doublex;
%lf”,&x);
if(x==10){printf("
f(%0。
1f)=0.1”,x);
else{printf(”f(%0。
1f)=%0.1f"
,x,x);
②计算分段函数
本题目要求计算下列分段函数f(x)的值:
注:
可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。
doublea;
%lf”,&
a);
if(a>
=0){printf("
f(%0。
2f)=%0.2f"
,a,sqrt(a));
else{printf("
f(%0.2f)=%0。
2f”,a,(a+1)*(a+1)+2*a+1/a);
③新胖子公式输入在一行中给出两个正数,依次为一个人的体重(以kg为单位)和身高(以m为单位),其间以空格分隔.其中体重不超过1000kg,身高不超过3.0m。
首先输出将该人的体重和身高代入肥胖公式的计算结果,保留小数点后1位.如果这个数值大于25,就在第二行输出
PANG,否则输出
HaiXing。
doublea,b;
%lf%lf”,&a,&b);
doublec=a/(b*b);
printf(”%0.1f\n”,c);
if(c〉25){printf("
PANG”);
else{printf("
HaiXing"
);
第三章作业2
①求奇数和输入在一行中给出一系列正整数,其间以空格分隔。
当读到零或负整数时,表示输入结束,该数字不要处理
在一行中输出正整数序列中奇数的和。
87437056101—1
116
#include〈stdio.h〉
intn=0;
intsum=0;
do
if(n%2==1){sum+=n;
while(n>
0);
printf(”%d"
sum);
②求整数的位数及各位数字之和
输入在一行中给出一个不超过109的正整数N
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开
321
36
intn,h,i,sum=0;
h=n%10;
n/=10;
sum+=h;
i++;
while(n〉0);
%d%d"
,i,sum);
③简单的猜数字游戏
intx;
constintM=38;
scanf(”%d”,&x);
if(x〉38){printf("
Toobig!
"
);
if(x==38){printf("
GoodGuess!
if(x<
38){printf("
Toosmall!
”);
第四章作业1
①奇偶分家输入第一行给出一个正整N(≤1000);
第2行给出N个非负整数,以空格分隔。
在一行中先后输出奇数的个数、偶数的个数。
中间以1个空格分隔。
9
887410126150342277
inti,n,N;
inta=0,b=0;
%d”,&
n);
for(i=0;
i<
n;
%d"
&N);
if(N%2==0){a++;
else{b++;
printf(”%d%d"
,b,a);
②A除以B定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果
在一行中输出结果:
如果分母是正数,则输出“A/B=商”;
如果分母是负数,则要用括号把分母括起来输出;
如果分母为零,则输出的商应为Error
inta,b;
&
a,&
b);
if(b〉0)printf("
%d/%d=%。
2f”,a,b,a*1.0/b);
elseif(b〈0)printf(”%d/(%d)=%.2f"
,a,b,a*1。
0/b);
elseprintf("
%d/%d=Error”,a);
③高速公路超速处罚
在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;
若达到或超出50%,就要吊销驾驶证
输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。
在一行中输出处理意见:
若属于正常行驶,则输出“OK”;
若应处罚款,则输出“Exceedx%。
Ticket200”;
若应吊销驾驶证,则输出“Exceedx%.LicenseRevoked”。
其中x是超速的百分比,精确到整数。
110100
Exceed10%。
Ticket200
inta,b;
scanf(”%d%d”,&a,&b);
x=round(1.0*(a—b)/b*100);
if(x〈10){printf(”OK\n”);
elseif(x<
50){printf(”Exceed%d%%。
Ticket200\n"
,x);
elseprintf(”Exceed%d%%.LicenseRevoked\n”,x);
return0;
④输出三角形面积和周长
根据输入的三角形的三条边a、b、c,计算并输出面积和周长。
注意:
在一个三角形中,任意两边之和大于第三边.三角形面积计算公式:
area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
area=面积;
perimeter=周长Thesesidesdonotcorrespondtoavalidtriangle
553
area=7。
15;
perimeter=13。
00
doublea,b,c,s;
doublearea,perimeter;
scanf(”%lf%lf%lf”,&
a,&b,&c);
area=0;
perimeter=0;
if((a+b)>
c&
&
(a+c)〉b&&
(b+c)>
a){
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s—c));
perimeter=a+b+c;
area=%。
2f;
perimeter=%.2f”,area,perimeter);
}else{
printf(”Thesesidesdonotcorrespondtoavalidtriangle”);
⑤输出闰年
输入在一行中给出21世纪的某个截止年份。
逐行输出满足条件的所有闰年年份,即每个年份占一行。
输入若非21世纪的年份则输出”Invalidyear!
”。
若不存在任何闰年,则输出“None”.
闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除
#include〈stdio.h>
intyear,i,count=0;
scanf(”%d”,&
year);
if(year<
=2000||year>
2100)
printf(”Invalidyear!
else{
for(i=2001;
i<
=year;
i++){
if(i%4==0&
i%100!
=0||i%400==0){
printf("
%d\n"
,i);
count++;
}
}
if(count==0)
printf("
None\n”);
}
⑥逆序的三位数
程序每次读入一个正3位数,然后输出按位逆序的数字。
当输入的数字含有结尾的0时,输出不应带有前导的0.比如输入700,输出应该是7.
inta,b,c,n;
&a);
b=a/100;
c=(a/10)%10;
n=a%10;
if(n==0&&c==0)printf(”%d”,b);
if(n==0&&c!
=0)printf(”%d%d"
c,b);
if(n!
=0)printf(”%d%d%d"
n,c,b);
第四章作业2
①。
统计学生成绩
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入在第一行中给出一个正整数N(≤1000),即学生人数;
第二行中给出N个学生的百分制成绩,其间以空格分隔。
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
7
77549273606569
10231
intn,score;
inti;
intA,B,C,D,E;
A=B=C=D=E=0;
scanf(”%d”,&n);
for(i=1;
i〈=n;
i++){
scanf(”%d”,&
score);
if(score>
=90)
A++;
elseif(score〉=80)
B++;
elseif(score>
=70)
C++;
=60)
D++;
else
E++;
printf(”%d%d%d%d%d”,A,B,C,D,E);
②计算油费.(本题编程不完全对)现在90号汽油6.95元/升、93号汽油7。
44元/升、97号汽油7.93元/升。
为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。
本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m-自助,e—协助),计算并输出应付款。
4097m
301。
34
floatr1,r2;
charc;
doubles;
%d%d%c”,&
b,&
c);
switch(b)
case90:
r1=6.95;
break;
case93:
r1=7。
44;
case97:
93;
break;
}
switch(c)
case’m'
:
r2=0.95;
case'
e’:
r2=0.97;
s=a*r1*r2;
printf(”%。
2lf”,s);
③分别是薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),单价分别对应为3。
0元/公斤、2.5元/公斤、4。
0元/公斤、3。
5元/份。
首先在屏幕上显示以下菜单:
[1]crisps
[2]popcorn
[3]chocolate
[4]cola[0]exit
用户可以输入编号1~4查询对应食品的单价。
当连续查询次数超过5次时,程序应自动退出查询;
不到5次而用户输入0即退出;
输入其他编号,显示价格为0
首先在屏幕上显示菜单.然后对应用户的每个输入,在一行中按格式“price=价格”输出查询结果,其中价格保留一位小数.当用户连续查询次数超过5次、或主动输入0时,程序结束,显示“Thanks”。
1702
[1]crisps
[2]popcorn
[4]cola
[0]exit
price=3。
price=0。
Thanks
【程序】
inti,a;
[1]crisps\n”
"
[2]popcorn\n”
”[3]chocolate\n”
"
[4]cola\n”
[0]exit\n”);
=5;
i++){
%d”,&a);
if(a==0)
else
switch(a){
case1:
0\n"
break;
case2:
price=2。
5\n”);
break;
case3:
price=4。
0\n”);
case4:
5\n"
default:
printf(”price=0。
Thanks\n"
④读入一个实数、一个操作符(仅限于+—*/)、一个实数,求该表达式的值。
若除数为0,输出“Thedivisoris0
stdio.h〉
inta,b;
charop;
doublec;
scanf(”%d%c%d"
&a,&
op,&
b);
if(b==0)
switch(op){
case'
+’:
c=a+b;
%.2f”,c);
—’:
c=a-b;
2f"
,c);
*’:
c=a*b;
printf(”%.2f”,c);
case’/’:
printf(”Thedivisoris0.”);
switch(op){
+’:
c=a+b;
c=a-b;
c);
*'
:
c=a*b;
%。
2f”,c);
c=1.0*a/b;
%.2f”,c);
第四章作业3
①.有重复,本题略
②对于给定的正整数N,求它的位数及其各位数字之和
intn,h,i=0,sum=0;
n);
do
h=n%10;
sum+=h;
i++;
while(n〉0);
%d%d”,i,sum);
③找出给定一系列整数中的最小值.输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。
在一行中按照“min=最小值”的格式输出n个整数中的最小值.
4-2-1231000
min=-123
intn,i,m,min;
scanf(”%d”,&
scanf(”%d”,&m);
min=m;
for(i=1;
i〈n;
scanf("
m);
if(min>
m)
}
min=%d”,min);
④输入一个整数,输出每个数字对应的拼音。
当整数为负数时,先输出fu字。
十个数字对应的拼音如下:
0:
ling1:
yi2:
er3:
san4