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。哦耶。。。我不知道。。