如何使用指针转换小时和分钟分钟

时间:2018-02-24 12:27:37

标签: c++ pointers data-structures

我的教授给了我们下周一的作业。我们或者必须使用用户将插入的指针编写代码(整数分钟),我的代码将在几小时和几分钟内转换这些分钟......

例如,用户插入: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;
    }

我的一位朋友说我在代码中没有使用指针而是引用。我以为我理解了我的概念,但正如他所说,我没有。

3 个答案:

答案 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!