| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 780 人关注过本帖
标题:[求助]数组问题
只看楼主 加入收藏
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
快速回复:[求助]数组问题
数据加载中...
 
   



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

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