【发布时间】:2018-11-26 22:02:42
【问题描述】:
我需要用户输入三个数字,我的程序需要显示这些数字中最大的一个。我似乎无法弄清楚问题所在。我得到的结果是 "最大的数是 0.000"
#include <stdio.h>
int main()
{
double n1, n2, n3;
printf("Enter your three numbers: ");
scanf("%1f %1f, %1f", &n1, &n2, &n3);
if (n1>= n2 && n1>= n3)
printf("The greatest number is %f", n1);
if (n2>=n1 && n2>= n3)
printf("The greatest number is %f", n2);
if (n3>=n2 && n3>=n1)
printf("The greatest number is %f", n3);
return 0;
}
【问题讨论】:
-
确保您已启用编译器上的所有警告。许多现代编译器可以警告无效的转换说明符。
-
对我来说,这个
%1f看起来像是一个错字——1应该是一个l——就像在long中一样——你正在扫描双精度,并指定浮点数。 -
调试时的良好第一步: 0) 启用编译器警告并将警告视为错误; 1) 使用硬编码数据而不是用户输入开始测试; 2) 验证用户输入是否产生了您认为它产生的结果。
标签: c