-
你的邏輯沒有錯。
您的格式有乙個小錯誤:scanf("%d,%d,%d", y, m, d) 應替換為 :
scanf("%d%d%d",&y,&m,&d);
-
要計算兩年、兩個月和天之間的天數,這個想法是計算每天的總天數並減去它們。
要考慮閏年的情況,判斷閏年的公式:4年內每次閏,100年不閏,再400年。
year % 4 == 0 &&year % 100 != 0) |year % 400 == 0)
我在網上找到了乙個(懶惰==!),修改如下:
#include
int sum(int y,int m,int d);int i,s=0;
for(i=1;i s2)
printf("間隔天數:%ld",s1-s2);
elseprintf("間隔天數:%ld",s2-s1);
以上**VC6編譯測試通過。
雖然這個想法看起來有點傻,但其他演算法,**太長太複雜了,最好直接計算兩個日期和公元元年1月1日之間的天數,然後減去它們。
-
你好! 您的程式執行良好,這不是因為輸入資料時格式有問題。
-
[步驟1]:
main()
sum=sum+day;*加上給定日期的天數*以確定它是否為閏年*
leap=1;
elseleap=0;
if(leap==1&&month>2) *如果是閏年且月份大於 2,則總天數應加一天*
sum++;
printf("it is the %dth day.",sum);}
-
[步驟1]:
main()
sum=sum+day;*加上給定日期的天數*以確定它是否為閏年*
leap=1;
elseleap=0;
if(leap==1&&month>2) *如果是閏年且月份大於 2,則總天數應加一天*
sum++;
printf("it is the %dth day.",sum);}
-
格式用逗號分隔,但“2011 3 17”用空格分隔,所以輸入得不到正確的值,後續的計算結果必然是錯誤的。
-
我已經很久沒有使用C語言了,我記得輸入的資料應該是這樣的:2011,3,17。 我不知道我是不是弄錯了。
-
這兩個程式都計算正確的天數。
ps:程式第一部分有乙個小錯誤,sum+=a[i]; 和 sum+=b[i]; ,我應該被 j 替換
但是,由於程式的第二部分要多次判斷if(leap(year)),也就是說,它需要多次執行函式int leap(int a)。 在第一段中,函式 int leap(int a) 只執行一次。 因此,程式段 1 的效率高於程式段 2。
測試**:包括
int leap(int year)
main()
int b[12]=;
int j,sum,year,month,day;
第一段 * sum=0;
if(leap(year))
for(j=1;計算 jrun 結果的天數相同。
-
第二個肯定是錯的,閏年和平年的區別在於二月是28、29
但是第二個程式,每個月再增加 1 個
for(j=1;j
-
程式第二段中陣列的下標不正確。
-
放入 int caldays 函式。
if(year1=year2) 更改為 if(year1==year2)。
這是錯誤,糾正後應該可以通過目視檢查找到它。
int max(float fx,float fy)float fz;
fz=fx>fy?fx:fy; >>>More