XiaoHui.net 笑汇程序员论坛首页
工作并快乐着,职业并休闲着
寻梦的岁月从不言辛苦几许,
不问收获几多……
» 游客:  申请新用户 | 登录 | 会员 | 统计 | 帮助 » XiaoHui.Net 笑汇程序员论坛 | 纯文字版 | 全站索引 | XiaoHui.com


[算法讨论] 急,帮我看个C问题~~~

RSS 订阅当前论坛  

上一主题 下一主题
     

标题: [算法讨论] 急,帮我看个C问题~~~  
 
maojiaye
小水手
Rank: 1



UID 29929
精华 0
积分 3
帖子 3
阅读权限 10
注册 2007-4-12
状态 离线
急,帮我看个C问题~~~

有道题目:输入年月日,要求判断是第几天。程序已写好,但VC显示有一处错误,指示case1那行有错误。真的不知哪错了,求高手看下。
# include<stdio.h>
void main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)   /*先计算某月以前月份的总天数*/
{
 case 1:sum=0; break;   
 case 2:sum=31;break;
 case 3:sum=59;break;
 case 4:sum=90;break;
 case 5:sum=120;break;
 case 6:sum=151;break;
 case 7:sum=181;break;
 case 8:sum=212;break;
 case 9:sum=243;break;
 case 10:sum=273;break;
 case 11:sum=304;break;
 case 12:sum=334;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)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum);}
2007-4-20 12:52#1
查看资料  Blog  发短消息  顶部
 
maojiaye
小水手
Rank: 1



UID 29929
精华 0
积分 3
帖子 3
阅读权限 10
注册 2007-4-12
状态 离线
郁闷,怎么没人回复的呀?
2007-4-22 12:36#2
查看资料  Blog  发短消息  顶部
 
冰雪新空
传说中的水手
Rank: 5Rank: 5



UID 29989
精华 0
积分 10
帖子 10
阅读权限 1
注册 2007-4-22
来自 孝感
状态 离线
互相帮助

把sum=sum+day; 注释掉,再在输出时用printf("It is the %dth day.",sum+day);
你试哈!
即:
# include<stdio.h>
void main()
{
        int day,year,month,sum,leap;
    printf("\nplease input year,month,day\n");
    scanf("%d,%d,%d",&year,&month,&day);
    switch(month)   /*先计算某月以前月份的总天数*/
        {
        case 1 :sum=0; break;   
        case 2 :sum=31;break;
        case 3 :sum=59;break;
        case 4 :sum=90;break;
        case 5 :sum=120;break;
        case 6 :sum=151;break;
        case 7 :sum=181;break;
        case 8 :sum=212;break;
        case 9 :sum=243;break;
        case 10 :sum=273;break;
        case 11 :sum=304;break;
        case 12 :sum=334;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)/*如果是闰年且月份大于2,总天数应该加一天*/
                sum++;
    printf("It is the %dth day.",sum+day);
}
2007-4-22 15:38#3
查看资料  Blog  发短消息  QQ  顶部
 
su1985
小水手
Rank: 1



UID 29999
精华 0
积分 4
帖子 4
阅读权限 10
注册 2007-4-24
状态 离线
程序没有错。
在你程序录入时有中文输入法的空格,找到并去掉就好了。
用下面的就没错了。

#include <stdio.h>
main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)
{         
  case 1:sum=0;break;
  case 2:sum=31;break;
  case 3:sum=59;break;
  case 4:sum=90;break;
  case 5:sum=120;break;
  case 6:sum=151;break;
  case 7:sum=181;break;
  case 8:sum=212;break;
  case 9:sum=243;break;
  case 10:sum=273;break;
  case 11:sum=304;break;
  case 12:sum=334;break;
  default:printf("data error");
}
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("It is the %dth day.",sum);
getch();
}
2007-4-24 16:11#4
查看资料  Blog  发短消息  顶部
 
gongchangzhang
小水手
Rank: 1



UID 30486
精华 0
积分 8
帖子 8
阅读权限 10
注册 2007-8-15
状态 离线
在switch前sum应该初始化。
2007-8-16 14:30#5
查看资料  Blog  发短消息  顶部
 
warrior
版主
Rank: 7Rank: 7Rank: 7



UID 2453
精华 0
积分 33
帖子 33
阅读权限 100
注册 2006-3-20
来自 北京
状态 离线
请检查输入字符

程序本身没有问题,case1那行也是正确的。
1. 请贴出VC6报错信息
2. 请检查case1行所有字符,很有可能就像“su1985 ”所说的存在非法字符。最好删除该行,重新输入后再尝试。
2007-8-16 18:12#6
查看资料  Blog  发短消息  QQ  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题  


 


所有时间为 GMT+8, 现在时间是 2008-12-2 05:40 Powered by Discuz! 4.1.0 清除 Cookies - XiaoHui.Net 笑汇程序员论坛 - Archiver