我正在学习 C 类的介绍,我的教授刚刚将我们从 python(作为介绍)转移到 C。我在理解 C 语法时遇到了一些困难。该程序应该计算两个不同年份之间的天数并计算闰年。
这是我目前的代码:
#include <stdio.h>
int main() {
int startyear, endyear;
int totalyears, index;
int difference, numyears, days;
printf("What is the starting year of your time period?\n");
scanf("%d", &startyear);
printf("What is the ending year of your time period?\n");
scanf("%d", &endyear);
difference = startyear;
numyears = 0;
days = 0;
while (difference <= endyear) {
difference++;
numyears++;
if (difference / 4 == 1) {
days + 1;
}
}
printf("There are %d days between 1/1/%d and 1/1/%d\n", days + numyears * 365 , startyear, endyear);
return 0;
当我使用 2003 和 2005 作为两年时,程序打印出的结果是 4,201,453 天,这显然是错误的。实际结果应该是 731 左右。我知道我可能在我的 while 循环中犯了一些错误,但我不太确定如何修复它。我试图确保 while 循环检查月份是否可以被 4 整除,这将标志着闰年,我假设为了做到这一点,我将使用以下行:
if (difference / 4 == 1) {
days + 1;
“1”表示将 bool 表达式返回为“真”,但我不太确定 C 是否是这样读取它的。对于这个冗长的问题,我深表歉意,但我只是想尽可能说清楚。我也很抱歉,因为我觉得我发布的代码一团糟,但我真的不知道从这里到哪里才能解决这个问题。
提前致谢,伙计们。
编辑:到目前为止我已经关注了评论,并且我已经设法让程序计算 1095 天。我越来越近了,但我的计算肯定还是有问题。
最佳答案
您尚未初始化 numyears
,因此它包含一个不确定值,也就是开头的垃圾值。
当您执行任何进一步的操作(包括 numyears++
和 printf()
中的计算)时,将使用此不确定值。
你应该初始化它:
int numyears = 0;
此外,index
从未使用过,但已声明,因此您可以将其删除。
关于c - 打印出用户选择的两个不同年份之间的天数的程序有困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9476039/