我正在学习C和我正在编写一个简单的程序,您可以在其中输入天数,并说明当天的小时数。例如,您输入2天,它表示有48小时。没有错误,但最终结果并不好。 这是我的代码和结果 代码:
int day, hour;
hour= 24 * day;
printf("Find out how many hours are in days.\n");
printf("Enter number of days. Days = ");
scanf("%d", &day);
printf("%d days has %d hours.\n", day, hour);
return (EXIT_SUCCESS);`
这是控制台中的结果。
Find out how many hours are in days.
Enter number of days. Days = 1
1 days has 677268864 hours.
答案 0 :(得分:2)
一旦hour
已知,您需要评估day
。如果得到我的意思,你就无法在C中安排像这样的评估。 (你可以,有趣的是在C ++中,使用actor。)
目前您正在阅读未初始化的变量。这样做的行为是未定义的。
答案 1 :(得分:2)
int day, hour;
hour= 24 * day;
以上设置hour
为当前不确定值day
次24.这并不意味着hour
每次都会自动更新{ {1}}更改。
从用户获得day
的值后,将此分配移至
答案 2 :(得分:2)
想想你正在做什么:
int day, hour;
day
和hour
都是未初始化。
hour= 24 * day;
然后你立即计算hour
!但day
没有任何有意义的价值。
事实上......
scanf("%d", &day);
...您在计算后填写day
。
在计算之前移动scanf
,以便在执行乘法时初始化day
- 您的代码将正常运行。
答案 3 :(得分:2)
你为什么这样做:
hour= 24 * day;
在用户输入之前
这就是原因,你在输入之前使用未初始化的变量来计算答案(并且持有一些不可预测的垃圾......)
必须是
之类的东西int day = 0;
int hour = 0;
printf("Find out how many hours are in days.\n");
printf("Enter number of days. Days = ");
scanf("%d", &day);
hour= 24 * day;
printf("%d days has %d hours.\n", day, hour);
return (EXIT_SUCCESS);
答案 4 :(得分:0)
变量day
尚未填补;它可能包含垃圾数据。要解决此问题,请在int hours = day * 24
之后移动scanf("%d",&day);
,这样变量day
实际上会扫描值。