請大家?guī)兔匆幌逻@段代碼為何跑得起來但結(jié)果不對(c語言)
這是一個輸入年份與月份能判斷這個月第一天是周幾的代碼,,但運行以后D,a,b變成0,,我也找了好久不知道錯在哪(1900年一月一日是周一)#include<stdio.h>int main(){int O,a,b,y,m,D,q,W,n;O=1900;a=0;//閏年數(shù)量b=0;//非閏年數(shù)量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
否則循環(huán)永遠不會執(zhí)行
a或b當然為0了
正確的應該是while(O,!=y)
同樣的是while(m==q)
(你對循環(huán)條件理解有問題)
另外,你計算閏年的方法太復雜了,,一般只要一條語句
if (((O%4==0)&&(O%100!=0))||O%400==0)