c - 打印出用户选择的两个不同年份之间的天数的程序有困难

标签 c loops

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

相关文章:

结构声明和函数指针之间的循环依赖

c - 纯 C 中的 getter 和 setter?

c - C中的bmp图像数据

java - 如何以数字0退出循环?但现在我有其他问题

java - 如何按递减顺序循环字符串?

c - c语言怎么求数组的长度?

c - 如何使用 malloc 为结构体数组分配空间?

database - 如何在 VBA 中刷新循环或更新循环

java - 需要在 for 循环中将变量再次初始化为零

ruby-on-rails - 在每个循环中创建动态 form_tag