当前位置: 代码迷 >> C语言 >> [求助]数组问题
  详细解决方案

[求助]数组问题

热度:176   发布时间:2007-06-29 11:30:02.0
[求助]数组问题

题目:输入年月日,求其是该年的第几天
void datesum(int year,int month,int date)
{
int i,j,sum,k=0;
int mon[12];
int mon2[2][12]=
{
{31,29,31,30,31,30,31,31,30,31,30,31},
{31,28,31,30,31,30,31,31,30,31,30,31}
}
if((year%4==0&&year%100!=0)||year%400==0)
for(i=1;i<=12;i++) mon[i]=mon2[0][i];
else
for(i=1;i<=12;i++) mon[i]=mon2[1][i];

for(i=1;i<=month;i++)
{k=k+mon[i];}
sum=k+date;
printf("di %d tian",sum);
}
main()
{
int year,month,date;
scanf("%d%d%d",&year,&month,&date);
if(month>12||month<1||date>31||date<1)
printf("input error!\n");
datesum(year,month,date);
getch();
}
我找不出为什么错了......

[此贴子已经被作者于2007-6-29 11:31:46编辑过]

搜索更多相关的解决方案: void  年月日  

----------------解决方案--------------------------------------------------------
scanf("%d%d%d",&year,&month,&date);
为什么中间没有分割符?,你接收到的数据对吗?
----------------解决方案--------------------------------------------------------

数组下标有问题的


----------------解决方案--------------------------------------------------------
数组最后一个数,系统会默认为'/0',所有定义的时候要多分配一个
----------------解决方案--------------------------------------------------------

不是的。他的定义得数组是12。就是说下标最大到了11。但是却出来12了,所以这不是系统能检查出来的


----------------解决方案--------------------------------------------------------
以下是引用酒肉弥勒佛在2007-6-29 12:00:49的发言:
scanf("%d%d%d",&year,&month,&date);
为什么中间没有分割符?,你接收到的数据对吗?

这样是可以的


----------------解决方案--------------------------------------------------------
那我在想输入2006年1月1号,我该怎么输入呢?
----------------解决方案--------------------------------------------------------
2006
1
1
----------------解决方案--------------------------------------------------------
哦,明白了
----------------解决方案--------------------------------------------------------

我给出的函数部分,你在计算总天数的时候没注意到是一月的时候,如是一月你就多加了31天。
for(i=1;i<=month;i++)还有这程序段,如是i月,他就连i月的N天也加了进去,所以i<month才行。
{k=k+mon[i];}

void datesum(int year,int month,int date)
{
int i,j,sum,k=0;
int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if((year%4==0&&year%100!=0)||year%400==0)
mon[1]=29;
for(i=1;i<month;i++)
{k=k+mon[i];}
if(month==1)
sum=date;
else
sum=k+date;

printf("di %d tian",sum);
}

[此贴子已经被作者于2007-6-29 18:27:50编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案