除以两个整数得到0,而我得到1

时间:2015-07-30 14:46:35

标签: c scanf

我想从用户那里获得距离和速度并返回时间。 这是我做的代码:

int main()
{
    int distance, speed;
    scanf("%d,%d", &distance, &speed);
    printf("%d\n", distance / speed);
    printf("%d hours and %d minutes", (distance/speed), (distance / speed)%60);
}

对于值:

  

10 10

我收到0作为输出。

2 个答案:

答案 0 :(得分:3)

问题在于,您没有检查scanf()的返回值以确保其成功。

按属性,scanf()提供的格式字符串应与输入完全匹配,否则,由于匹配失败,接收参数将无法获得预期值。

使用类似

的格式字符串
scanf("%d,%d", &distance, &speed);

输入

  

10 10

不是正确的,您需要输入

  

10,10

匹配格式字符串中的,

否则,您也可以从格式字符串中删除,,并以空格分隔格式提供输入。

[编辑]:

强制执行浮点除法,请将您的陈述更改为

    printf("%f\n", ( (float)distance / speed ) );
    printf("%f hours and %d minutes", ( (float)distance / speed ), (distance / speed)%60);

答案 1 :(得分:0)

您需要输入10,10,因为这是scanf()所需要的。

然后你的计算当然不正确。 1的小时和分钟都会得到。