C语言PTA平台习题与答案_第1页
C语言PTA平台习题与答案_第2页
C语言PTA平台习题与答案_第3页
C语言PTA平台习题与答案_第4页
C语言PTA平台习题与答案_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 作业 1.本题要求编写程序,输出一个短句“Welcome to You!”#includeint main() printf(Welcome to You!n); return 0;.本题要求编写程序,计算华氏温度100F对应的摄氏温度。计算公式:C=5(F32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。fahr = 100, celsius = 计算所得摄氏温度的整数值#includeint main() int fahr = 100; int celsius = 5*(fahr-32)/9; printf(fahr = 100,celsius = %dn,ce

2、lsius);return 0;第二章 作业2求整数均值本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位#includeint main() int a,b,c,d,Sum; double Average; 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 = %.1fn,Sum,Avera

3、ge); return 0;整数四则运算本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内输入在一行中给出2个正整数A和B。在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。#includeint main() int a; int b; scanf(%d %d,&a,&b); printf(%d + %d = %dn,a,b,a+b); printf(%d - %d = %dn,a,b,a-b); printf(%d * %d = %dn,a,b,a*b); printf(%d / %d = %d,a,b,a/b); return 0

4、;整数152的各位数字本题要求编写程序,输出整数152的个位数字、十位数字和百位数字的值152 = 个位数字 + 十位数字*10 + 百位数字*100#includeint main() int a=152/100; int c=152%10; int count=152%100; int b=count/10; printf(152 = %d + %d*10 + %d*100,c,b,a); return 0;第二章 作业3求奇数分之一序列前N项和计算序列 1 + 1/3 + 1/5 + . 的前N项之和输入在一行中给出一个正整数N。在一行中按照“sum = S”的格式输出部分和的值S,精确

5、到小数点后6位。题目保证计算结果不超过双精度范围#includeint main() int n; int i=1; double s = 0; scanf(%d,&n); for (i=1;i=n;i+)s+=1.0/(2*i-1); printf(sum = %.6f,s); return 0 ;计算序列 1 - 1/4 + 1/7 - 1/10 + . 的前N项之和在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范围#include int main() int fm=1,N,b=1; double item,sum=0,i; sca

6、nf(%d,&N); for(i=1.0;i=N;i+) item=b*(i/fm); sum=sum+item; b=-b; fm=fm+2; printf(%.3fn,sum); return 0; 求平方根序列前N项和计算平方根序列1+2+3+的前N项之和#include#includeint main() int n,i; double x,s=0; scanf(%d,&n); for(i=1;i=n;i+) x = sqrt(i); s = s+x; printf(sum = %.2fn,s); return 0 ;特殊a串数列求和给定两个均不超过9的正整数a和n,要求编写程序求a+

7、aa+aaa+aaa(n个a)之和。#include#includeint main() int n,a,i,j; double num=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); return 0;第二章 作业4本题目要求计算下列分段函数f(x)的值:输入在一行中给出实数x在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。输入样例1:10输出样例:1f(

8、10.0) = 0.1输入样例2:234 输出样例2:f(234.0) = 234.0#includeint main() double x; scanf(%lf,&x); if(x=10)printf(f(%0.1f) = 0.1,x); else printf(f(%0.1f) = %0.1f,x,x); return 0;计算分段函数本题目要求计算下列分段函数f(x)的值:注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。#includeint main() double a; scanf(%lf,&a); if(a=0)printf(f(%0.2f) =

9、 %0.2f,a,sqrt(a); else printf(f(%0.2f) = %0.2f,a,(a+1)*(a+1)+2*a+1/a); return 0;新胖子公式输入在一行中给出两个正数,依次为一个人的体重(以 kg 为单位)和身高(以 m 为单位),其间以空格分隔。其中体重不超过 1000 kg,身高不超过 3.0 m。首先输出将该人的体重和身高代入肥胖公式的计算结果,保留小数点后 1 位。如果这个数值大于 25,就在第二行输出PANG,否则输出Hai Xing。#includeint main() double a,b; scanf(%lf %lf,&a,&b); double c

