300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 中国大学MOOC浙江大学“程序设计入门——C语言”的PTA练习题目集答案

中国大学MOOC浙江大学“程序设计入门——C语言”的PTA练习题目集答案

时间:2024-03-30 16:38:14

相关推荐

中国大学MOOC浙江大学“程序设计入门——C语言”的PTA练习题目集答案

第I阶段,包含变量、语句、循环部分的题目,不包括数组、结构、基础算法的题目。已通过PTA测试点,所用知识均为变量、语句、循环。适合初学者观看,博主技术有限,同样以初学者视角来写,有不足之处还请多多指出。

7.1

这道超级简单的题目没有任何输入。

你只需要把这句很重要的话 —— “I’m gonna WIN!”——连续输出三遍就可以了。

注意每遍占一行,除了每行的回车不能有任何多余字符。

#include<stdio.h>

int main(){

int i=0;

for(i=0;i<3;i++){

printf(“I’m gonna WIN!\n”);

}

return 0;

}

7.2

这道超级简单的题目没有任何输入。

你只需要把这句很重要的话 —— I Love GPLT ——竖着输出就可以了。

所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车。

#include<stdio.h>

int main(){

printf(“I\n”);

printf(" \n");

printf(“L\n”);

printf(“o\n”);

printf(“v\n”);

printf(“e\n”);

printf(" \n");

printf(“G\n”);

printf(“P\n”);

printf(“L\n”);

printf(“T\n”);

return 0;

}

7.3

本题要求编写程序,输出指定的带框文字。

输入格式:

本题无输入

输出格式:

按照下列格式输出带框文字。

Welcome

#include<stdio.h>

int main()

{

printf("************\n");

printf(" Welcome\n");

printf("************\n");

return 0;

}

7.4

本题要求编写程序,输出指定的由“A”组成的菱形图案。

输入格式:

本题无输入

输出格式:

按照下列格式输出由“A”组成的菱形图案。

A

A A

A

#include<stdio.h>

int main(){

printf(" A\n");

printf(“A A\n”);

printf(" A");

return 0;

}

7.5

本题要求编写程序,输出指定的由“*”组成的倒三角图案。

输入格式:

本题目没有输入。

输出格式:

按照下列格式输出由“*”组成的倒三角图案。

include <stdio.h>

int main (void)

{

printf ("* * * *\n");

printf (" * * *\n");

printf (" * *\n");

printf (" *\n");

return 0;

}

7.6

如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。

输入格式:

输入在一行中给出1个正整数,单位是厘米。

输出格式:

在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。

输入样例:

170

输出样例:

5 6

#include <stdio.h>

int main(){

int cm;

scanf("%d",&cm);

int foot= cm/100.0/0.3048;

int inch = (cm/100.0/0.3048-foot)*12;

printf("%d %d\n",foot,inch);

return 0;

}

7.7

给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。

输入格式:

输入在一行中给出一个华氏温度。

输出格式:

在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。

输入样例:

150

输出样例:

Celsius = 65

#include<stdio.h>

int main(){

int F=0;

int Celsius=0;

scanf("%d",&F);

Celsius=5*(F-32)/9;

printf(“Celsius = %d”,Celsius);

return 0;

}

7.8

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)

输入格式:

输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。

输出格式:

在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。

输入样例:

169

输出样例:

124.2

#include<stdio.h>

int main(){

int H=0;

double weight=0.0;

scanf("%d",&H);

weight=(H-100)0.92;

printf("%.1f",weight);

return 0;

}

7.9

本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。

输入格式:

输入在一行中给出4个整数,其间以空格分隔。

输出格式:

在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。

输入样例:

1 2 3 4

输出样例:

Sum = 10; Average = 2.5

#include<stdio.h>

int main(){

int num=0;

int sum=0;

double average=0.0;

int i=0;

for(i=0;i<4;i++){

scanf("%d",&num);

sum=sum+num;

}average=sum/4.0;printf("Sum = %d; Average = %.1f",sum,average);return 0;

}

7.10

对于输入的两个整数,按照要求输出其和差积商。

输入格式:

在一行内输入两个不超过100的非负整数a和b,中间以一个空格间隔,且保证b不为0。

输出格式:

共四行,格式是:

[a] + [b] = [a+b]

[a] - [b] = [a-b]

[a] * [b] = [a*b]

[a] / [b] = [a/b]

其中,带有方括号的内容(如[a]、[b]、[a+b]等)表示相应整数或运算结果的值,在输出时要用实际的值代替。

并且:如果a能够被b整除,那么a/b应输出为整数格式,否则a/b输出为带两位小数的格式。

提示:注意表达式中的空格。

输入样例1:

6 3

输出样例1:

6 + 3 = 9

6 - 3 = 3

6 * 3 = 18

6 / 3 = 2

输入样例2:

8 6

输出样例2:

8 + 6 = 14

8 - 6 = 2

8 * 6 = 48

8 / 6 = 1.33

#include<stdio.h>

int main(){

int a,b;

double c=0.0;

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,ab);

c=a1.0/b*1.0;

if(a%b==0)

printf("%d / %d = %.f\n",a,b,c);

else

printf("%d / %d = %.2f\n",a,b,c);

return 0;

}

7.11

已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均成绩(结果按整型输出)。

输入格式:

本题无输入

输出格式:

按照下列格式输出结果:

math = 87, eng = 72, comp = 93, average = 计算所得的平均成绩

#include<stdio.h>

int main(){

printf(“math = 87, eng = 72, comp = 93, average = %d”,(87+72+93)/3);

return 0;

}

7.12

世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。

输入格式:

输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。

输出格式:

在一行中按照“yyyy-mm-dd”的格式给出年、月、日。

输入样例:

03-15-

输出样例:

-03-15

#include<stdio.h>

int main()

{

int year,month,day;

scanf("%d-%d-%d",&month,&day,&year);printf("%04d-%02d-%02d\n",year,month,day);return 0;

}

7.13

如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。

输入格式:

输入第一行给出一个正整数D(1 ≤ D ≤ 7),代表星期里的某一天。

输出格式:

在一行中输出D天的后天是星期几。

输入样例:

3

输出样例:

5

#include<stdio.h>

int main(){

int day=0;

scanf("%d",&day);

switch(day){

case 1:printf(“3”);break;

case 2:printf(“4”);break;

case 3:printf(“5”);break;

case 4:printf(“6”);break;

case 5:printf(“7”);break;

case 6:printf(“1”);break;

case 7:printf(“2”);break;

}return 0;

}

7.14

如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。

输入格式:

输入第一行给出一个正整数D(1 ≤ D ≤ 7),代表星期里的某一天。

输出格式:

在一行中输出D天的后天是星期几。

输入样例:

3

输出样例:

5

#include<stdio.h>

int main(){

int time,min;

int shi,fen;//新时分

scanf("%d %d",&time,&min);

shi=time/100;//求小时数 fen=shi*60+time%100+min;//求总分钟数 shi=fen/60;fen=fen-shi*60;time=shi*100+fen;printf("%d",time);return 0;

}

7.15

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!

现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。

输入格式:

输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。

输出格式:

输出对应的十进制数。

输入样例:

18

输出样例:

12

#include<stdio.h>

int main(){

int n,a,b;

scanf("%d",&n);

a = n/16;

b = n%16;

printf("%d",a*10+b);

return 0;

}

7.16

对于任一整数n,符号函数sign(n)的定义如下:

请编写程序计算该函数对任一输入整数的值。

输入格式:

输入在一行中给出整数n。

输出格式:

在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。

输入样例1:

10

输出样例1:

sign(10) = 1

输入样例2:

0

输出样例2:

sign(0) = 0

输入样例3:

-98

输出样例3:

sign(-98) = -1

#include<stdio.h>

int main(){

int num=0;

scanf("%d",&num);

if(num>0)

printf(“sign(%d) = 1”,num);

else if(num==0)

printf(“sign(%d) = 0”,num);

else

printf(“sign(%d) = -1”,num);

return 0;

}

7.17

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

大于等于90分为A;

小于90且大于等于80为B;

小于80且大于等于70为C;

小于70且大于等于60为D;

小于60为E。

输入格式:

输入在一行中给出一个整数的百分制成绩。

输出格式:

在一行中输出对应的五分制成绩。

输入样例:

90

输出样例:

A

#include<stdio.h>

int main(){

int garde;

scanf("%d",&garde);

switch(garde/10){

case 10:printf(“A”);break;

case 9:printf(“A”);break;

case 8:printf(“B”);break;

case 7:printf(“C”);break;

case 6:printf(“D”);break;

default:printf(“E”);break;

}

return 0;

}

7.18

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

起步里程为3公里,起步费10元;

超起步里程后10公里内,每公里2元;

超过10公里以上的部分加收50%的回空补贴费,即每公里3元;

营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

输入格式:

输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。

输出格式:

在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。

输入样例1:

2.6 2

输出样例1:

10

#include<stdio.h>

int main(){

double money1,mile;

int time;

int money2;

double sum=0.0;

scanf("%lf",&mile);

scanf("%d",&time);

if(mile<3)money1=10;else if(mile<10)money1=(mile-3)*2.0+10;if(mile>10)money1=(mile-10)*3.0+(10-3)*2+10;money2=time/5*2;sum=money1+money2;printf("%d",(int)(sum+0.5));return 0;

}

7.19

本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:

输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:

在一行输出日期是该年中的第几天。

输入样例1:

/03/02

输出样例1:

61

输入样例2:

2000/03/02

输出样例2:

62

#include<stdio.h>

int main(){

int year,month,day;

int d1,d2;

scanf("%d/%d/%d",&year,&month,&day);

switch(month){

case 1:d1=day;break;

case 2:d1=31+day;break;

case 3:d1=31+28+day;break;

case 4:d1=31+28+31+day;break;

case 5:d1=31+28+31+30+day;break;

case 6:d1=31+28+31+30+31+day;break;

case 7:d1=31+28+31+30+31+30+day;break;

case 8:d1=31+28+31+30+31+30+31+day;break;

case 9:d1=31+28+31+30+31+30+31+31+day;break;

case 10:d1=31+28+31+30+31+30+31+31+30+day;break;

case 11:d1=31+28+31+30+31+30+31+31+30+31+day;break;

case 12:d1=31+28+31+30+31+30+31+31+30+31+30+day;break;

}if(year%400==0||(year%4==0&&year%100!=0)){if(month>2)d1++;}printf("%d",d1);return 0;

}

7.20

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

输入格式:

输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出格式:

在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例:

1+2*10-10/2=

输出样例:

10

#include<stdio.h>

int 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(ch)

{

case ‘+’: a=a+b;break;

case ‘-’:a=a-b;break;

case '’:a=ab;break;

case ‘/’:a=a/b;break;

default :

flag=1;break;

}

if(flag)

break;

}

if(flag)

{

printf(“ERROR”);

}

else

{

printf("%d",a);

}

return 0;

}

7.21

模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。

输入格式:

输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。

输出格式:

在一行中输出测速仪显示结果,格式为:Speed: V - S,其中V是车速,S或者是Speeding、或者是OK。

输入样例1:

40

输出样例1:

Speed: 40 - OK

输入样例2:

75

输出样例2:

Speed: 75 - Speeding

#include<stdio.h>

int main(){

int speed;

scanf("%d",&speed);

if(speed>60)

printf(“Speed: %d - Speeding”,speed);

else

printf(“Speed: %d - OK”,speed);

return 0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。