C语言PTA平台习题与问题详解.docx
- 文档编号:28657352
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:58
- 大小:131.06KB
C语言PTA平台习题与问题详解.docx
《C语言PTA平台习题与问题详解.docx》由会员分享,可在线阅读,更多相关《C语言PTA平台习题与问题详解.docx(58页珍藏版)》请在冰豆网上搜索。
C语言PTA平台习题与问题详解
第二章作业1
①.本题要求编写程序,输出一个短句“WelcometoYou!
”
#include
intmain()
{
printf("WelcometoYou!
\n");
return0;
}
②.本题要求编写程序,计算华氏温度100°F对应的摄氏温度。
计算公式:
C=5×(F−32)/9,式中:
C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
fahr=100,celsius=计算所得摄氏温度的整数值
#include
intmain()
{
intfahr=100;
intcelsius=5*(fahr-32)/9;
printf("fahr=100,celsius=%d\n",celsius);
return0;
}
第二章作业2
①求整数均值本题要求编写程序,计算4个整数的和与平均值。
题目保证输入与输出均在整型围。
在一行中按照格式“Sum=和;Average=平均值”顺序输出和与平均值,其中平均值精确到小数点后一位
#include
intmain()
{
inta,b,c,d,Sum;
doubleAverage;
scanf("%d%d%d%d",&a,&b,&c,&d);
Sum=a+b+c+d;
Average=(a+b+c+d)/4.0;
printf("Sum=%d,Average=%.1f\n",Sum,Average);
return0;
}
②整数四则运算本题要求编写程序,计算2个正整数的和、差、积、商并输出。
题目保证输入和输出全部在整型围
输入在一行中给出2个正整数A和B。
在4行中按照格式“A运算符B=结果”顺序输出和、差、积、商。
#include
intmain()
{
inta;
intb;
scanf("%d%d",&a,&b);
printf("%d+%d=%d\n",a,b,a+b);
printf("%d-%d=%d\n",a,b,a-b);
printf("%d*%d=%d\n",a,b,a*b);
printf("%d/%d=%d",a,b,a/b);
return0;
}
③整数152的各位数字本题要求编写程序,输出整数152的个位数字、十位数字和百位数字的值
152=个位数字+十位数字*10+百位数字*100
#include
intmain()
{
inta=152/100;
intc=152%10;
intcount=152%100;
intb=count/10;
printf("152=%d+%d*10+%d*100",c,b,a);
return0;
}
第二章作业3
①求奇数分之一序列前N项和
计算序列1+1/3+1/5+...的前N项之和
输入在一行中给出一个正整数N。
在一行中按照“sum=S”的格式输出部分和的值S,精确到小数点后6位。
题目保证计算结果不超过双精度围
#include
intmain()
{
intn;
inti=1;
doubles=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{s+=1.0/(2*i-1);}
printf("sum=%.6f",s);
return0;
}
②计算序列1-1/4+1/7-1/10+...的前N项之和在一行中按照“sum=S”的格式输出部分和的值S,精确到小数点后三位。
题目保证计算结果不超过双精度围
#include
intmain()
{
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);
return0;
}
③求平方根序列前N项和
计算平方根序列√1+√2+√3+⋯的前N项之和
#include
#include
intmain()
{
intn,i;
doublex,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
x=sqrt(i);
s=s+x;
}
printf("sum=%.2f\n",s);
return0;
}
④特殊a串数列求和
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
#include
#include
intmain()
{
intn,a,i,j;
doublenum=0,sum=0;
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
num=num+a*pow(10,j-1);
}
sum=sum+num;
num=0;
}
printf("s=%d",sum);
return0;
}
第二章作业4
①本题目要求计算下列分段函数f(x)的值:
输入在一行中给出实数x
在一行中按“f(x)=result”的格式输出,其中x与result都保留一位小数。
输入样例1:
10
输出样例:
1
f(10.0)=0.1
输入样例2:
234
输出样例2:
f(234.0)=234.0
#include
intmain()
{
doublex;
scanf("%lf",&x);
if(x==10){printf("f(%0.1f)=0.1",x);}
else{printf("f(%0.1f)=%0.1f",x,x);}
return0;
}
②计算分段函数
本题目要求计算下列分段函数f(x)的值:
注:
可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。
#include
intmain()
{
doublea;
scanf("%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);}
return0;
}
③新胖子公式输入在一行中给出两个正数,依次为一个人的体重(以kg为单位)和身高(以m为单位),其间以空格分隔。
其中体重不超过1000kg,身高不超过3.0m。
首先输出将该人的体重和身高代入肥胖公式的计算结果,保留小数点后1位。
如果这个数值大于25,就在第二行输出 PANG,否则输出 HaiXing。
#include
intmain()
{
doublea,b;
scanf("%lf%lf",&a,&b);
doublec=a/(b*b);
printf("%0.1f\n",c);
if(c>25){printf("PANG");}
else{printf("HaiXing");}
return0;
}
第三章作业2
①求奇数和输入在一行中给出一系列正整数,其间以空格分隔。
当读到零或负整数时,表示输入结束,该数字不要处理
在一行中输出正整数序列中奇数的和。
87437056101-1
116
#include
intmain()
{
intn=0;
intsum=0;
do
{
scanf("%d",&n);
if(n%2==1){sum+=n;}
}
while(n>0);
printf("%d",sum);
return0;
}
②求整数的位数及各位数字之和
输入在一行中给出一个不超过109的正整数N
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开
321
36
#include
intmain()
{
intn,h,i,sum=0;
scanf("%d",&n);
do
{
h=n%10;
n/=10;
sum+=h;
i++;
}
while(n>0);
printf("%d%d",i,sum);
return0;
}
③简单的猜数字游戏
#include
intmain()
{
intx;
constintM=38;
scanf("%d",&x);
if(x>38){printf("Toobig!
");}
if(x==38){printf("GoodGuess!
");}
if(x<38){printf("Toosmall!
");}
return0;
}
第四章作业1
①奇偶分家输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。
在一行中先后输出奇数的个数、偶数的个数。
中间以1个空格分隔。
9
887410126150342277
36
#include
intmain()
{
inti,n,N;
inta=0,b=0;
scanf("%d",&n);
for(i=0;i { scanf("%d",&N); if(N%2==0){a++;} else{b++;} } printf("%d%d",b,a); } ②A除以B定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果 在一行中输出结果: 如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error #include intmain() { inta,b; scanf("%d%d",&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); return0; } ③高速公路超速处罚 在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证 输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。 在一行中输出处理意见: 若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceedx%.Ticket200”;若应吊销驾驶证,则输出“Exceedx%.LicenseRevoked”。 其中x是超速的百分比,精确到整数。 110100 Exceed10%.Ticket200 #include intmain() { inta,b; intx; 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 #include #include intmain() { 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; printf("area=%.2f;perimeter=%.2f",area,perimeter); }else{ printf("Thesesidesdonotcorrespondtoavalidtriangle"); } return0; } ⑤输出闰年 输入在一行中给出21世纪的某个截止年份。 逐行输出满足条件的所有闰年年份,即每个年份占一行。 输入若非21世纪的年份则输出"Invalidyear! "。 若不存在任何闰年,则输出“None”。 闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除 #include intmain() { intyear,i,count=0; scanf("%d",&year); if(year<=2000||year>2100) printf("Invalidyear! \n"); 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"); } return0; } ⑥逆序的三位数 程序每次读入一个正3位数,然后输出按位逆序的数字。 注意: 当输入的数字含有结尾的0时,输出不应带有前导的0。 比如输入700,输出应该是7。 #include intmain() { inta,b,c,n; scanf("%d",&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); return0; } 第四章作业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 #include intmain() { 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++; elseif(score>=60) D++; else E++; } printf("%d%d%d%d%d",A,B,C,D,E); return0; } ②计算油费。 (本题编程不完全对)现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。 为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。 本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m-自助,e-协助),计算并输出应付款。 4097m 301.34 #include intmain() { floatr1,r2; inta,b; charc; doubles; scanf("%d%d%c",&a,&b,&c); switch(b) { case90: r1=6.95;break; case93: r1=7.44;break; case97: r1=7.93;break; } switch(c) { case'm': r2=0.95;break; case'e': r2=0.97;break; } s=a*r1*r2; printf("%.2lf",s); return0; } ③分别是薯片(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 [3]chocolate [4]cola [0]exit price=3.0 price=0.0 Thanks 【程序】 #include intmain() { inti,a; printf("[1]crisps\n" "[2]popcorn\n" "[3]chocolate\n" "[4]cola\n" "[0]exit\n"); for(i=1;i<=5;i++){ scanf("%d",&a); if(a==0) break; else switch(a){ case1: printf("price=3.0\n");break; case2: printf("price=2.5\n");break; case3: printf("price=4.0\n");break; case4: printf("price=3.5\n");break; default: printf("price=0.0\n");break; } } printf("Thanks\n"); return0; } ④读入一个实数、一个操作符(仅限于+-*/)、一个实数,求该表达式的值。 若除数为0,输出“Thedivisoris0 #include intmain() { inta,b; charop; doublec; scanf("%d%c%d",&a,&op,&b); if(b==0) switch(op){ case'+': c=a+b;printf("%.2f",c);break; case'-': c=a-b;printf("%.2f",c);break; case'*': c=a*b;printf("%.2f",c);break; case'/': printf("Thedivisoris0.");break; } else switch(op){ case'+': c=a+b;printf("%.2f",c);break; case'-': c=a-b;printf("%.2f",c);break; case'*': c=a*b;printf("%.2f",c);break; case'/': c=1.0*a/b;printf("%.2f",c);break;} return0; } 第四章作业3 ①.有重复,本题略 ②对于给定的正整数N,求它的位数及其各位数字之和 321 36 #include intmain() { intn,h,i=0,sum=0; scanf("%d",&n); do { h=n%10; n/=10; sum+=h; i++; } while(n>0); printf("%d%d",i,sum); return0; } ③找出给定一系列整数中的最小值。 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。 在一行中按照“min=最小值”的格式输出n个整数中的最小值。 4-2-1231000 min=-123 #include intmain() { intn,i,m,min; scanf("%d",&n); scanf("%d",&m); min=m; for(i=1;i scanf("%d",&m); if(min>m) min=m; } printf("min=%d",min); return0; } ④输入一个整数,输出每个数字对应的拼音。 当整数为负数时,先输出fu字。 十个数字对应的拼音如下: 0: ling1: yi2: er3: san4: si5:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 PTA 平台 习题 问题 详解