西科大acm上老是WA,帮我看一下怎么回事阿

时间:2008-05-10 20:51:50   来源:论坛整理  作者:  编辑:chinaitzhe
code:
Source

Problem Id:1350 User Id:200427220502
Memory:288K Time:0MS
Language:G Result:Wrong Answer

* Source

#include <iostream>

using namespace std;

int main()
{
struct date
{
int year;
int month;
int day;
};
date d;
cin >> d.year >> d.month >> d.day;
if(d.month > 12 ¦ ¦ d.day > 31 ¦ ¦ d.day < 0 ¦ ¦ d.month == 2 && d.day > 29)
{
// cout < < "Input error!" < < endl;
printf("%s\n%c","Input error!''");
exit(0);
}
/* else if( (d.month == 4 ¦ ¦ d.month == 6 ¦ ¦ d.month == 9 ¦ ¦ d.month == 11) && (d.day > 30) )
{
cout < < "Input error!" < < endl;
exit(0);
}
*/
int allday;
if(d.month < 2)
{
allday = d.day;
}
if(d.month >= 2 && d.month < 13)
{
if(( d.year%4==0 && d.year0!=0 ) ¦ ¦(d.year@0==0))
{
switch(d.month)
{
case 2: allday = 31 d.day;break;
case 3: allday = 31 29 d.day;break;
case 4: allday = 31 29 31 d.day;break;
case 5: allday = 31 29 31 30 d.day;break;
case 6: allday = 31 29 31 30 31 d.day;break;
case 7: allday = 31 29 31 30 31 30 d.day;break;
case 8: allday = 31 29 31 30 31 30 31 d.day;break;
case 9: allday = 31 29 31 30 31 30 31 31 d.day;break;
case 10: allday = 31 29 31 30 31 30 31 31 30 d.day;break;
case 11: allday = 31 29 31 30 31 30 31 31 30 31 d.day;break;
case 12: allday = 31 29 31 30 31 30 31 31 30 31 30 d.day;break;
}
}
else switch(d.month)
{
case 2: allday = 31 d.day;break;
case 3: allday = 31 28 d.day;break;
case 4: allday = 31 28 31 d.day;break;
case 5: allday = 31 28 31 30 d.day;break;
case 6: allday = 31 28 31 30 31 d.day;break;
case 7: allday = 31 28 31 30 31 30 d.day;break;
case 8: allday = 31 28 31 30 31 30 31 d.day;break;
case 9: allday = 31 28 31 30 31 30 31 31 d.day;break;
case 10: allday = 31 28 31 30 31 30 31 31 30 d.day;break;
case 11: allday = 31 28 31 30 31 30 31 31 30 31 d.day;break;
case 12: allday = 31 28 31 30 31 30 31 31 30 31 30 d.day;break;
}
}
cout < < allday < < endl;
return 0;
}





网友回复:题目是什么都不知道。。。怎么帮你看呀。
网友回复:感觉是在求某个月之前的总天数
这样写很无语
网友回复:帮你顶吧
题目给大家看看啊

网友回复:给出题目啊。。。。
网友回复:94
网友回复:这程序应该就是通过输入日期测天数的
测试了下,没有错误,就是看上去有点乱
运行内存占用1M多点,是不是内存超过要求上限了?

网友回复:或者就是题目意思你理解错了
网友回复:Result:Wrong Answer
这样的结果一般都比较烦人。。。

结果不对或者输出格式不对
网友回复:假如不是闰年,二月的日期输入假如大于28程序应该终止
网友回复:这句在逻辑上就是有问题的:
if(d.month > 12 ¦ ¦ d.day > 31 ¦ ¦ d.day < 0 ¦ ¦ d.month == 2 && d.day > 29)
最小修改应为:
if(d.month > 12 ¦ ¦ d.day > 31 ¦ ¦ d.day < 0 ¦ ¦ (d.month == 2 && d.day > 29))
不要小看那个括号
但还是有问题,比如输入的month为4,day为31.
网友回复:校验部分这样应该可以了:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





    cin >> d.year >> d.month >> d.day; 



    int md[]={31,28,31,30,31,30,31,31,30,31,30,31};

    if(是闰年(d.year))

        md[1]=29;



    if(d.month<1 || d.month >12  || //校验月

       d.day <1 || d.day > md[d.month-1]//校验日

        )

    {      

        printf("%s\n%c","Input error!''"); 

        exit(0);

    }




网友回复:校验完之后根据md数组用一个for循环就可以计算了.
网友回复:试下行不:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





//输入年月日,输出这是这年的第X天

#include  <iostream> 



using namespace std; 



int   is_leap(int   year)   { 

    return   (0   ==   year   %   400)   ||  

        ((0   ==   year   %   4)   &&   (0   !=   year   %   100)) ;  

}

int main() 

{  

    struct date 

    { 

        int year; 

        int month; 

        int day; 

    }; 

    date d; 

    cin >> d.year >> d.month >> d.day; 

    

    int md[]={31,28,31,30,31,30,31,31,30,31,30,31};

    if(is_leap(d.year))

        md[1]=29;

    

    if(d.year<1 || d.year>9999 ||//校验年

        d.month<1 || d.month >12  || //校验月

        d.day <1 || d.day > md[d.month-1] )//校验日

    {      

        printf("%s\n%c","Input error!''"); 

        exit(0);

    }

    

    int allday=0; 

    for(int i=0;i<d.month-1;i  )

    {

        allday =md[i];

    }

    allday =d.day;

    

    cout  << allday  << endl; 

    return 0; 

} 






网友回复:Problem A:日期计算(实验六题目一)

Time Limit:1000MS Memory Limit:65536K
Total Submit:695 Accepted:166

Description

定义一个结构体变量(包括年、月、日),要求输入年月日,编写程序计算并输出该日在本年中第几天.

Input

只有一组测试数据:
输入三个整数分别对应年月日,考虑三个整数输入范围的合理性。如输入月份应该在1至12之间;2月的闰月情况等.

Output

若输入不满足此条件,程序输出"Input error!"提示字符串并结束程序执行过程;
否则输出一个整数,该数表示输入的日期是输入年份的第几天。

Sample Input

1985 1 20
2006 3 12
1987 13 31

Sample Output

20
71
Input error!"

Hint

1、 算法提示:假如输入的是2006 年3 月12 日,计算方法是 :
计算2006 年1 月1 日到2006-3-12 是多少天。注重同样判定本年度是否闰年,(( year%4==0 && year0!=0 )!!(year@0==0))
即二月份是28 天还是29 天。
2、注重本题一定要定义结构体变量,否则本实验成绩无效。
关键字:西科,acm,老是,WA,一下,

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面