更新时间2021-10-13 20:19:08
这是一个输入年份与月份能判断这个月第一天是周几的代码,但运行以后D,a,b变成0,我也找了好久不知道错在哪(1900年一月一日是周一)#include<stdio.h>int main(){int O,a,b,y,m,D,q,W,n;O=1900; a=0;//闰年数量 b=0;//非闰年数量printf("Please input the year "); scanf("%d",&y);//输入年printf("Please input the month ");scanf("%d",&q);//输入月while(O==y)// { if (O%100==0) { if(O%400==0) { a=a+1; O=O+1;}else{ b=b+1; O=O+1;}}else{if(O%4==0){a=a+1;O=O+1; }else{b=b+1;O=O+1;}}continue; };D=a*366+b*365;m=1;while(m==q){if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){D=D+31;m=m+1;} else{ if(m==2){ if(O%100==0) { if(O%400==0) { D=D+29; m=m+1;}else{ D=D+28; m=m+1;}}else{ if(O%4==0) { D=D+29; m=m+1;}else{D=D+28;m=m+1;}} } else { D=D+30; m=m+1; } } }; n=D%7; W=1+n; printf("%d ",D); printf("%d ",W); return 0; }
一个明显的错
while(O==y)//
除非你输入的y==O
否则循环永远不会执行
a或b当然为0了
正确的应该是while(O!=y)
同样的是while(m==q)
(你对循环条件理解有问题)
另外,你计算闰年的方法太复杂了,一般只要一条语句
if (((O%4==0)&&(O%100!=0))||O%400==0)