簡體   English   中英

C 程序未提供所需的 output

[英]C program not giving desired output

#include <stdio.h>
#include <stdlib.h>

int main(){
    int f,x,s,y,t,l,year,sum;

  f=year/1000;
  x=year%1000;
  s=x/100;
  y=x%100;
  t=y/10;
  l=y%10;
  sum=f+s+t+l;

    printf("Enter a Year:");
    scanf("%d",&year);

    if (year%4==0){
        printf("Leap,%d",sum);
    }
    else if (year%400==0){
    printf("Leap,%d",sum);
    }
    else if (year%100==0){
        printf("Regular,%d",sum);
    }
    else {printf("Regular,%d",sum);}
    return 0;
}

目標:使用 stdin (scanf) 輸入一個 4 位數的年份。 顯示是否為閏年。 如果是閏年,則顯示 - 閏年的數字總和。 如果不是閏年,則顯示 - Regular,年份的數字總和。

它給出正確的閏年 output 但不是數字的總和

C中的表達式不是關聯變量變化時自動生效的公式。 他們在程序的那個點處理相關變量的當前值。

在讀取year的值,您需要將數字計算移動到。

printf("Enter a Year:");
scanf("%d",&year);

f=year/1000;
x=year%1000;
s=x/100;
y=x%100;
t=y/10;
l=y%10;
sum=f+s+t+l;

此外,您還需要再看看如何進行閏年計算。 嘗試將 1900、1999、2000 和 2004 作為測試值。

@dbush 回答了您的實際問題,但是,您的閏年標准也不太正確。 您的第一個if分支將始終在year % 4 == 0時執行,無論year % 100 == 0是否。 所以你真正想要的是

if(year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
 // leap year ...
}
else {
 // no leap year ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM