PTA和MOOC上的编程题目答案(自编仅供参考)

C实验—编程题答案(PTA)

2020年秋- C实验1 顺序结构

  1. 交换a和b的值 (10分)
    交换变量a,b的值,如输入a的值为1,b的值为5,则输出a的值为5,b的值为1。
    输入格式:
    输入两个整数,之间用一个空格间隔。
    输出格式:
    在一行中按照“a=x,b=y”的格式输出,其中x和y均是原样输出,不加宽度控制。
    输入样例:

    1 5

    输出样例:

    a=5,b=1

# include<stdio.h>

int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("a=%d,b=%d",b,a);
    return 0;
}

2. 程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。 输入格式: 每个测试是一个3位的正整数。 输出格式: 输出按位逆序的数。

输入样例:

123

输出样例:

321

#include<stdio.h>

int main()
{
    int num,a,b,c;
    scanf("%d",&num);
    a = num / 100;
    b = (num / 10) % 10;
    c = num % 10;
    printf("%d",a+ b*10 + c*100);   
    return 0;
}

3. 本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。 输入格式: 输入在一行中给出4个整数,其间以空格分隔。 输出格式: 在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。

输入样例:

1 2 3 4

输出样例:

Sum = 10; Average = 2.5

# include<stdio.h>

int main()
{
    int a,b,c,d;
    scanf("%d %d %d %d",&a,&b,&c,&d);
    printf("Sum = %d; Average = %.1lf",a+b+c+d,(a+b+c+d)/4.0);
    return 0;
}

4. 世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。 输入格式: 输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。 输出格式: 在一行中按照“yyyy-mm-dd”的格式给出年、月、日。

输入样例:

03-15-2017

输出样例:

2017-03-15

# include<stdio.h>

int main()
{
    int a,b;
    long int c;
    scanf("%d-%d-%ld",&a,&b,&c);
    printf("%ld-%02d-%02d",c,a,b);
    return 0;
}

5. 本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。 输入格式:输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。 输出格式:在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。

输入样例:

2.12 88 c 4.7

输出样例:

c 88 2.12 4.70

# include<stdio.h>

int main()
{
    int a;
    char b;
    double c,d;
    scanf("%lf %d %c %lf",&c,&a,&b,&d);
    printf("%c %d %.2lf %.2lf",b,a,c,d);
    return 0;  
}

6.如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。
输入格式:输入在一行中给出1个正整数,单位是厘米。
输出格式:在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。

输入样例:

170

输出样例:

5 6

# include<stdio.h>

int main()
{
    int cm,foot,inch;
	scanf("%d",&cm);
	foot=cm/30.48;
	inch=(cm/30.48-foot)*12;
	printf("%d %d",foot,inch);  
    return 0;
}

7.有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。

读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。
输入格式:

输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。
输出格式:

输出四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。
输入样例:

1120 110

输出样例:

1310

# include<stdio.h>

int main()
{
    int time,h,m,xt,mt;
    scanf("%d %d",&time,&mt);
    h = time / 100;
    m = time % 100;
    xt = h * 60 + m;
    xt = xt + mt;
    h = xt / 60;
    m = xt % 60;
    printf("%d%02d",h,m);

    return 0;   
}

8.本题目要求计算存款利息,计算公式为interest=money×(1+rate)​year​​−money,其中interest为存款到期时的利息(税前),money是存款金额,year是存期,rate是年利率。
输入格式:

输入在一行中顺序给出三个正实数money、year和rate,以空格分隔。
输出格式:

在一行中按“interest = 利息”的格式输出,其中利息保留两位小数。
输入样例:

1000 3 0.025

输出样例:

interest = 76.89

# include<stdio.h>
# include<math.h>

int main()
{
    float a,b;
    double c,d;
    scanf("%f %f %lf",&a,&b,&c);
    d = a * pow((1+c),b) - a;
    printf("interest = %.2lf",d);    

    return 0;
    
}

2020年秋- C实验2 选择结构

1.本题目要求计算下列分段函数f(x)的值:

在这里插入图片描述

注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。

输入样例1:

10

输出样例1:

f(10.00) = 3.16

输入样例2:

-0.5

输出样例2:

f(-0.50) = -2.75

# include<stdio.h>
# include<math.h>

int main()
{
    double x;
    scanf("%lf",&x);
    if (x >= 0)
        printf("f(%.2lf) = %.2lf",x,pow(x,0.5));
    else
    printf("f(%.2lf) = %.2lf",x,(x+1)*(x+1)+2*x+1/x);
    
    return 0;
    
}

2.中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
输入格式:
输入在一行中给出一个不超过1000的正整数N。
输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。

输入样例1:

103

输出样例1:

Fishing in day 103

输入样例2:

34

输出样例2:

Drying in day 34

# include<stdio.h>
# include<math.h>

int main()
{
    int N,x;
    scanf("%d",&N);
    x = N % 5;
    if(x > 0 && x <= 3)
        printf("Fishing in day %d",N);
    else
        printf("Drying in day %d",N);
        
    return 0;
    
}

3.本题要求将输入的任意3个整数从小到大输出。
输入格式:
输入在一行中给出3个整数,其间以空格分隔。
输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。

输入样例:

4 2 8

输出样例:

2->4->8

#include <stdio.h>

int main()
{   
    int a,b,c,fl;
    scanf("%d %d %d",&a,&b,&c);
    if(a>b)
    {
        fl = a;a = b;b = fl;
    }
    if(a>c)
    {
        fl = a;a = c;c = fl; 
    }
    if(b>c)
    {
        fl = b;b = c;c = fl;
    }
     printf("%d->%d->%d",a,b,c);
     
    return 0;
}

4.运输公司对用户计算运费。路程(s)越远,每千米运费就越低。标准如下:

s<250km ,没有折扣;
250km≤s<500km, 2%的折扣;
500km≤s<1000km, 5%的折扣;
1000km≤s<2000km,8%的折扣;
2000km≤s<3000km,10%的折扣;
3000km≤s,15%的折扣。

设每千米每吨货物的基本运费为p,货物重为 w,距离为s,折扣为d,则总运费f的计算公式为: f=p×w×s×(1-d)
输入格式:
在一行中以小数形式输入基本运费、货重和距离,以空格作为分隔符。
输出格式:
在一行输出计算出来的运费,精确到小数点后2位的值。
输入样例:
在这里给出一组输入。例如:

100 20 300

输出样例:
在这里给出相应的输出。例如:

freight=588000.00

# include<stdio.h>
int main()
{
    float s,p,w;
    float d,f;
    scanf("%f %f %f",&p,&w,&s);
    if(s <= 250)
            d = 0;
        else if(s < 500 && s >= 0)
            d = 0.02; 
        else if(s < 1000 && s >= 500)
            d = 0.05;
        else if(s < 2000 && s >= 1000)
            d = 0.08;
        else if(s < 3000 && s >= 2000)
            d = 0.1;
    else if(s >= 3000)
            d = 0.15;
    f = p*w*s*(1-d);
        printf("freight=%.2f",f);
        
    return 0;
}

5.本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:

1201 1530

输出样例:

03:29

# include<stdio.h>

int main()
{
    int time1,time2,h1,m1,h2,m2,p1,p2,xt;
    scanf("%d %d",&time1,&time2);
    h1 = time1 / 100;
    m1 = time1 % 100;
    h2 = time2 / 100;
    m2 = time2 % 100;
    p1 = h1 * 60 + m1;
    p2 = h2 * 60 + m2;
    xt = p2 - p1;
    printf("%02d:%02d",xt / 60,xt % 60);
    
    return 0;  
}

6.通过键盘输入一个字符,编程判断并输出用户输入的是什么类型的字符。
输入格式:

输入一个字符。
输出格式:

在一行中输出该字符是哪种类型的字符。

若用户输入字符为'0'和'9'之间,输出This is a digit.
若用户输入字符在'A'和'Z'之间,输出This is a capital letter.
若用户输入字符在'a'和'z'之间,输出This is a small letter.
其他情况,输出Other character.

输入样例:

6

输出样例:

This is a digit.

C编程方法学—编程题答案(MOOC)

【编程作业1】 顺序结构编程题

1、 已知华氏温度F,计算相应的摄氏温度C。(5分)

题目内容:
已知华氏温度F,根据转换公式计算相应的摄氏温度C(保留小数点后一位小数)。
输入格式:
输入1个代表华氏温度整数。
输出格式:
输出一个代表摄氏温度的实数,保留1位小数。
输入样例:
80
输出样例:
26.7

#include<stdio.h>
int main()
{
	double f ;
	scanf( "%lf" , &f ) ;
	printf( "%.1f\n" , ( f - 32 ) * 5.0 / 9 ) ;
	return 0 ;
}

2、 输入一个三位正整数,反向输出,比如输入123,输出321。(5分)
题目内容:
输入一个三位正整数,将其反向输出,比如输入123,输出321。
输入格式:
一个三位正整数
输出格式:
反向输出该数,如果反向后是0开头,则0不输出。
输入样例1:
103
输出样例1:
301
输入样例2:
120
输出样例2:
21

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int num,a,b,c;
    scanf("%d",&num);
    a = num/100;
    b = (num/10)%10;
    c = num%10;
    printf("%d",a+b*10+c*100);
    return 0;
}

