| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 346 人关注过本帖
标题:求助了 大家
只看楼主 加入收藏
狼族孤星
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2010-6-22
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
求助了 大家
大家看看我这个算法  三天打渔两天晒网   判断自1990 1 1 之后 某一天是在打渔还是在晒网

#include<stdio.h>
#include<stdlib.h>
int main()
{  int i=0,j,k,temp;
   int m=0;
   long days;
   int year,month,day;
   int mon1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
   int mon2[12]={31,29,31,30,31,30,31,31,30,31,30,31};
   printf("输入日期:             日\n");
   scanf("%d,%d,%d",&year,&month,&day);
   if(((year/4==0)&&(year/100!=0))||(year/400==0))
       k=1;
   else  k=0;
   temp=year;   
   while((temp>=1990)&&(i>=0))
    {if(((temp/4==0)&&(temp/100!=0))||(temp/400==0))
       {i++;
        temp--;
       }
     ++m;         
    }
     if(k=1)
           {days=i*361+(m-i-1)*360+day;
            for(j=0;j<month;j++)
               days+=mon2[j];
            }
     else
           { days=i*361+(m-i-1)*360+day;
            for(j=0;j<month;j++)
               days+=mon1[j];
            }        
   if(((days/5)==1)||((days/5)==2)||((days/5)==3))  
      printf("%d年,%d月,%d日是在打渔\n",year,month,day);   
    else
       printf("%d年,%d月,%d日是在晒网\n",year,month,day);   
    system("pause");   
}
 
搜索更多相关主题的帖子: long 算法 include 
2010-08-18 08:40
ggyy4k
Rank: 5Rank: 5
等 级:职业侠客
帖 子:111
专家分:334
注 册:2010-6-28
收藏
得分:0 
以下是引用狼族孤星在2010-8-18 08:40:12的发言:

大家看看我这个算法  三天打渔两天晒网   判断自1990 1 1 之后 某一天是在打渔还是在晒网

#include<stdio.h>
#include<stdlib.h>
int main()
{  int i=0,j,k,temp;
   int m=0;
   long days;
   int year,month,day;
   int mon1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
   int mon2[12]={31,29,31,30,31,30,31,31,30,31,30,31};
   printf("输入日期:             日\n");
   scanf("%d,%d,%d",&year,&month,&day);
   if(((year/4==0)&&(year/100!=0))||(year/400==0))
       k=1;
   else  k=0;
   temp=year;   
   while((temp>=1990)&&(i>=0)) //死循环
    {if(((temp/4==0)&&(temp/100!=0))||(temp/400==0))
       {i++;
        temp--;
       }
     ++m;         
    }
     if(k=1)
           {days=i*361+(m-i-1)*360+day;
            for(j=0;j<month;j++)
               days+=mon2[j];
            }
     else
           { days=i*361+(m-i-1)*360+day;
            for(j=0;j<month;j++)
               days+=mon1[j];
            }        
   if(((days/5)==1)||((days/5)==2)||((days/5)==3))  
      printf("%d年,%d月,%d日是在打渔\n",year,month,day);   
    else
       printf("%d年,%d月,%d日是在晒网\n",year,month,day);   
    system("pause");   
}
 

楼主的程序真够乱的,最好分三个函数出来,1个判断闰年,一个计算自1990 1 1 之后总共有多少天,一个判断是打渔还是晒网,这样清晰多了
2010-08-18 09:49
ggyy4k
Rank: 5Rank: 5
等 级:职业侠客
帖 子:111
专家分:334
注 册:2010-6-28
收藏
得分:10 
回复 楼主 狼族孤星
自己写了个,楼主看看
#include "stdio.h"
int rn(int nianfen)/*判断某年是否是闰年*/
{
    return ( ((nianfen % 4 == 0) && (nianfen % 100 != 0)) || (nianfen % 400 == 0));
}

int yf(int yuefen, int runnian)/*获得当月天数*/
{
    int dyts;
    switch(yuefen)
    {
    case 1: dyts=31;break;
    case 2: dyts=28 + runnian;break;
    case 3: dyts=31;break;
    case 4: dyts=30;break;
    case 5: dyts=31;break;
    case 6: dyts=30;break;
    case 7: dyts=31;break;
    case 8: dyts=31;break;
    case 9: dyts=30;break;
    case 10: dyts=31;break;
    case 11: dyts=30;break;
    case 12: dyts=31;break;
    }
    return dyts;
}

int tianshu(int nian,int yue,int ri) //自1900年1月1日总共多少天
{
    int i,sum=0;
    for(i=1900;i<nian;i++)
        sum+=(i-1900)*365+rn(i);
    for(i=1;i<yue;i++)
        sum+=yf(yue,nian);
    sum+=ri;
    return sum;
}

int panduan(int sum)   //判断是打渔还是晒网
{
    if(((sum%5)==1)||((sum%5)==2)||((sum%5)==3))  
        return 1;
    else
        return 0;   
}

void main()
{
    int year,month,day,days;
    printf("输入日期(格式:年月日****,**,**):");
    scanf("%d,%d,%d",&year,&month,&day);
    days=tianshu(year,month,day);
    if(panduan(days))
        printf("%d年%d月%d日是在打渔\n",year,month,day);
    else
        printf("%d年%d月%d日是在晒网\n",year,month,day);
    getch();
}
2010-08-18 10:21
燕强
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:78
专家分:188
注 册:2010-8-11
收藏
得分:10 
楼主的程序太复杂了。看看这个程序是不是你想要的。
#include<stdio.h>
static char daytab[2][13]=
{
    {0,31,28,31,30,31,30,31,31,30,31,30,31},
    {0,31,29,31,30,31,30,31,31,30,31,30,31}
};
long day_of_lastyear(int year)//判断1990年--year有有多天
{
    int i;
    long days = 0;
    for(i = 1990; i < year; i++)
    {
        if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
            days += 366;
        else
            days += 365;
    }
    return days;
}
int day_of_year(int year,int month,int day)
{
    int i,leap;
    leap = (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
    for(i = 1; i < month; i++)
        day += daytab[leap][i];
    return day;
}

int main(void)
{
    int year,month,day;
    long lastday,days;
    printf("输入日期:             日\n");
    scanf("%d%d%d",&year,&month,&day);
    while(year < 1990)
    {
        printf("the year is wrong!\n");
        printf("输入日期:             日\n");
        scanf("%d%d%d",&year,&month,&day);
    }
    lastday = day_of_lastyear(year);
    days = day_of_year(year,month,day) + lastday;
    if(((days % 5) == 1)||((days % 5) == 2)||((days % 5) == 3))  
      printf("%d年,%d月,%d日是在打渔\n",year,month,day);   
    else
       printf("%d年,%d月,%d日是在晒网\n",year,month,day);  
      
     return 0;  
   
}


[ 本帖最后由 燕强 于 2010-8-18 10:39 编辑 ]
2010-08-18 10:25
快速回复:求助了 大家
数据加载中...
 
   



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

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