程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> printf-c語言代碼問題~~求助~~~~~

printf-c語言代碼問題~~求助~~~~~

編輯:編程綜合問答
c語言代碼問題~~求助~~~~~

設甲乙兩人同年出生,但月日不同。請計算甲乙的年齡差的絕對值。例如輸入1997 2 27 3 10(表明甲乙出生在1997年,甲出生在2月27日,乙出生在3 月10日),則輸出11(甲乙相差11天)

思路:

1、分別計算甲乙的生日是該年的第多少天(分別用n1,n2表示)。計算該年的多少天,可通過函數調用實現;

2、年齡差絕對值計算

 #include<stdio.h>
int fun(int y,int m,int d)
{int s=0;
for(int i=1;i<=m-1;i++)
{switch(i)
{case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:s+=31;
case 4:
case 6:
case 9:
case 11:s+=30;
case 2:if(y%4==0&&y%100!=0||y%400==0) s+=29;
    else s+=28;
}
}
s+=d;
return s;
}
/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

void main()                      
{  
    int y,m1,d1,m2,d2,n1,n2;  
    scanf("%d%d%d",&y,&m1,&d1);
    scanf("%d%d",&m2,&d2);
    n1=fun(y,m1,d1);
    n2=fun(y,m2,d2);
    if(n1>=n2)
     printf("%d\n",n1-n2);
    else
      printf("%d\n",n2-n1);
}

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

這個代碼是我寫的 總會有一個隱藏的測試用例結果錯誤 不知道代碼哪有缺陷 請大神賜教!

最佳回答:


if((y%4==0)&&(y%100!=0)||y%400==0)
case 12... break;
case 11.... break;
case 2 .... break
注意使用break跳出來,
case 找到符合條件的語句之後,就會依次執行下面的case,所以要有break語句

kid_0203
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved