[英]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.