算法实战(二)

2024-01-10 16:12:51

题目来源(PAT题目)

7-2 然后是几点

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

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

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

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

题解:

#include <stdio.h>
int main(){
    int beginTime,pastTime;
    int time;
    int h,m;
    scanf("%d %d",&beginTime,&pastTime);
    time=beginTime/100*60+beginTime%100+pastTime; // 统一转换为分钟最后进行运算,得到结果
    h=time/60*100; 
    m=time%60;
    time=h+m;        
    printf("%03d\n",time);
    return 0;
}

7-3 逆序的三位数

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

输入格式:
每个测试是一个3位的正整数。

输出格式:
输出按位逆序的数。

题解:

#include<stdio.h>
int main(){
    int i=0,number,array[3]={0};
    scanf("%d",&number);
    while(number){ // 把三位数进行逆序存放在数组中
        array[i++]=number%10;
        number/=10;
    }
    printf("%d",array[0]*100+array[1]*10+array[2]);
    return 0;
}

7-6 混合类型数据格式化输入

本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。

输入格式:
输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。

输出格式:
在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。

题解:

#include<stdio.h>

int main() {
    double number1, number3;
    int number2;
    char c;
    // 注意: 如果定义的double类型的数据的话 输入格式为%lf float的话为%f
    //       输出格式 可以都为%f double也可以为%lf
    scanf("%lf %d %c %lf", &number1, &number2, &c, &number3);
    printf("%c %d %.2f %.2f", c, number2, number1, number3);
    return 0;
}

在这里插入图片描述

文章来源:https://blog.csdn.net/m0_49635911/article/details/135504504
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。