| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 623 人关注过本帖
标题:为什么结果是随机数,给位大神求教
只看楼主 加入收藏
s524250262
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2015-5-26
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:9 
为什么结果是随机数,给位大神求教
#include <stdio.h>
int main()
{
    int moth,day,year,n,s=0,i;
    printf("请输出年月日:");
    scanf("%d%d%d",&year,&n,&i);
    moth=n;
      do
      {
      switch(moth)
      {
           case 1:
           case 3:
           case 5:
           case 7:
           case 8:
           case 10:
           case 12:day=31; break;
           case 4:
           case 6:
           case 9:
           case 11:day=30;break;
               
      }
      s+=day;
          moth--;
      }while(moth>0);
      s=s-31;//switch上面没有2,系统默认给了day=31的列式。
     if((year%4==0&&year%100!=0)||(year%400==0))//判断年是闰年
          s=s+29;
     else
          s=s+28;
      day=s+i;

          printf("%d\n",day);
          return 0;
}
搜索更多相关主题的帖子: include 年月日 
2015-05-27 11:49
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
不知所云
你输入什么,输出什么,期待输出什么?
2015-05-27 12:13
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
#include <stdio.h>
#include <stdbool.h>

inline bool isleap( unsigned year )
{
    return (year%400==0) || (year%4==0 && year%100!=0);
}

inline unsigned dayofmonth( unsigned year, unsigned month )
{
    static const unsigned dm[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    return dm[month-1] + (month==2 && isleap(year));
}

inline unsigned dayofyear( unsigned year, unsigned month, unsigned day )
{
    static const unsigned dm[] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
    return dm[month-1] + day + (month>2 && isleap(year));
}

int main( void )
{
    unsigned year, month, day;
    if( 3==scanf("%u%u%u",&year,&month,&day) && month>=1 && month<=12 && day>=1 && day<=dayofmonth(year,month) )
    {
        printf( "%u\n", dayofyear(year,month,day) );
    }

    return 0;
}
2015-05-27 12:43
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 3楼 rjsp
隐形药水?

能编个毛线衣吗?
2015-05-27 13:26
s524250262
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2015-5-26
收藏
得分:0 
回复 2楼 rjsp
比如我输入2014,2,5//年月日
然后求它的这一年中到2月5日一共多少天
2015-05-27 15:09
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:10 
回复 5楼 s524250262
首先,你不应该输入“2014,2,5”,而应该输入“2014 2 5”,看你自己的代码 scanf("%d%d%d",&year,&n,&i);

第二,当moth等于2时,执行到 s+=day; 这一句的时候,day 根本没有被赋值,这种行为在C/C++中是“未定义行为”
2015-05-27 15:21
s524250262
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2015-5-26
收藏
得分:0 
问题解决了,谢谢
2015-05-27 15:24
s524250262
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2015-5-26
收藏
得分:0 
回复 6楼 rjsp
谢谢,好感动啊@_@~~
2015-05-27 15:25
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
且循环之后“s=s-31”也不合理。
2015-05-27 15:30
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
注意哦,在进入循环之前就应该把月份减1
2015-05-27 21:33
快速回复:为什么结果是随机数,给位大神求教
数据加载中...
 
   



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

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