| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 875 人关注过本帖
标题:新手求助
只看楼主 加入收藏
失落的鹰
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-6-29
结帖率:100%
收藏
 问题点数:0 回复次数:11 
新手求助
#include <stdio.h>
int x(int c)
{
int a;
switch (c)
    {    case 1:a=0;break;
        case 2:a=31;break;
        case 3:a=31+28;break;
        case 4:a=31+28+31;break;
        case 5:a=31+28+31+30;break;
        case 6:a=31+28+31+30+31;break;
        case 7:a=31+28+31+30+31+30;break;
        case 8:a=31+28+31+30+31+30+31;break;
        case 9:a=31+28+31+30+31+30+31+31;break;
        case 10:a=31+28+31+30+31+30+31+31+30;break;
        case 11:a=31+28+31+30+31+30+31+31+30+31;break;
        default:a=31+28+31+30+31+30+31+31+30+31+30;break;
    }
return(a);
}
void main()
{
int m(int m);
int y,m,d;
printf("输入年月日\n");
scanf("%d%d%d",&y,&m,&d);
if((y%400==0||(y%4==0&&y%100!=0)&&m>2)
    d=d+x(m)+1;
        else d=d+x(m);
printf("这一年的第%d天\n",d);
}
输入某年某月某日,判断这一天是这一年的第几天
谁能告诉我错在哪里?
谢谢
搜索更多相关主题的帖子: default include return 
2008-09-15 16:56
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
程序代码:
#include <stdio.h>

int is_leap_year(int year)
{
    return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}

int get_month_day(int month)
{
    if (month == 2) return 28;
    else return 30 + (month % 2 == (month < 8));
}

int main(void)
{
    int y, m, d, i;
    while (scanf("%d %d %d", &y, &m, &d) == 3)
    {
        for (i = 1;i < m;i++)d += get_month_day(i);
        printf("day = %d\n", d + (m > 2 && is_leap_year(y)));
    }
    return 0;
}



专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-15 17:21
飞天舞xsj
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-12-25
收藏
得分:0 
一眼望去,最基本问题:
1>void main()
{
int m(int m);

d=d+x(m)+1;??函数声明与函数的定义,调用。函数名不一致;
2>if((y%400==0||(y%4==0&&y%100!=0)&&m>2),括号对数不对称,
3>程序可读性差,建议回去将算法在整理一下;

2008-09-15 17:48
失落的鹰
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-6-29
收藏
得分:0 
谢谢指导
2008-09-15 20:15
失落的鹰
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-6-29
收藏
得分:0 
while (scanf("%d %d %d", &y, &m, &d) == 3)
这个语句什么意思?
2008-09-15 20:20
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
知道scanf返回值的含义么?

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-15 20:27
飞天舞xsj
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-12-25
收藏
得分:0 
我的代码,仅供参考:
#include<stdio.h>

int Sum_day(int month, int day);              /* 声明求精确到天的函数 */
int Leap(int year);                           /* 声明求闰年的函数 */

static int day_tab[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
                                              /* 每个月的天数 */

main()
{
 int year,month,day;
 int days;
 printf("\n请输入日期(年,月,日)\n");
 scanf("%d,%d,%d",&year,&month,&day);
 printf("\n%d年%d月%d日",year,month,day);
 days = Sum_day(month,day);

 if ((Leap(year)) && (month>=3))                    /* 判断闰年的情形 */
 {
  days = days + 1;
 }

 printf("是该年的第%d天",days);
}

int Sum_day(int month,int day)                 /* 定义求精确到天的函数 */
{
 int i;

 for (i=1; i<month; i++)
 {
  day += day_tab[i];
 }

 return (day);
}

int Leap(int year)                              /* 定义求闰年的函数 */
{
 int leap;
 leap = ((year%4) == 0) && ((year%100) != 0)||((year%400) == 0);     /* 是闰年的条件*/

 return (leap);
}

2008-09-16 07:53
muyinfei
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-9-1
收藏
得分:0 
尽量用数组表示啊
可以不用swich语句,那样显得很乱啊,用一个二维数组a[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}}就可以了啊,而且明显程序没有自己好好调试,自己多调试也能发现问题!
这是我写的,大家多指正!
#include <stdio.h>
int main(void)
{
 int year,m,day,leap,n,i,a[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}};
 printf("请输入年月日\n");
 scanf("%d %d %d",&year,&m,&day);
 if((year%4==0)&&((year%100!= 0)||(year%400 == 0)))
      leap=0;
 else leap=1;
 n=0;
 for(i=0;i<m;i++)
 {n=n+a[leap][i];}
 n=n+day;
 printf("这是第%d天",n);
 return 0;
}

[[it] 本帖最后由 muyinfei 于 2008-9-16 12:45 编辑 [/it]]
2008-09-16 12:08
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
LS:你真会浪费内存……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-16 16:44
失落的鹰
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-6-29
收藏
得分:0 
回复 6# StarWing83 的帖子
不知道,请赐教~
2008-09-16 19:48
快速回复:新手求助
数据加载中...
 
   



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

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