标题:求教程序题
只看楼主
csynyk
Rank: 1
等 级:新手上路
威 望:1
帖 子:114
专家分:0
注 册:2008-8-9
得分:0 
虽然不完全支持4楼的看法,但在咱们这个论坛里存在着一个很不好的现象,那就是很多问题提出来后,人家想办法帮助解决了最后却不了了之,甚至连面也不露了!我本来一直呆在csdn论坛的,这几天论坛关闭了,到处溜达才发现这里的,一开始觉得这个论坛很全,经过几天的观察,感觉论坛在管理方面还要多家改进才行!可以多借鉴借鉴csdn、c语言帝国等论坛的运作经验!
                                       ----------但愿论坛能真正火起来!

http://blog./csynyk
2008-08-15 02:43
wbxnj
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-8-13
得分:0 
[bo][un]广陵绝唱[/un] 在 2008-8-15 00:32 的发言:[/bo]

可以用二维数组的方式,把每一个月的天数以int型存放,然后依次相加,就可以了。


谢了,给我点思路,我在想想.
PS:学语言还是多请教,多思考.
2008-08-15 14:30
rookie_coder
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-7-26
得分:0 
晕,你在那上学,咱是同学吧?
/*******************************************************************
** HighlightCodeV3.2 software by yzfy(雨中飞燕) http:// **
*******************************************************************/
#include <stdio.h>
#define true 1
#define false 0

/*判断是否闰年*/
int isLeapYear(int year)
{
   
return ( (year%4==0 && year%100 != 0)||(year%400 == 0) ) ? true : false;
}
/*得到月份日期数*/
int getDay(int year,int month)
{
   
int monthDay;
   
    const int monthPer[]={31,28,31,30,31,30,31,31,30,31,30,31};
   
    if(isLeapYear(year) && month == 2)
    {
        
monthDay = 29;
    }
   
else
   
{
        
monthDay = monthPer[month-1];
    }
   
return monthDay;
}

/*输入某年某月某日,判断这一天是这一年的第几天*/
int sumDay(int year,int month,int day)
{
   
int daySum = 0;
    int priorMonth = month-1;//前一个月
   
   
while(priorMonth > 0)//得到从一月到month-1个月的天数总和
   
{
        
daySum += getDay(year,priorMonth);
        --priorMonth;
    }
   
return daySum + day;
}
2008-08-15 19:56
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
得分:0 
这是我以前写的一个程序,里面也有很多的不足之处,谨供参考。
程序代码:
#include<stdio.h>
char hello[5][300]={{"*************************************************************\n"},
               {"您好,欢迎您来玩这个小游戏。您可以输入年、月、日或者年份、天数\n"
                "或者年份,系统为您判定它是一年中的第几天或者那年的几月几日或者\n"
                "判定它是闰年还是平年。\n"},
               {" 请输入年、月、日:\n"},
               {"请输入年份及天数:\n"},
               {"请输入年份:\n"} };
static int yue[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}} ;
int pr(int n)
{
        int c;
        c= n%4==0&&n%100!=0|| n%400==0;
        return c;
}
int panduan_1(int y,int r,int i)
{

        int j,n=0;
        for(j=0;j<y;j++)
            n+=yue[i][j];
        n+=r;
        return n;
}
void panduan_2(int n,int r,int i)
{
        int j=1,m=1;
        while(r>yue[i][j])
        {
                r-= yue[i][j];
                j++;
                m++;
         }
         printf("这是%d年,%d月,%d日\n",n,m,r);
}
void caidan()
{
        printf("%s\n\n",hello[0]);
        printf("请您作出选择:\n");
        printf("1.  输入年、月、日,求它是那年中的哪一天。\n"
               "2.  输入年份及天数,求它是那年中的哪月哪日。\n"
               "3.  输入年份,求它是平年或者是闰年。\n"
               "4.  退出。\n");
        printf("请输入选择:\n");
}
int main(void)
{
        int n,y,r,i,j;
        printf("%s%s\n",hello[0],hello[1]);
        do
        {
                caidan();
                scanf("\n%d",&j);
                puts(" ");
                while(j<1||j>4)
                {
                        printf("您输入的字符非法,请重新选择:\n");
                        caidan();
                        scanf("%d",&j);
                 }
        }
        while(j<0||j>5);
        while(j!=4)
        {
                switch(j)
                {
                        case 1:printf("请输入年、月、日,空格格开,enter结束输入:\n");
                                 scanf("\n %d %d %d",&n,&y,&r);
                                 puts(" ");
                                 i=pr(n);
                                 j=panduan_1(y,r,i);
                                 printf("它是%d年的第%d天\n",n,j);
                                 break;
                        case 2:printf("请输入年、天数,空格格开,enter结束输入:\n");
                                 scanf("%d %d",&n,&r);
                                 puts(" ");
                                 i=pr(n);
                                 panduan_2(n,r,i);
                                 break;
                        case 3:printf("请输入待测试的年份:\n");
                                 scanf("%d",&n);
                                 i=pr(n);
                                 if(i==0)
                                 {
                                     printf("它是平年。\n");
                                     break;
                                  }
                                 if(i==1)
                                 {
                                     printf("它是闰年。\n");
                                     break;
                                  }

                  }
                 caidan();
                 scanf("%d",&j);
         }
         if(j==4)printf("谢谢您!再见!");



        getchar();











}


[[it] 本帖最后由 广陵绝唱 于 2008-8-15 20:56 编辑 [/it]]
2008-08-15 20:54
wbxnj
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-8-13
得分:0 
13#的,问我??
别是我多嘴吧?
2008-08-15 21:47
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
得分:0 
#include <stdio.h>
#define  ISLEAP(x)(!(x%400) || !(x%4) && (x%100))
int main(void) {
         unsigned int monthper[12]={31,28,31,30,31,30,31,31,30,31,30,31};
         unsigned int year , month , day , i ,sum = 0 ;
         scanf("%d-%d-%d", &year,&month,&day) ;   //输入采用这种格式2008-8-15
         monthper[1] += ISLEAP(year) ;
         for(i = 0 ; i < month - 1 ; i++)
             sum += monthper[i] ;
         sum += day ;
         printf("The %dth daysin this year\n" , sum ) ;
 return 0 ;
}

without further ado, let’s get started
2008-08-15 21:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-228346-1-1.html




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

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