10、=a/(b*b); printf(%0.1fn,c); if(c25)printf(PANG); else printf(Hai Xing); return 0;第三章 作业2求奇数和输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理在一行中输出正整数序列中奇数的和。8 7 4 3 70 5 6 101 -1116#includeint main() int n=0; int sum=0; do scanf(%d,&n); if(n%2=1) sum+=n; while (n0); printf(%d,sum); return 0;求整数的位数及各位

11、数字之和输入在一行中给出一个不超过109的正整数N在一行中输出N的位数及其各位数字之和,中间用一个空格隔开3213 6#includeint main() int n,h,i,sum=0; scanf(%d,&n); do h=n%10; n/=10; sum+=h; i+; while (n0); printf(%d %d,i,sum); return 0;简单的猜数字游戏#includeint main() int x; const int M=38; scanf (%d,&x); if(x38)printf(Too big!); if(x=38)printf(Good Guess!);

12、if(x38)printf(Too small!); return 0;第四章 作业1奇偶分家输入第一行给出一个正整N(1000);第2行给出N个非负整数,以空格分隔。在一行中先后输出奇数的个数、偶数的个数。中间以1个空格分隔。988 74 101 26 15 0 34 22 773 6#includeint main() int i,n,N; int a=0,b=0; scanf(%d,&n); for (i = 0;i n;i+) scanf(%d,&N); if(N % 2=0)a+; elseb+; printf(%d %d,b,a);A除以B定两个绝对值不超过100的整数A和B,要求

13、你按照“A/B=商”的格式输出结果在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error#includeint main() int a,b; scanf(%d %d,&a,&b); if(b0)printf(%d/%d=%.2f,a,b,a*1.0/b); else if(b0)printf(%d/(%d)=%.2f,a,b,a*1.0/b); else printf(%d/%d=Error,a); return 0;高速公路超速处罚在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达

14、到或超出50%,就要吊销驾驶证输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。110 100Exceed 10%. Ticket 200#includeint main() int a,b; int x; scanf(%d %d,&a,&b); x = round(1.0*(a-b)/b*100); if(x10)printf(OKn); else

15、 if (x50)printf(Exceed %d%. Ticket 200n,x); else printf(Exceed %d%. License Revokedn,x);return 0;输出三角形面积和周长根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=s(sa)(sb)(sc),其中s=(a+b+c)/2。area = 面积; perimeter = 周长These sides do not correspond to a valid triangle5 5 3area = 7.15; perim

16、eter = 13.00#include#includeint main() double a,b,c,s; double area,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(These sides do not co

17、rrespond to a valid triangle); return 0;输出闰年输入在一行中给出21世纪的某个截止年份。逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出Invalid year!。若不存在任何闰年,则输出“None”。闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除#includeint main()int year, i, count=0;scanf(%d, &year);if(year2100)printf(Invalid year!n);elsefor(i=2001; i=year; i+)if(i%4=0&i

18、%100!=0|i%400=0)printf(%dn, i);count+;if(count=0)printf(Nonen);return 0;逆序的三位数程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。#includeint main() int a, 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

19、%d,n,c,b); return 0;第四章 作业2.统计学生成绩大于等于90分为A;小于90且大于等于80为B;小于80且大于等于70为C;小于70且大于等于60为D;小于60为E。输入在第一行中给出一个正整数N(1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。777 54 92 73 60 65 691 0 2 3 1#includeint main()int n, score; int i;int A, B, C, D, E;A=B=C=D=E=0;scanf(%d

20、, &n);for( i=1; i=90)A+;else if(score=80)B+;else if(score=70)C+;else if(score=60)D+;elseE+;printf(%d %d %d %d %d, A, B, C, D, E);return 0;计算油费。(本题编程不完全对)现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助)

21、,计算并输出应付款。40 97 m301.34#includeint main() float r1,r2; int a,b; char c; double s; scanf(%d %d %c,&a,&b,&c); switch(b) case 90 : r1=6.95; break; case 93 : r1=7.44; break; case 97 : 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); return 0;分别是薯片(c

22、risps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),单价分别对应为3.0元/公斤、2.5元/公斤、4.0元/公斤、3.5元/份。首先在屏幕上显示以下菜单:1 crisps 2 popcorn 3 chocolate4 cola 0 exit用户可以输入编号14查询对应食品的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留一位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束,显示“Th

