题目

编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的时间。使用#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 时,打印程序结束时的累计时间。