题目
编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的时间。使用#define或const创建一个表示60的符号常量或const变量。通过while循环让用户重复输入值,直到用户输入小于或等于0的值才停止循环。
参考答案
#include<stdio.h>
#define HOUR_MIN 60 //六十分钟等于一小时
int main()
{
int min,hour; //定义用户输入的分钟转换之后的小时
scanf("%d",&min);
while(min>0){
hour=min/60;
min=min%HOUR_MIN;
printf("你输入的时间是%d:%d\n",hour,min);
scanf("%d",&min);
}
}
参考答案2
#include <stdio.h>
#define CONVERT_M_H 60 //分钟转换小时,一小时60分钟
int main()
{
int minute, hour; //hour用来存放小时,minute用来存放分钟
printf("请输入分钟数【分钟<=0时退出】:");
while ((scanf("%d", &minute) == 1) && minute > 0) //读不到正确数据,或者分钟数小于等于0时退出
{
hour = minute / CONVERT_M_H; //算出小时
minute %= CONVERT_M_H; //算出分钟
printf("转换成小时:分钟格式:%d:%d\n请继续输入【分钟<=0时退出】:", hour, minute);
}
}
详解
代码的第一行是包含stdio.h头文件,它提供了输入输出库函数的功能。接下来,通过#define预处理指令创建一个名为CONVERT_M_H的符号常量,它表示分钟转换成小时的倍数,这里设定为60。
int minute, hour;声明了两个变量,minute用于存放用户输入的分钟数,hour用于存放转换后的小时数。
然后,通过printf函数输出一个提示信息给用户,要求用户输入分钟数。
while循环用来让用户重复输入分钟数,并进行转换,直到输入的分钟数小于等于0为止。
while循环的循环条件是(scanf(“%d”, &minute) == 1) && minute > 0,它检查scanf函数是否成功读取了一个整数,并且这个整数大于0。
在循环体中,首先对输入的分钟数进行转换计算,通过将分钟数除以CONVERT_M_H得到小时数,使用%操作符计算剩余的分钟数。然后,通过printf函数将转换后的结果输出给用户。
用户会被提示继续输入分钟数,直到用户输入的分钟数小于等于0为止,这时循环停止,程序结束执行。
参考答案3
用了指针和函数,老师都夸你。
#include <stdio.h>
#define MINUTE_PER_HOUR 60
void convertMinutesToHours(int minute, int *hour, int *minute_remainder);
int main()
{
int minute, hour, minute_remainder;
printf("请输入分钟数【分钟<=0时退出】:");
while (scanf("%d", &minute) == 1 && minute > 0)
{
convertMinutesToHours(minute, &hour, &minute_remainder);
printf("转换成小时:分钟格式:%d:%02d\n请继续输入【分钟<=0时退出】:", hour, minute_remainder);
}
return 0;
}
void convertMinutesToHours(int minute, int *hour, int *minute_remainder)
{
*hour = minute / MINUTE_PER_HOUR;
*minute_remainder = minute % MINUTE_PER_HOUR;
}
参考答案4
增加了累计功能,老师都喜笑颜开。
#include <stdio.h>
#define MINUTE_PER_HOUR 60
void convertMinutesToHours(int minute, int *hour, int *minute_remainder);
int main()
{
int minute, hour, minute_remainder, total_minute = 0, total_hour = 0;
printf("请输入分钟数【分钟<=0时退出】:");
while (scanf("%d", &minute) == 1 && minute > 0)
{
convertMinutesToHours(minute, &hour, &minute_remainder);
total_hour += hour;
total_minute += minute_remainder;
printf("本次转换时间:%d分钟 = %d小时 %02d分钟\n", minute, hour, minute_remainder);
printf("累计时间:%d小时 %02d分钟\n请继续输入【分钟<=0时退出】:", total_hour, total_minute);
}
printf("程序结束,累计时间:%d小时 %02d分钟\n", total_hour, total_minute);
return 0;
}
void convertMinutesToHours(int minute, int *hour, int *minute_remainder)
{
*hour = minute / MINUTE_PER_HOUR;
*minute_remainder = minute % MINUTE_PER_HOUR;
}
详解
增加了total_minute 和 total_hour 变量,用于记录累计的分钟数和小时数。
在用户输入分钟数后,将输入的分钟数累加到 total_minute 上,然后调用 convertMinutesToHours 函数进行分钟转换,并更新 total_hour 和 total_minute。
在每次循环中,输出累计的小时数和分钟数。
在用户输入分钟数小于等于 0 时,打印程序结束时的累计时间。