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
    评论
### 回答1: 好的,我会用中文回复。2021年秋季mooc编程练习中,函数和指针是非常重要的主题。函数是程序中的基本模块,可以将代码分解为可重用的部分。指针是一种特殊的变量类型,它存储了一个变量的内存地址。在编程中,指针可以用于访问和修改变量的值,也可以用于动态分配内存。掌握函数和指针的使用方法,可以提高程序的效率和可维护性。 ### 回答2: 在编程中,函数和指针是非常重要的一部分。函数是一组代码,根据输入参数进行计算,并返回值。指针是一个变量,它存储了另一个变量的内存地址。在函数中使用指针可以有效地将数据传递给函数,以及从函数中返回数据。 在编程练习中,我们学习了如何定义函数、调用函数以及函数的参数和返回值的使用。使用函数可以使我们避免重复的代码,并且可以更好地组织我们的代码。 在函数的参数中,我们可以使用指针来传递值和数组。使用指针可以减少内存的使用和传递数据的时间。在函数的返回值中,我们也可以使用指针来返回值。这是因为指针可以返回函数中定义的临时变量的值。 在编程中,指针的使用也是非常重要的。它们可以用来访问数组中的元素以及动态分配内存等。指针还可以用于实现数据结构算法,如链表、树等。 最后,我们还学习了如何使用指针来管理内存。在程序中,我们需要使用内存来存储变量和数据结构。使用指针可以帮助我们有效地管理内存,避免出现内存泄漏等问题。 总之,在编程练习中学习函数和指针是非常重要的。它们可以帮助我们写出更具有可维护性和可扩展性的代码。同时,在实际编程中,我们也需要不断地探索和学习更多的函数和指针的用法,以提高我们的编程技能和效率。 ### 回答3: 本次编程练习主要涉及到函数和指针的概念,以及如何将它们应用于实际编程中。 首先,函数可以理解为一段独立的代码块,它可以接受输入参数并返回一个输出结果。在编程中,通过定义函数来实现代码的模块化,提高代码的可读性和可维护性。函数的定义格式为:返回值类型 函数名(参数列表) {函数体}。其中,返回值类型可以是任何数据类型,包括自定义类型;参数列表可以为空,也可以有一个或多个参数,每个参数都包括参数类型和参数名;函数体中包含了实现具体功能的代码。 指针是C/C++语言中的一个重要概念,它可以用来存储内存地址。在函数中,指针可以作为参数来传递内存地址,可以避免大规模数据拷贝带来的开销。指针还可以通过解引用操作访问它所指向的内存区域,这在动态分配内存时特别有用。 在本次练习中,我们将运用函数和指针的知识来实现一些有趣的功能。 第一题:函数指针的使用 本题要求定义一个函数指针类型,以及一个使用函数指针类型作为参数的函数。函数指针类型的定义格式为:返回值类型 (*指针变量名)(参数列表);我们可以通过指针变量名来声明函数指针,通过*运算符来解引用指针。 第二题:内存分配与释放 本题要求实现动态分配一段内存,并在之后释放该内存。在C/C++中,动态分配内存可以使用malloc()函数或new运算符,释放内存可以使用free()函数或delete运算符。需要注意的是,在使用完毕后要及时释放内存,否则会产生内存泄漏的问题。 第三题:与字符串有关的指针操作 本题要求实现一些与字符串有关的指针操作,包括字符串的拷贝、字符串的比较、字符串的连接等。在C/C++中,字符串是以字符数组的形式保存的,可以用指针来操作字符串。需要注意的是,在进行指针操作时要确保指针指向的内存区域是可用的,否则会产生段错误的问题。 总之,在编程中,函数和指针是两个非常重要的概念,掌握它们可以帮助我们更好地实现代码的模块化和优化。同时,我们要注意安全性和健壮性,避免指针操作带来的潜在问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值