江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
2009秋江蘇計算機等級C上機真題1

改錯題:
[程序功能]
  輸入兩個正確日期且年份在1900-9999范圍內,計算
并輸出兩個日期之間間隔的天數,例如:2008-8-1
和2009-8-1之間間隔的天數為365
  提示:能被4整除并且不能被100整除的年份是閏年,能
被400整除的年份也是閏年,其他年份則是平年
[測試數據與運行結果]
顯示:first  date:
輸入:1980-2-1
顯示:second date:2009-8-1
輸出:10774  days
[含有錯誤的源程序]
#include <stdio.h>
#define leap(int y) ((y)%4==0 && (y)%100!=0||(y)%400==0)
struct d
{int y,m,d;};
int days(struct d d1,struct d d2)
{int mon[2][13]=
  {{0,31,28,31,30,31,30,31,31,30,31,30,31},
   {0,31,29,31,30,31,30,31,31,30,31,30,31}};
 int i; long td=0;
 for(i=d1.y;i<d2.y;i++)
   td=leap(i)?366:365;
 for(i=1;i<d1.m;i++)
   td-=mon[leap(d1.y)][i];
 td-=d1.d-1;
 for(i=1;i<d2.m;i++)
  td+=mon[leap(d2.y)][i];
 td+=d2.d-1;
 return td;
}

void main()
{struct d d1,d2;
 long td;
 printf("first date:");
 scanf("%d-%d-%d",d1.y,d1.m,d1.d);
 printf("second date:");
 scanf("%d-%d-%d",d2.y,d2.m,d2.d);
 td=days(d1,d2);
 printf("%ld",td);
}

彩票30选5开奖结果