【编程作业2】 选择结构编程题

1、 目前它总说我四舍五入不对,所以没放出来。
2、 从键盘上输入税前收入,根据以下公式及规则,计算个人所得税税额。(10分)
题目内容:
从键盘上输入税前收入,根据以下公式及规则,计算个人所得税税额并输出。
应纳个人所得税税额=(税前收入 - 起征点额度)适用税率 - 速算扣除数
其中,起征点额度是3500元,其他如下:
应纳税所得额 税率 速算扣除数
不超过1500元的部分 3% 0
超过1500元至4500元的部分 10% 105
超过4500元至9000元的部分 20% 555
超过9000元至35000元的部分 25% 1005
超过35000元至55000元的部分 30% 2755
超过55000元至80000元的部分 35% 5505
超过80000的部分 45% 13505
如:某人月收入5000元,则应纳个人所得税税额为(5000-3500)
10% - 105 = 45元。
提示:输入及输出应选择实数类型。
输入格式:
输入税前收入
输出格式:
如果收入少于3500显示“不用交税”,否则输出应缴纳的税额(注意:精确到小数点后两位)
输入样例:
5150
输出样例:
60.00元

# include<stdio.h>
int main()
{
    double o_tax,miner_tax,f_tax;
   
    scanf("%lf",&o_tax);
    miner_tax = o_tax-3500.0;
        if(miner_tax <= 0)
            {printf("不用交税");goto end;}
        else if(miner_tax <= 1500 && miner_tax > 0)
            f_tax = miner_tax * 0.01; 
        else if(miner_tax <= 4500 && miner_tax > 1500)
            f_tax = miner_tax * 0.1 - 105;
        else if(miner_tax <= 9000 && miner_tax > 4500)
            f_tax = miner_tax * 0.2 - 555;
        else if(miner_tax <= 35000 && miner_tax > 9000)
            f_tax = miner_tax * 0.25 -1005;
        else if(miner_tax <= 55000 && miner_tax > 35000)
            f_tax = miner_tax * 0.3 -2755;
        else if(miner_tax <= 80000 && miner_tax > 55000)
            f_tax = miner_tax * 0.35 - 5505;
        else
            f_tax = miner_tax * 0.45 - 13505;
        printf("%.2lf元",f_tax);

    end :  
    return 0;
}
  • 20
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
PTA_基础编程答案_整章 包括但不限于如下 7-1 厘米换算英尺英寸 15 27785 103313 0.27 7-2 然后是几点 15 20063 78572 0.26 7-3 逆序的三位数 10 24732 62644 0.39 7-4 BCD解密 10 14066 23357 0.60 7-5 表格输出 5 15169 36439 0.42 7-6 混合类型数据格式化输入 5 15719 36076 0.44 7-7 12-24小时制 15 14687 51855 0.28 7-8 超速判断 10 15328 39238 0.39 7-9 用天平找小球 10 15145 33252 0.46 7-10 计算工资 15 14241 35238 0.40 7-11 分段计算居民水费 10 12907 35261 0.37 7-12 两个数的简单计算器 10 12912 33359 0.39 7-13 日K蜡烛图 15 9280 34024 0.27 7-14 求整数段和 15 11461 55664 0.21 7-15 计算圆周率 15 9826 33135 0.30 7-16 求符合给定条件的整数集 15 8986 21898 0.41 7-17 爬动的蠕虫 15 9739 24881 0.39 7-18 二分法求多项式单根 20 7282 31752 0.23 7-19 支票面额 15 7375 21837 0.34 7-20 打印九九口诀表 15 10325 35138 0.29 7-21 求特殊方程的正整数解 15 7799 22600 0.35 7-22 龟兔赛跑 20 7446 29142 0.26 7-23 币值转换 20 4333 18467 0.23 7-24 约分最简分式 15 6728 15335 0.44 7-25 念数字 15 6724 20180 0.33 7-26 单词长度 15 5648 37409 0.15 7-27 冒泡法排序 20 7255 24045 0.30 7-28 猴子选大王 20 6144 13327 0.46 7-29 删除字符串中的子串 20 4798 15074 0.32 7-30 字符串的冒泡排序 20 4752 14741 0.32 7-31 字符串循环左移 20 4527 13605 0.33 7-32 说反话-加强版 20 4030 25470 0.16 7-33 有理数加法 15 4476 10862 0.41 7-34 通讯录的录入与显示 10 4323 19524 0.22 7-35 有理数均值 20 3281 17202 0.19 7-36 复数四则运算 15 2530 10103 0.25 7-37 整数分解为若干项之和 20 2437 4673 0.52 7-38 数列求和-加强版 20 4692 35190 0.13 当前显示1 - 38项,共38项
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值