运行结果出错,谢谢鱼友帮助
本帖最后由 物联 于 2015-8-14 13:27 编辑//题目:输入某年某月某日,判断这一天是这一年的第几天?
#include <stdio.h>
int year(int a);
main()
{
unsigned int x,y,z,w,n;
n=0;
printf("please input year mon day\n");
scanf("%d,%d,%d",&x,&y,&z);
w=year(x); //w=1,即为闰年
//printf("%d\n",w);
n=(y-1)*30+z; //先按每月30天计算
printf("%d\n",n);
switch(y-1)
{
case 0: n=n; break;
case 1: n=++n; break;
case 2: if(w)
{
n=n;
}
else
{
n=n-1;
} break;
case 3:
case 4:if(w)
{
n=n+1;
}
else
{
n=n;
} break;
case 5:
case 6:if(w)
{
n=n+2;
}
else
{
n=n+1;
} break;
case 7:if(w)
{
n=n+3;
}
else
{
n=n+2;
} break;
case 8:
case 9:if(w)
{
n=n+4;
}
else
{
n=n+3;
} break;
case 10:
case 11:if(w)
{
n=n+5;
}
else
{
n=n+4;
} break;
default :printf("data error");break;
}
printf("%d\n",n);
}
int year(int a)
{
int b;
if(a%4)
{
b=0;
}
else if(a%100)
b=1;
else if(a%400)
b=0;
else
b=1;
return b;
} 你对闰年与月份的大小理解了问题。闰年只管二月多一天。其他月份都一样。其实这个用不了多少代码的。
判断一下是否是闰年,然后后定义一个天数年DaySum = 0,在一个switch(月)
{
CASE 12:
DaySum += 31;
CASE 11:
DaySum += 30;
CASE 10:
不要break;
一直到CASE 2:
这里间断一下闰年多一个
DaySum += 28;
else
DaySum += 29;
case 1:
DaySum += 31;
break;
default :printf("data error");
}
DaySum+=输入的天数。就OK。了。我是直接在这里面写。大概意路是这样的。自己写一下。 yjip267 发表于 2015-8-14 14:28
你对闰年与月份的大小理解了问题。闰年只管二月多一天。其他月份都一样。其实这个用不了多少代码的。
判断 ...
嗯,谢谢你啦
我那个的程序错误的地方是因为我输入scanf那输入法没换成英文(刚发现)
后来试了试你的方法 代码确实精简了很多 谢谢你啦
页:
[1]