| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2827 人关注过本帖
标题:我用函数编写判断这一天是这一年的第几天不知道哪里出错,大家看看
只看楼主 加入收藏
yuhaihua200
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2012-3-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:21 
我用函数编写判断这一天是这一年的第几天不知道哪里出错,大家看看
输入某年某月某日,判断这一天是这一年的第几天?
程序代码:
main()
{
    int day,month,year,a;
    int sum1(int);
    int sum2(int);
    printf("Please enter the date, and separated by periods:  ");
    scanf("%d.%d.%d",&day,&month,&year);
    if(year%10==0&&year%400==0||(year%10!=0&&year%4==0))
        a=sum1(month);
    else
        a=sum2(month);
    printf("This day is this year %d\n",a+day);
}
    int sum1(int m)
    {
        int a;
        a=switch(m)
        {
             case 1:31;break;
             case 2:60;break;
             case 3:91;break;
             case 4:121;break;
             case 5:152;break;
             case 6:182;break;
             case 7:213;break;
             case 8:244;break;
             case 9:274;break;
             case 10:305;break;
             case 11:335;break;
             case 12:366;break;
        }
        return(a);
    }
    int sum2(int m)
    {
        int a;
        a=switch(m)
        {
             case 1:31;break;
             case 2:60;break;
             case 3:90;break;
             case 4:120;break;
             case 5:151;break;
             case 6:181;break;
             case 7:212;break;
             case 8:243;break;
             case 9:273;break;
             case 10:304;break;
             case 11:334;break;
             case 12:365;break;
        }
        return(a);
    }

我不知道哪里出错了,请大家看看,谢谢
搜索更多相关主题的帖子: 函数 
2012-03-14 22:12
yuhaihua200
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2012-3-13
收藏
得分:0 
额。仔细想想,貌似想偏了。。。按照题目,肯定是错了,但是这程序我真的看不出错哦。。。
2012-03-14 22:43
柳絮飞
Rank: 2
等 级:论坛游民
帖 子:21
专家分:24
注 册:2012-2-16
收藏
得分:0 
太晚了,我没用电脑调试,我感觉你应该写规矩些,开头不知是你故意的还是真忘了!程序要细心!if(year%4==0&&year%100!=0||year%400==0)判断是否为闰年!还有就是你没考虑你输入1.15这样的数时计算出来结果是多少!结尾的return 0;也不要丢了!
2012-03-14 23:16
sunlang1234
Rank: 2
等 级:论坛游民
帖 子:47
专家分:77
注 册:2012-2-24
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>


int main (void)
{
    int day,month,year,a;
    int sum1(int);
    int sum2(int);
    printf("Please enter the date, and separated by periods:  ");
    scanf("%d.%d.%d",&day,&month,&year);
    if((year%10==0&&year%400==0)||(year%10!=0&&year%4==0))
        a=sum1(month);
    else
        a=sum2(month);
    printf("This day is this year %d\n",a+day);
    return 0;
}
    int sum1(int m)
    {
        int a;
        switch(m)
        {
             case 1:a=31;break;
             case 2:a=60;break;
             case 3:a=91;break;
             case 4:a=121;break;
             case 5:a=152;break;
             case 6:a=182;break;
             case 7:a=213;break;
             case 8:a=244;break;
             case 9:a=274;break;
             case 10:a=305;break;
             case 11:a=335;break;
             case 12:a=366;break;
        }
        return(a);
    }
    int sum2(int m)
    {
        int a;
        switch(m)
        {
             case 1:a=31;break;
             case 2:a=60;break;
             case 3:a=90;break;
             case 4:a=120;break;
             case 5:a=151;break;
             case 6:a=181;break;
             case 7:a=212;break;
             case 8:a=243;break;
             case 9:a=273;break;
             case 10:a=304;break;
             case 11:a=334;break;
             case 12:a=365;break;
        }
        return(a);
    }


