我的教授给了我们下周一的作业。我们或者必须使用用户将插入的指针编写代码(整数分钟),我的代码将在几小时和几分钟内转换这些分钟......
例如,用户插入:333 我的代码将返回:通过333/60 = 5,55 ...
返回5小时55分钟这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int ConverTemp(int *minutes, int *hours)
{
*hours = *minutes / 60;
*minutes = *minutes / 10;
if(*minutes > 60)
{
*minutes = *minutes - 60;
*hours = *hours + 1;
}
}
int main(void)
{
setlocale(LC_ALL, "");
int minutes = 0;
int hours = 0;
printf("Insert Minutes: ");
scanf("%i", &minutes);
ConverTemp(&minutes, &hours);
printf("Hours: %i ", hours);
printf("Minutes: %i ", minutes);
return 0;
}
我的一位朋友说我在代码中没有使用指针而是引用。我以为我理解了我的概念,但正如他所说,我没有。
答案 0 :(得分:1)
将函数ConverTemp
更改为
void ConverTemp(int *minutes, int *hours)
{
*hours = *minutes / 60;
*minutes = *minutes %60;
}
返回类型应该更改为void,因为它不返回任何内容并调用函数bu引用。
分钟将是剩余的分钟数除以60
注意:其c ++代码
答案 1 :(得分:0)
您的程序确实使用指针,并取消引用它们以访问值。
首先,不需要分配零:
int minutes = 0;
int hours = 0;
从未使用过零。
其次,你的时间算术看起来有点可疑。 333分钟是5小时55分钟,真的吗? 5小时33分钟似乎更准确的结果:
int ConverTemp(int *minutes, int *hours)
{
*hours = *minutes / 60;
*minutes %= 60;
}
答案 2 :(得分:0)
*hours = *minutes / 60; // (remove)
*minutes = *minutes / 10; // (remove)
while(*minutes > 59) // (modify)if statement becomes while and 60 to 59
{
*minutes = *minutes - 60;
*hours = *hours + 1;
}
我看到你输入的初始if语句有一个小问题,我会告诉你如何修复它,但是先进入你的程序并放入180分钟......它将返回3小时18分钟这是错误的,你不需要一些不必要的代码..要使这个工作你需要删除上面的行并使if语句成为一个while语句,请注意&#34;&gt; 60&#34;在while循环中现在是&#34;&gt; 59&#34;因为您正在寻找超过60以上的数字而不是61及以上。如果教授还没有覆盖while循环,那么简单易行,while循环就像if语句一样,它会如何循环,直到分钟数不超过60!