23、anks”。1 7 0 21 crisps2 popcorn3 chocolate4 cola0 exitprice = 3.0price = 0.0Thanks【程序】#includeint main() int i, a; printf(1 crispsn 2 popcornn 3 chocolaten 4 colan 0 exitn); for(i=1;i=5;i+) scanf(%d,&a); if(a=0) break; else switch(a) case 1: printf(price = 3.0n);break; case 2: printf(price = 2.5n);br

24、eak; case 3: printf(price = 4.0n);break; case 4: printf(price = 3.5n);break; default: printf(price = 0.0n);break; printf(Thanksn); return 0;读入一个实数、一个操作符(仅限于+ - * /)、一个实数,求该表达式的值。若除数为0,输出“The divisor is 0#includeint main() int a, b; char op; double c; scanf(%d %c %d,&a,&op,&b); if(b=0) switch(op) cas

25、e+: 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(The divisor is 0.);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; print

26、f(%.2f,c);break; return 0;第四章 作业3.有重复,本题略对于给定的正整数N,求它的位数及其各位数字之和3213 6#includeint main() int n,h,i = 0,sum = 0; scanf(%d,&n); do h = n%10; n/=10; sum+=h; i+; while(n0); printf(%d %d,i,sum); return 0 ;找出给定一系列整数中的最小值。输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。在一行中按照“min = 最小值”的格式输出n个整数中的最小值。4 -2 -123 100 0min =

27、 -123#includeint main()int n,i,m,min;scanf(%d,&n);scanf(%d,&m);min=m;for(i=1;im)min=m; printf(min = %d,min);return 0;输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8: ba 9: jiu-600fu liu ling ling#includeint main(void)char c;c=getchar();while(c!=n)i

28、f(c=-) printf(fu);else if(c=0) printf(ling);else if(c=1) printf(yi);else if(c=2) printf(er);else if(c=3) printf(san);else if(c=4) printf(si);else if(c=5) printf(wu);else if(c=6) printf(liu);else if(c=7) printf(qi);else if(c=8) printf(ba);else if(c=9) printf(jiu);c=getchar();if(c!=n)printf( );return

29、0;第五章 作业1计算阶乘和对于给定的正整数N,需要你计算S=1!+2!+3!+.+N!。#includeint main()int i,j;int n,sum=0;int temp=1;scanf(%d,&n);for( i=1; i=n; i+)for( j=1;j=i;j+)temp *= j;sum += temp;temp = 1;printf(%d,sum);判断素数输入在第一行给出一个正整数N(10),随后N行,每行给出一个小于231的需要判断的正整数。211111YesNo#include#includeint main() int a, i; long b; int h; i

30、nt isprime; scanf(%d,&a); for(i=1;i=a;i+) isprime=1; scanf(%ld,&b); if(b=1) isprime=0; for(h=2;h=sqrt(b);h+) if(b%h=0)isprime=0;break; if(isprime=1) printf(Yesn); else printf(Non); return 0;素数和编程求100200之间全部素数的和。直接输出结果,没有任何附加格式字符。#includeint main() int x; int sum=0; x=6; for(x=100;x200;x+) int i; int

31、 isPrime = 1; for(i=2;ix;i+) if(x%i=0) isPrime = 0; break; if(isPrime =1) sum+=x; printf(%d,sum); return 0;N元钱买N只鸡,公鸡每只5元,母鸡每只3元,小鸡1元3只,N元钱必须刚好买N只鸡,而且鸡必须整只买,不能劈开买。有几种买法呢?这就是N鸡问题。在一行中输入一个正整数N。(N500)在一行中输出两个整数cs,中间用一个空格隔开,表示N元钱买N只鸡共有c种买法,且所有买法的公鸡数量之和是s。#includeint main()int n,c=0,s=0;int gong,mu,xiao;

32、scanf(%d,&n);for(gong=0;gong=n/5;gong+)for(mu=0;mu=n/3;mu+)xiao=n-gong-mu;if(gong*5+mu*3+xiao/3=n&xiao%3=0)c+;s+=gong;if(c=0)printf(0 -1);elseprintf(%d %d,c,s);return 0;第五章 作业2打印倒直角三角形图形 $ $ $ $ $ 第一行图形符号前面有1个空格。以倒直角三角形的格式输出5行由$符号构成的三角图形,每个$符号占固定1位,第一行第一个$符号前有1个空格。#include main()int i,j;for(i=1;i=5;

