| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 751 人关注过本帖
标题:一道runtime error的题!
只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
收藏
已结贴  问题点数:20 回复次数:5 
一道runtime error的题!
给定一个日期,输出这个日期是该年的第几天。
 

Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
 

Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
 

Sample Input
1985/1/20
2006/3/12
 

Sample Output
20
71
 
这是我做的答案,
int a[2][13]={{31,28,31,30,31,30,31,31,30,31,30,31},
               {31,29,31,30,31,30,31,31,30,31,30,31}};
int i=0;
#define LONG 1000
void year_month_day(int year[],int month[],int day[]);
#include<stdlib.h>
#include<stdio.h>
main()
{
char year,month,day;
int year_[LONG],month_[LONG],day_[LONG];
while(1){
scanf("%d/%d/%d",&year,&month,&day);
if(month<1||month>12||day<1||day>31||year<0)
goto Z;
year_[i]=year,month_[i]=month,day_[i]=day;
i++;
}
Z:
year_month_day(year_,month_,day_);
return 0;
}
void year_month_day(int year[],int month[],int day[])
{
int sum,l,j,count;
for(j=0;j<i;j++){
sum=day[j];
l=year[j]%4==0&&year[j]%100!=0||year[j]%400==0;
for(count=1;count<=month[j]-1;count++)
sum+=a[l][count];
printf("%d",sum);
}
}

在这道题目里,我不这道什么才是循环的条件,所以就随便定义了一个LONG作为循环的条件,
我提交的时候没有通过,显示runtime error,不这道为什么???请大侠们指教一下吧!顺便说说有关acm中编写程序的一些技巧吧!
搜索更多相关主题的帖子: runtime 
2009-11-17 16:20
燕大一狼
Rank: 2
等 级:论坛游民
帖 子:14
专家分:17
注 册:2009-10-3
收藏
得分:5 
以2006/3/12为例,应该先把前两个月的加起来,然后再加上12天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
2009-11-17 17:05
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:5 
int a[2][13]={{31,28,31,30,31,30,31,31,30,31,30,31},
               {31,29,31,30,31,30,31,31,30,31,30,31}};
int i=0;
#define LONG 1000
void year_month_day(int year,int month,int day);
#include<stdlib.h>
#include<stdio.h>
main()
{
char year,month,day;
int year_[LONG],month_[LONG],day_[LONG];
while(1){
scanf("%d/%d/%d",&year,&month,&day);
year_month_day(year,month,day);
i++;
}
}
void year_month_day(int year,int month,int day)
{
int sum,l,j,count;

sum=day;
l=year%4==0&&year%100!=0||year%400==0;
for(count=1;count<=month-1;count++)
sum+=a[l][count];
printf("%d",sum);

}
这是我改过的代码··听老师说新学最好不要用goto,它上面已经说过输入的数据合法,所以应该不必判断是否合法,你再试试能不能通过····
2009-11-17 17:09
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:5 

想象力征服世界
2009-11-17 18:07
燕大一狼
Rank: 2
等 级:论坛游民
帖 子:14
专家分:17
注 册:2009-10-3
收藏
得分:5 
main()
{
char year,month,day;
int year_[LONG],month_[LONG],day_[LONG];          /////这个定义year_[LONG]是为了什么?
while(1){
scanf("%d/%d/%d",&year,&month,&day);
year_month_day(year,month,day);
i++;
}



这里有一个教材上的源程序代码,更好懂点,呵呵。。。。。
main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{
 case 1:sum=0;break;
 case 2:sum=31;break;
 case 3:sum=59;break;
 case 4:sum=90;break;
 case 5:sum=120;break;
 case 6:sum=151;break;
 case 7:sum=181;break;
 case 8:sum=212;break;
 case 9:sum=243;break;
 case 10:sum=273;break;
 case 11:sum=304;break;
 case 12:sum=334;break;
 default:printf("data error");break;
}
sum=sum+day;  /*再加上某天的天数*/
 if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
  leap=1;
 else
  leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum);}
2009-11-17 18:16
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 3楼 陈大师
我发帖的那道题诗acm的一道题,感觉很别扭,因为题里没有告诉循环的条件!

愿用余生致力编程
2009-11-17 18:56
快速回复:一道runtime error的题!
数据加载中...
 
   



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

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