| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 560 人关注过本帖
标题:请教,关于这个程序哪里出现了错误 为什么运行不了
只看楼主 加入收藏
heylbly
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2012-3-10
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
请教,关于这个程序哪里出现了错误 为什么运行不了
还有一个问题 就是defaut后面的判断句 iday=-1  这个不是很理解
为什么要加上这个一个限制呢- -  为什么iday=-1 就不是有效年份了???

#include<stdio.h>
void main()
{
    int iyear;
    int imonth;
    int iday;
    int leap;
printf("please input year:\n");
    scanf("%d",&iyear);
    printf("please input month:\n");
    scanf("%d",&imonth);
    if((iyear%4==0)&&(iyear%100!=0)||(iyear%400==0))
        leap=1;
        else
        leap=0;
switch(imonth)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:  iday=31;break;
         case4:
         case6:
         case9:
         case11:   iday=30;break;
case2: if(a==1)
           iday=28;
       else
           iday=29;
       break;
default: iday=-1;
}
if(iday==-1)
printf("无效的年月份\n");
else
printf("%d.%d has %d days.\n",iyear,imonth,iday);
}
搜索更多相关主题的帖子: void include please 
2012-03-10 23:50
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
收藏
得分:5 
因为输入的月不在1-12的话,iday就为-1,那显然是无效的……

酱油实习生
2012-03-10 23:59
heylbly
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2012-3-10
收藏
得分:0 
回复 2楼 墨清扬
既然是这样的话  那为什么会是-1呢
我换成其他的数字可不可以呢??
2012-03-11 00:04
heylbly
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2012-3-10
收藏
得分:0 
补充一下 这个程序我已经找到错误了 case2: if(a==1)
  改成 case2: if(leap==1)
顺利通过  但是执行出了问题
无论输入什么年 和月  
结果总是无效的年月  
不知道哪里出了问题
2012-03-11 00:04
achj198781
Rank: 2
等 级:论坛游民
帖 子:18
专家分:42
注 册:2012-3-9
收藏
得分:5 
其实只是拼写错误,case 1,注意了,中间是有空格的,改成这样就有会有你说的问题啦
你的空格没在啦,是“case1”,一般关键字都高亮的,没高亮就要注意

另外你那个判断闰年有可能有点不对,所有年份的2月都是28,你再改改
2012-03-11 00:54
heylbly
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2012-3-10
收藏
得分:0 
回复 5楼 achj198781
一般闰年是28  不是闰年的二月是29  没错的呀??
2012-03-11 01:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
“闰”是多的意思,数字比平常大,28和29谁大?

授人以渔,不授人以鱼。
2012-03-11 01:38
xjh110119
Rank: 1
等 级:新手上路
帖 子:7
专家分:8
注 册:2012-2-24
收藏
得分:5 
闰年是29天。把28.29换下位置。
case 1: (case)后面有空格,
if(a==1) 改为  if(leap==1)
default: iday=-1;break;(后面少个break;)

2012-03-11 03:54
achj198781
Rank: 2
等 级:论坛游民
帖 子:18
专家分:42
注 册:2012-3-9
收藏
得分:0 
case 2: if(lear==0)
           iday=28;
       else
           iday=29;
       break;
这样就可以了,你判断的时候条件错了,因为你判断的是:如果闰年,leap == 1的
另外把每个case后面加上空格就可以了
2012-03-11 12:16
achj198781
Rank: 2
等 级:论坛游民
帖 子:18
专家分:42
注 册:2012-3-9
收藏
得分:0 
程序代码:
#include<stdio.h>
void main()
{
    int iyear;
    int imonth;
    int iday;
    int leap;
printf("please input year:\n");
    scanf("%d",&iyear);
    printf("please input month:\n");
    scanf("%d",&imonth);
    if((iyear%4==0)&&(iyear%100!=0)||(iyear%400==0))
        leap=1;
        else
        leap=0;
switch(imonth)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:  iday=31;break;
         case4:
         case6:
         case9:
         case11:   iday=30;break;
case 2: if(leap == 0)
           iday=28;
       else
           iday=29;
       break;
default: iday=-1;
}
if(iday == -1)
printf("无效的年月份\n");
else
printf("%d.%d has %d days.\n",iyear,imonth,iday);

}
2012-03-11 12:19
快速回复:请教,关于这个程序哪里出现了错误 为什么运行不了
数据加载中...
 
   



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

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