| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 442 人关注过本帖
标题:看看 这个题哪里做错了!谢谢!请朋友帮帮忙 麻烦了!!!
只看楼主 加入收藏
vvvevvv
Rank: 2
来 自:黑龙江
等 级:论坛游民
帖 子:129
专家分:92
注 册:2010-9-9
结帖率:96%
收藏
已结贴  问题点数:20 回复次数:3 
看看 这个题哪里做错了!谢谢!请朋友帮帮忙 麻烦了!!!
程序代码:
#include<stdio.h>//我写的挺麻烦的,只因我是个新手,还请前辈见谅
#include<stdlib.h>
int a;
void main()
{
int isLeap( int year );
int n,y,r,day=0,mouth[12]={31,28,31,30,31,30,31,31,30,31,30,31},i;//n为年,y为月,r为日,day 计算的天数,mouth[] 表示各个月份的天数
printf("请输入年月日:\n");
scanf("%d%d%d",&n,&y,&r);
isLeap(n);
//----------------------------------------------------------------------------------------------
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12){if(r>31||r<0)printf("请正确输入日期\n");exit(1);}       
else if(y==4||y==6||y==9||y==11) {if(r>30||r<0)printf("请正确输入日期\n");exit(1);}
else if(y==2)
{
    if(a==1)
    {
        if(r>29||r<0)
            printf("请正确输入日期\n");
        exit(1);
    }
    if(a==0)
        if(r>28||r<0)
            printf("请正确输入日期\n");
        exit(1);
}
//-----------------------------------------------------------------------------------------------
day=day+r;
for(i=0;i<y-1;i++)
day=day+mouth[i];
if(y>=2){if(a==1)day=day+1;}
printf("%d年%d月%d日是%d年的第%d天!!!\n",n,y,r,n,day);
}
int isLeap( int year )//定义输入的年是不是闰年(引用论坛中的算法)
{
    return a=year%(year%100?4:400)==0;
}
错误就出现框框中,我想用它来检验输入的年月日的是否超限从而决定继续运行否!如果把检验的地方去掉,能正确输出结果(如果没有检验的语句,这个程序就有漏洞了),但是不去的话 就悲剧了,还请哪位能有帮帮忙!
搜索更多相关主题的帖子: 麻烦 朋友 
2010-12-08 21:15
落拓
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:173
注 册:2010-9-29
收藏
得分:7 
修改后的程序:
#include<stdio.h>//我写的挺麻烦的,只因我是个新手,还请前辈见谅
#include<stdlib.h>
int a;
void main()
{
int isLeap( int year );
int n,y,r,day=0,mouth[12]={31,28,31,30,31,30,31,31,30,31,30,31},i;//n为年,y为月,r为日,day 计算的天数,mouth[] 表示各个月份的天数
printf("请输入年月日:\n");
scanf("%d%d%d",&n,&y,&r);

isLeap(n);
//----------------------------------------------------------------------------------------------
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)
{
    if(r>31||r<0)
    {
        printf("请正确输入日期\n");
       exit(1);
    }
}      
else if(y==4||y==6||y==9||y==11)
{
    if(r>30||r<0)
    {
        printf("请正确输入日期\n");
        exit(1);
    }
}
else if(y==2)
{
    if(a==1)
    {
        if(r>29||r<0)
        {
            printf("请正确输入日期\n");
            exit(1);
        }
    }
    if(a==0)
        if(r>28||r<0)
        {
            printf("请正确输入日期\n");
            exit(1);
        }
}
//-----------------------------------------------------------------------------------------------
day=day+r;
for(i=0;i<y-1;i++)
  day=day+mouth[i];

if(y>=2)
{
    if(a==1)
    {
        day=day+1;
    }
}

printf("%d年%d月%d日是%d年的第%d天!!!\n",n,y,r,n,day);
}
int isLeap( int year )//定义输入的年是不是闰年(引用论坛中的算法)
{
    return a=year%(year%100?4:400)==0;
}


楼主你不小心把exit(1);放到外面了。所以,无论在什么时候,程序都会自动退出。
2010-12-08 21:35
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:13 
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12){if(r>31||r<0)printf("请正确输入日期\n");exit(1);}

这个,其实你应该写成
if (r>mouth[y] || r<0) {printf("请正确输入日期\n");exit(1);}

这样就不需要那么多的else if了

另外你的mouth拼写有误,改一改吧

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-12-08 21:44
vvvevvv
Rank: 2
来 自:黑龙江
等 级:论坛游民
帖 子:129
专家分:92
注 册:2010-9-9
收藏
得分:0 
回复 3楼 御坂美琴
非常的谢谢!!  长了很多知识!!谢谢!!!!!明白了!!!

学习~
2010-12-08 22:01
快速回复:看看 这个题哪里做错了!谢谢!请朋友帮帮忙 麻烦了!!!
数据加载中...
 
   



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

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