2012-03-14 23:31
sunlang1234
Rank: 2
等 级:论坛游民
帖 子:47
专家分:77
注 册:2012-2-24
收藏
得分:0 
好好看看switch语句的用法。
2012-03-14 23:32
sunlang1234
Rank: 2
等 级:论坛游民
帖 子:47
专家分:77
注 册:2012-2-24
收藏
得分:0 
而且闰年的判断好像也不对,我没改,自己改。
2012-03-14 23:33
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:20 
程序代码:
#include<stdio.h>
int main()/*你这个括号不是半角字符*/
{
    int day,month,year,a;
    int sum1(int m);
    int sum2(int m);
    printf("Please enter the date, and separated by periods:  ");
    scanf("%d.%d.%d",&year,&month,&day);/*这里你把year和day调一下人们习惯输入年月日*/
    if(year%10!=0&&year%4==0||year%400==0)/*判断闰年要注意*/
        a=sum1(month);
    else
        a=sum2(month);
    printf("This day is this year %d\n",a+day);
    return 0;/*这里返回一个值规范编程*/
}
    int sum1(int m)
    {
        int x;/*虽然这里是局部变量但为了让你思路清晰换成x*/
        switch(m-1)/*你要不减一的话输出就多了一个月,还有不可以a=awitch*/
        {
            
             case 0:x=0;break;/*一月分时候输出下面的和这个一样,并给相应的x赋值*/
             case 1:x=31;break;
             case 2:x=60;break;
             case 3:x=91;break;
             case 4:x=121;break;
             case 5:x=152;break;
             case 6:x=182;break;
             case 7:x=213;break;
             case 8:x=244;break;
             case 9:x=274;break;
             case 10:x=305;break;
             case 11:x=335;break;
             case 12:x=365;break;
        }
        return (x);
    }
    int sum2(int m)
    {
        int x;
        switch(m-1)
        {
           case 0:x=0;break;    
           case 1:x=31;break;
           case 2:x=60;break;
           case 3:x=90;break;
           case 4:x=120;break;
           case 5:x=151;break;
           case 6:x=181;break;
           case 7:x=212;break;
           case 8:x=243;break;
           case 9:x=273;break;
           case 10:x=304;break;
           case 11:x=334;break;
           case 12:x=365;break;
        }
        return (x);
    }




希望你能认真学习丶编程的习惯要注意

编程之路定要走完……
2012-03-15 00:23
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 4楼 sunlang1234
四楼   如果是一月你这个程序是不应该出负数了呀丶而且每次输出结果对吗?

编程之路定要走完……
2012-03-15 00:25
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
第几天?
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 35997    Accepted Submission(s): 13783


Problem Description
给定一个日期,输出这个日期是该年的第几天。
 

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

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

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

Sample Output
20
71
 

Author
lcy

不如来这里测试下http://acm.hdu.

                                         
===========深入<----------------->浅出============
2012-03-15 08:31
ygwlovech
Rank: 2
等 级:论坛游民
帖 子:16
专家分:10
注 册:2011-12-24
收藏
得分:0 
程序代码:
#include<stdio.h>
int leap(int a)                                        /*自定义函数leap用来指定年份是否为闰年*/
{
    if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0)                /*闰年判定条件*/
        return 1;                                    /*是闰年返回1*/
    else
        return 0;                                    /*不是闰年返回0*/
}
int number(int year, int m, int d) /*自定义函数number计算输入日期为该年第几天*/
{
    int sum = 0, i, a[12] =
    {
        31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
    };                                            /*数组a存放平年每月的天数*/
    int b[12] =
    {
        31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
    };                                            /*数组b存放闰年每月的天数*/
    if (leap(year) == 1)                                /*判断是否为闰年*/
        for (i = 0; i < m - 1; i++)
            sum += b[i];                                /*是闰年,累加数组b前m-1个月份天数*/
    else
        for (i = 0; i < m - 1; i++)
            sum += a[i];                                /*不是闰年,累加数组a钱m-1个月份天数*/
    sum += d;                                        /*将前面累加的结果加上日期,求出总天数*/
    return sum;                                        /*将计算的天数返回*/
}
void main()
{
    int year, month, day, n;                                /*定义变量为基本整型*/
    printf("请输入年月日\n");
    scanf("%d%d%d", &year, &month, &day);                /*输入年月日*/
    n = number(year, month, day);                            /*调用函数number*/
    printf("第%d天\n", n);
}
2012-03-15 09:05
快速回复:我用函数编写判断这一天是这一年的第几天不知道哪里出错,大家看看
数据加载中...
 
   



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

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