C - 一定天数是多少小时?

时间:2017-02-21 19:46:52

标签: c days

我正在学习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.

5 个答案:

答案 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;

dayhour都是未初始化

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实际上会扫描值。