| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2827 人关注过本帖
标题:我用函数编写判断这一天是这一年的第几天不知道哪里出错,大家看看
只看楼主 加入收藏
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 9楼 laoyang103
好的丶我昨天给他改了丶应该在输入那加一个while控制输入多组数据应该就好了丶

编程之路定要走完……
2012-03-15 09:19
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 9楼 laoyang103
程序代码:
#include<stdio.h>
int main()/*你这个括号不是半角字符*/
{
    int day,month,year,a;
    int sum1(int m);
    int sum2(int m);
    while(scanf("%d/%d/%d",&year,&month,&day)!=EOF)/*这里你把year和day调一下人们习惯输入年月日*/
    {
        if(year%10!=0&&year%4==0||year%400==0)/*判断闰年要注意*/
        a=sum1(month);
        else
        a=sum2(month);
        printf("%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=366;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=59;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 09:36
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
这个在杭电提交成功了丶希望对楼主有用丶

编程之路定要走完……
2012-03-15 09:36
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 13楼 C_戴忠意
程序代码:
#include <stdio.h>

int ping[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int run[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};

bool f(int year)
{
    if(year % 4 == 0 && year % 100 != 0 ||
        year % 400 == 0)
        return true;
    return false;
}

int main()
{
    int m,n,s;
    int i,j;
    while(EOF != scanf("%d/%d/%d",&m,&n,&s))
    {
        if(f(m))
            for(j = 0,i = 1;i<n;i++)
                j += run[i];
        else
            for(j = 0,i = 1;i<n;i++)
                j += ping[i];
        printf("%d\n",j+s);
    }
    return 0;
}


                                         
===========深入<----------------->浅出============
2012-03-15 10:43
这卦不灵
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-3-14
收藏
得分:0 
我试着写了一个,不知道对不对
#include <stdio.h>
#include <math.h>
int main ()
{
int day,month,year,sum,leap;
scanf("%d-%d-%d",&year,&month,&day);
switch(month)
  {
  case 1:sum=0;break;
  case 2:sum=31;break;
  case 3:sum=31+28;break;
  case 4:sum=31+28+31;break;
  case 5:sum=31+28+31+30;break;
  case 6:sum=31+28+31+30+31;break;
  case 7:sum=31+28+31+30+31+30;break;
  case 8:sum=31+28+31+30+31+30+31;break;
  case 9:sum=31+28+31+30+31+30+31+30;break;
  case 10:sum=31+28+31+30+31+30+31+30+31;break;
  case 11:sum=31+28+31+30+31+30+31+30+31+30+31;break;
  case 12:sum=31+28+31+30+31+30+31+30+31+30+31+30;break;
  default:printf("data error");break;  }
     sum=sum+day;
  if(year%400==0||(year%4==0&&year%100!=0))
  leap=1;
  else
  leap=0;
    if(leap==1&&month>2)
     sum++;
      printf("%d\n",sum);
}
2012-03-15 15:35
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 14楼 laoyang103
了解了丶谢谢老杨

编程之路定要走完……
2012-03-15 17:17
haizhizuan
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2012-3-15
收藏
得分:0 
看看,哪里写错了

http:// www.jcdf99 .com/武动乾坤 精彩东方文学
2012-03-15 17:30
yuhaihua200
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2012-3-13
收藏
得分:0 
回复 3楼 柳絮飞
忘了什么?
那个宏命令?没忘啊。。。只是贴主要的部分,下次我会把全部给贴出了的,呵呵。。。
2012-03-15 20:51
yuhaihua200
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2012-3-13
收藏
得分:0 
回复 13楼 C_戴忠意
灰常感谢,找出很多不足。。呵呵
有几个问题
1、while(scanf("%d/%d/%d",&year,&month,&day)!=EOF)/*这里你把year和day调一下人们习惯输入年月日*/
  这个为什么加while,加EOF什么意思?不知道书上有没有,目前在书上没看到EOF这个关键词。。。
2、 return 0;/*这里返回一个值规范编程*/
  为什么在主函数加return 0?return 0中的0指的是无返回值是吗?还有什么时候需要return 0,什么时候不需要?
在没学函数之前我编写的程序都没加过return 0.。。
3、 int sum1(int m);这个不要m也是正确的是吗?我看书好像不要m也是对的。。。

看到程序有这么问题,真是惭愧啊。。。我自己百度看能不能找到答案,也请大神们帮帮忙
2012-03-15 21:16
yuhaihua200
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2012-3-13
收藏
得分:0 
回复 14楼 laoyang103
我刚才百度说
C语言中没有布尔型这一数据类型,所以用整型代替,非0表示真,0表示假,但可以使用宏来定义TRUE和FALSE
所以你为什么用bool呢》?这样在c中是否合理?

或者说bool是省略了int的一个函数?

[ 本帖最后由 yuhaihua200 于 2012-3-15 21:28 编辑 ]
2012-03-15 21:26
快速回复:我用函数编写判断这一天是这一年的第几天不知道哪里出错,大家看看
数据加载中...
 
   



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

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