找回密码
 立即注册
查看: 369|回复: 12

求解哪里错了

[复制链接]

5895

回帖

118

基友

1万

积分

苍海之魂

invincible

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2013-5-6 21:40:51 | 显示全部楼层 |阅读模式
视频教程的作业,输入日期判断这是这一年的第几天
void main()
{
        int a,b,c,d;
        scanf("%d %d %d",&a,&b,&c);
        if (a%4==0)
        {
                if (a%100==0)
                {
                        if (a%400==0)
                        {
                                d=1;
                        }
                        else
                        {
                                d=0;
                        }
                }
                else
                {
                        d=1;
                }
        }
        if (d==0)
        {
                switch(b)
                {
                case 1:printf("%d",c);break;
                case 2:printf("%d",c+31);break;
                case 3:printf("%d",c+59);break;
                case 4:printf("%d",c+90);break;
                case 5:printf("%d",c+120);break;
                case 6:printf("%d",c+151);break;
                case 7:printf("%d",c+181);break;
                case 8:printf("%d",c+212);break;
                case 9:printf("%d",c+243);break;
                case 10:printf("%d",c+273);break;
                case 11:printf("%d",c+304);break;
                case 12:printf("%d",c+334);break;
                                                                       
                }
        }
        else if(d==1)
        {
                switch(b)
                {
                case 1:printf("%d",c);break;
                case 2:printf("%d",c+31);break;
                case 3:printf("%d",c+60);break;
                case 4:printf("%d",c+91);break;
                case 5:printf("%d",c+121);break;
                case 6:printf("%d",c+152);break;
                case 7:printf("%d",c+182);break;
                case 8:printf("%d",c+213);break;
                case 9:printf("%d",c+244);break;
                case 10:printf("%d",c+274);break;
                case 11:printf("%d",c+305);break;
                case 12:printf("%d",c+335);break;
                                                                       
                }
        }
       
       
}
回复

使用道具 举报

857

回帖

3252

基友

3249

积分

通神5段 Lv.8

Rank: 4

发表于 2013-5-6 21:42:26 | 显示全部楼层
远离C语言好多年。
回复 支持 反对

使用道具 举报

5895

回帖

118

基友

1万

积分

苍海之魂

invincible

Rank: 13Rank: 13Rank: 13Rank: 13

 楼主| 发表于 2013-5-6 21:43:03 | 显示全部楼层
花开成海 发表于 2013-5-6 21:42
远离C语言好多年。

刚学
回复 支持 反对

使用道具 举报

857

回帖

3252

基友

3249

积分

通神5段 Lv.8

Rank: 4

发表于 2013-5-6 21:59:16 | 显示全部楼层
invincibe 发表于 2013-5-6 21:43
刚学

。。。加油吧。
回复 支持 反对

使用道具 举报

98

回帖

298

基友

414

积分

凡人3阶 Lv.3

Rank: 2

发表于 2013-5-6 22:13:21 | 显示全部楼层
喜闻乐见的c语言
回复 支持 反对

使用道具 举报

98

回帖

298

基友

414

积分

凡人3阶 Lv.3

Rank: 2

发表于 2013-5-6 22:16:09 | 显示全部楼层
第一段 a%4==0{}然后如果不等于0 d没赋值
回复 支持 反对

使用道具 举报

5482

回帖

6万

基友

3万

积分

苍海之魂

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2013-5-6 22:18:13 | 显示全部楼层
@飞龙  
回复 支持 反对

使用道具 举报

7657

回帖

86万

基友

34万

积分

天下一番

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

伯爵荣耀

发表于 2013-5-6 22:28:43 | 显示全部楼层
你写这么乱我哪知道
我建议  把闰年判断封装成一个函数 传入Int 返回bool
然后声明一个12大小的int[]  分别存各个月份的天数
完了之后你就一个月一个月的加呗= =
回复 支持 反对

使用道具 举报

7657

回帖

86万

基友

34万

积分

天下一番

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

伯爵荣耀

发表于 2013-5-6 22:38:16 | 显示全部楼层
本帖最后由 飞龙 于 2013-5-6 22:43 编辑
  1. bool isleap(int);

  2. int main()
  3. {
  4.         int yy, mm, dd;
  5.         int a[12];
  6.         a[0] = 31;
  7.         a[2] = 31;
  8.         a[3] = 30;
  9.         a[4] = 31;
  10.         a[5] = 30
  11.         a[6] = 31;
  12.         a[7] = 31;
  13.         a[8] = 30;
  14.         a[9] = 31;
  15.         a[10] = 30;
  16.         a[11] = 31;
  17.         scanf("%d %d %d", &yy, &mm, &dd);
  18.         //自己加判断 (is day)
  19.         a[1] = isleap(yy) ? 29 : 28;
  20.        
  21.         int days = 0;
  22.         for(int i = 1; i < mm; i++)
  23.         {
  24.                 days += a[i - 1];
  25.         }
  26.         days += dd;
  27.         printf("%d\n", days);
  28. }

  29. bool isleap(int y)
  30. {
  31.         return ((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0);
  32. }
复制代码
回复 支持 反对

使用道具 举报

313

回帖

1113

基友

1334

积分

通神3段 Lv.6

Rank: 3Rank: 3

发表于 2013-5-6 22:51:10 | 显示全部楼层
天书呀。。。
回复 支持 反对

使用道具 举报

5895

回帖

118

基友

1万

积分

苍海之魂

invincible

Rank: 13Rank: 13Rank: 13Rank: 13

 楼主| 发表于 2013-5-7 14:49:54 | 显示全部楼层
飞龙 发表于 2013-5-6 22:28
你写这么乱我哪知道
我建议  把闰年判断封装成一个函数 传入Int 返回bool
然后声明一个12大小的int[]  分 ...

尼玛没学到那里呢

点评

你又没告诉我你学到哪儿了。。。= =  发表于 2013-5-7 14:57
回复 支持 反对

使用道具 举报

7657

回帖

86万

基友

34万

积分

天下一番

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

伯爵荣耀

发表于 2013-5-7 15:03:09 | 显示全部楼层
invincibe 发表于 2013-5-7 14:49
尼玛没学到那里呢

还有 isday():
  1. bool isday(int yy, int mm, int dd)
  2. {
  3.         int a[] = {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  4.         a[1] = isleap(yy) ? 29 : 28;
  5.         if(mm < 1 || mm > 12) return false;
  6.         if(dd < 1 || dd > a[mm - 1]) return false;
  7.         return true;
  8. }
复制代码
当然你也可以把a弄成全局的 省空间

回复 支持 反对

使用道具 举报

3663

回帖

5930

基友

1万

积分

VIP1

大神都是狗

伯爵荣耀

发表于 2013-5-7 15:12:42 | 显示全部楼层
可怕 - -
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|苍海国际 ( 鲁ICP备13020644号-1 )

GMT+8, 2025-8-3 14:57 , Processed in 0.062477 second(s), 26 queries .

Powered by Discuz! Theme By eRic Modified by 4bpa

© CangHai International We Do Our Rights!

返回顶部