小白求助
//这个题目是输入某年某月某日,判断这一天是这一年的第几天? 在不考虑百年的情况下 为什么我输入2020.2.1是第33天呢 求助大佬!#include <stdio.h>
void main()
{
int Y, M, D,d;
printf("请输入年月日:\n");
scanf("%d.%d.%d",&Y, &M, &D);
switch(M)
{
case 1: M=0; break;
case 2: M=31; break;
case 3: M=59; break;
case 4: M=90; break;
case 5: M=120; break;
case 6: M=151; break;
case 7: M=181; break;
case 8: M=212; break;
case 9: M=243; break;
case 10: M=273; break;
case 11: M=304; break;
case 12: M=334; break;
}
if ( M >= 3 && Y%4==0)
{
D=D+1;
}
d=D+M;
printf("你输入的是这一年的第%d天\n",d);
}
你的switch语句已经把M重新赋值了
你下边的判断 if ( M >= 3 && Y%4==0)
{
D=D+1;
}就出问题了
因为M>=3恒为真 洋洋痒 发表于 2021-4-5 13:59
你的switch语句已经把M重新赋值了
你下边的判断 if ( M >= 3 && Y%4==0)
{
这样啊 那怎么改合适捏 g1063496360 发表于 2021-4-5 15:43
这样啊 那怎么改合适捏
把case语句后边的M换成别的变量,例如days,还有最下边d=D+days
#include <stdio.h>
void main()
{
int Y, M, D,d,days;
printf("请输入年月日:\n");
scanf("%d.%d.%d",&Y, &M, &D);
switch(M)
{
case 1: days=0; break;
case 2: days=31; break;
case 3: days=59; break;
case 4: days=90; break;
case 5: days=120; break;
case 6: days=151; break;
case 7: days=181; break;
case 8: days=212; break;
case 9: days=243; break;
case 10: days=273; break;
case 11: days=304; break;
case 12: days=334; break;
}
if ( M >= 3 && Y%4==0)
{
D=D+1;
}
d=D+days;
printf("你输入的是这一年的第%d天\n",d);
}
洋洋痒 发表于 2021-4-5 15:59
把case语句后边的M换成别的变量,例如days,还有最下边d=D+days
谢谢大佬{:10_256:}
页:
[1]