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

C 除以两个整数得到0,而我应该得到1,c,scanf,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

我想从用户那里得到距离和速度,并返回时间。 以下是我所做的代码:

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
作为输出。

这里的问题是,您没有检查
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);

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


那当然你的计算是错误的。您将获得
1
1
的时间和分钟。

格式化您的代码!那么,您要输入什么值?显示输出。您是否输入了
10,10
,或
10
(带或不带逗号?)。如果是后者,则
scanf(3)
无法匹配所有内容,因此您很可能使用未初始化的变量。您至少应该检查
scanf(3)
是否返回了2。您的代码应该保持现有答案的有效性。永远不要改变原来的问题,添加额外的信息作为编辑的prt。哦耶。。。我不知道。。