标题:[求助]数组问题
只看楼主
lifeng2007
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-4-27
 问题点数:0 回复次数:15 
[求助]数组问题

题目:输入年月日,求其是该年的第几天
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 年月日 
2007-06-29 11:30
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
得分:0 
scanf("%d%d%d",&year,&month,&date);
为什么中间没有分割符?,你接收到的数据对吗?

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-06-29 12:00
shixiaokun86
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-5-26
得分:0 

数组下标有问题的


2007-06-29 13:07
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
得分:0 
数组最后一个数,系统会默认为'/0',所有定义的时候要多分配一个

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-06-29 13:13
shixiaokun86
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-5-26
得分:0 

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


2007-06-29 13:22
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
得分:0 
以下是引用酒肉弥勒佛在2007-6-29 12:00:49的发言:
scanf("%d%d%d",&year,&month,&date);
为什么中间没有分割符?,你接收到的数据对吗?

这样是可以的


   好好活着,因为我们会死很久!!!
2007-06-29 14:24
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
得分:0 
那我在想输入2006年1月1号,我该怎么输入呢?

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-06-29 15:15
shixiaokun86
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-5-26
得分:0 
2006
1
1

2007-06-29 16:26
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
得分:0 
哦,明白了

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-06-29 16:33
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
得分:0 

我给出的函数部分,你在计算总天数的时候没注意到是一月的时候,如是一月你就多加了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编辑过]


深山苦学C语言,终年不见外面世界。
2007-06-29 17:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-151276-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040297 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved