请大家帮忙看一下这段代码为何跑得起来但结果不对(c语言) - 爱问答

(爱问答)

请大家帮忙看一下这段代码为何跑得起来但结果不对(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;//闰年数量 
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)

相关标签:c语言

下一篇:全局静态变量存放在进程地址空间中的哪一块?

上一篇:佳能G2810喷嘴检查的时候出现这个问题帮忙看看什么问题

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?