PTA C入门练习第I段——变量、表达式、分支、循环 7-11 —— 7-15

7-11 计算平均分 (5 分)

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

输入格式:

本题无输入

结尾无空行

输出格式:

按照下列格式输出结果:

math = 87, eng = 72, comp = 93, average = 计算所得的平均成绩
#include <stdio.h>
int main(){
    int math = 87;
    int eng = 72;
    int comp = 93;
    int average = (math + eng + comp) / 3;
    printf("math = 87, eng = 72, comp = 93, average = %d", average);
    return 0;
}

7-12 日期格式化 (5 分)

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

输入格式:

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

输出格式:

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

输入样例:
03-15-2017
输出样例:
2017-03-15
#include <stdio.h>
int main(){
    int year, month, day;
    scanf("%d-%d-%d", &month, &day, &year);
    printf("%d-%02d-%02d", year, month, day);
    return 0;
}

[注]: C语言中,用%(number)d来表示字段的宽度,如:%2d表示字段宽度为2,此时如果输入的数小于宽度,默认以空格填充。但我们可以在百分号后加上0改变填充方式,例:%02d。

7-13 后天 (5 分)

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

输入格式:

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

输出格式:

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

输入样例:
3
输出样例:
5
#include <stdio.h>
int main(){
    int today;
    int afterTomorrow;
    scanf("%d", &today);
    if(today>5){
        afterTomorrow = today + 2 - 7;
    }else{
        afterTomorrow = today + 2;
    }
    printf("%d", afterTomorrow);
    return 0;
}

7-14 然后是几点 (15 分)

有时候人们用四位数字表示一个时间,比如 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 now, lag, after;
    int nowMinute, lagMinute, afterMinute;
    int nowHour, lagHour, afterHour;
    scanf("%d %d", &now, &lag);
    nowMinute = now % 100;
    nowHour = now / 100;
    lagMinute = lag % 60;
    lagHour = lag / 60;
    if(nowMinute + lagMinute >= 60){
        afterMinute = nowMinute + lagMinute - 60;
        afterHour = nowHour + lagHour + 1;
    }
    else if(nowMinute + lagMinute < 0){
        afterMinute = nowMinute + lagMinute + 60;
        afterHour = nowHour + lagHour - 1;
    }else{
        afterMinute = nowMinute + lagMinute;
        afterHour = nowHour + lagHour;
    }
    after = afterHour * 100 + afterMinute;
    if(afterHour<10){
        printf("%03d", after);
    }else{
        printf("%d", after);
    }
    return 0;
}

方法二:

#include <stdio.h>
int main(){
    int now, lag, after;
    scanf("%d %d", &now, &lag);
    int nowMinute, afterMinute;
    nowMinute = (now / 100) * 60 + (now % 100);
    afterMinute = nowMinute + lag;
    after = (afterMinute / 60) * 100 + (afterMinute % 60);
    if(afterMinute<600){
        printf("%03d", after);
    }else{
        printf("%d", after);
    }
    return 0;
}

7-15 BCD解密 (10 分)

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 falseNumber,rightNumber;
    scanf("%d", &falseNumber);
    rightNumber = (falseNumber / 16) * 10 + (falseNumber % 16);
    printf("%d", rightNumber);
    return 0;
}

[注]:单位表示见图,例:12 = 00010010; 10 = 10000000
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
7-1 jmu-java-01入门-第一个pta上Java程序是一个关于学习Java编程的题目。在这个题目中,我们需要编写一个简单的Java程序。 这个程序要求实现一个功能,即能够输出"Hello Java!"这句话。实现这个功能很简单,只需要使用Java的输出语句System.out.println("Hello Java!");就可以了。 编写这个程序的步骤如下: 1. 打开编程软件,比如Eclipse或者IntelliJ IDEA等。创建一个Java项目。 2. 在项目的src目录下创建一个新的Java类。 3. 在这个Java类中,编写主函数public static void main(String[] args)。 4. 在主函数中,添加一行代码System.out.println("Hello Java!");,这行代码的作用是输出"Hello Java!"这句话。 5. 运行这个程序,可以看到控制台输出了"Hello Java!"这句话。 这个题目的目的是帮助我们熟悉Java的编程环境,并且学会使用基本的输出语句。虽然这个程序很简单,但是它对于初学者来说是一个很好的入门练习。 在学习编程的过程中,我们会遇到很多类似的题目,通过完成这些题目,我们可以不断熟悉各种编程语言的语法和特性,提高我们的编程能力。而且,通过编写简单的程序,我们还能够培养我们的逻辑思维能力和解决问题的能力。 总之,7-1 jmu-java-01入门-第一个pta上Java程序是一个帮助我们学习Java编程的题目,通过完成这个题目,我们可以学会使用Java的输出语句,熟悉Java的编程环境,提高我们的编程能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值