33、i+)for(j=1;j=i;j+)printf( );for(j=1;j=6-i;j+)printf($);printf(n);本题要求对任意给定的一位正整数N,输出从1*1到N*N的部分口诀表。输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。#includeint main()int i,j,N;scanf(%d,&N);for(i=1;i=N;i+)for(j=1;ji+1;j+)printf(%d*%d=%-4d,j,i,j*i); printf(n); 最大公约数和最小公倍数输入在一行中给出两个正整数M和N在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分

34、隔。511 29273 2044#includeint main() int a,b,c,m,n; scanf(%d %d,&m,&n); if(mn) c=m; m=n; n=c; a=m; b=n; while(b!=0) c=a%b; a=b; b=c; printf(%d %d,a,m*n/a); return 0;求平方与倒数序列的部分和输入在一行中给出两个正整数m和n(mn)#include#includeint main()int i, n, m;double sum;scanf(%d %d, &m, &n);sum=0;for(i=m; i=n; i+)sum=sum+pow(

35、i,2)+1.0/i;printf(sum = %.6f, sum);return 0;求交错序列前N项和计算交错序列 1-2/3+3/5-4/7+5/9-6/11+. 的前N项之和#include int main() int fm=1,N,b=1; double item,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(%.3fn,sum); return 0; 近似求PI本题要求编写程序,根据下式求的近似值,直到最后一项小于给定精度eps。scanf(%

36、le, &eps);PI = 近似值1E-5PI = 3.14158#includeint main() double eps,i,sum=1,a=1,b=1,c=1; scanf(%le,&eps); for(i=1;c=eps;i+) a=a*i; b=b*(2*i+1); c=1.0*a/b; sum+=c; printf(PI = %.5f,sum*2); return 0;第五章 作业3 (复习课)按从小到大的顺序输出所有不超过2n1的梅森数,每行一个如果完全没有,则输出“None”#include#includeint main()int i,n,j;int b=0,t=0;sca

37、nf(%d,&n);if(n=1) printf(None);for(j=2;j=n;j+)b=pow(2,j)-1;for(i=2;ib;i+)if(b%i=0)t=1;break;if(t=0)printf(%dn,b);t=0;return 0;一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?#includeint main()int i,n;int sum=1;scanf(%d,&n);for(i=1;in;

38、i+)sum=(sum+1)*2;printf(%d,sum);皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?33 594.9 1.0#includeint main()int n,i;double a,h;double l=0.0;scanf(%lf %d,&a,&n);l=1.0*a;if(n!=0)if(n=1)printf(%.1f %.1f,a,a/2.0);elsefor(i=1;in;i+)a/=2.0;l+=a*2;h=a;printf(%.1f %.1f,l,h/2.0);e

39、lse printf(0.0 0.0);假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。1+2*10-10/2=10# includeint main()int a,b,c,flag=0;char ch;scanf(%d,&a);while(ch=getchar()!=)scanf(%d,&b);if(ch=/)&(b=0)flag=1;break;switch

40、(ch)case +: a=a+b;break;case -:a=a-b;break;case *:a=a*b;break;case /:a=a/b;break;default :flag=1;break;if(flag) break;if(flag)printf(ERROR); else printf(%d,a); return 0;第六章 作业1本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”5 73 5 7 1 92#includeint main() int n,x,i; int flag=0; scanf(%d %

41、d,&n,&x); int an; for(i=0;in;i+) scanf(%d,&ai); if(ai=x) printf(%dn,i); flag=1; if(flag=0) printf(Not Found); return 0;求最大值及其下标找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)#includeint main() int n,i,j; int a10; scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); j=0; for(i=1;iaj) j=i; printf(%d %d,aj,j);return 0;输出数组元素对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果。105 1 7 14 6 36 4 28 50 100-4 6 7-8 30 -3224 22 50#includeint main()int n, i;scanf(%d,&n);int an;int cn-1;for(i=0;in;i+)scanf(%d,&ai);for(i=0;in-1;i+)ci=ai+1-ai;for(i=0;in-1;i+)printf(%d,ci);if(i+1)%3=0)printf(n);else if(i+2n)printf( );r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论