代码写的不严谨。
网上也有很多计算任何一天是星期几的C语言源代码,不过,有些代码含有一点点小错误。像闰年的分辨啊,或者是每个月的天数,再或者星期的计算公式,都是比较细微的环节,出一点错误都有可能导致结果不正确。这一点,我都进行过验证。下面我选出的这组代码,结构清晰,语法明确。希望能给各位C的爱好者或者要考计算机二级的同学们一点点帮助!当然,有错误的话,也请各位指出!
代码如下:
1 #include <stdio.h> 2 int main() 3 { 4 int day,mn,yr,i,days=0,s,k; 5 int mont[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 6 char wek[][9]={ {‘S‘,‘u‘,‘n‘,‘d‘,‘a‘,‘y‘}, 7 {‘M‘,‘o‘,‘n‘,‘d‘,‘a‘,‘y‘}, 8 {‘T‘,‘u‘,‘e‘,‘s‘,‘d‘,‘a‘,‘y‘}, 9 {‘W‘,‘e‘,‘d‘,‘n‘,‘s‘,‘d‘,‘a‘,‘y‘}, 10 {‘T‘,‘h‘,‘u‘,‘r‘,‘s‘,‘d‘,‘a‘,‘y‘}, 11 {‘F‘,‘r‘,‘i‘,‘d‘,‘a‘,‘y‘}, 12 {‘S‘,‘a‘,‘t‘,‘u‘,‘r‘,‘d‘,‘a‘,‘y‘} 13 }; 14 printf("Inpute the date (year-month-day):"); 15 scanf("%d-%d-%d",&yr,&mn,&day); 16 if (yr%4==0||yr%100==0||yr%400==0) 17 mont[2]=29; 18 else 19 mont[2]=28; 20 for (i=0;i<mn;i++) 21 days+=mont[i]; 22 days+=day; 23 s=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+days; 24 k=s%7; 25 printf("%d-%d-%d is %s.",yr,mn,day,wek[k]); 26 return 0; 27 }
时间: 2024-10-07 11:39:44