| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1074 人关注过本帖
标题:关于goto语句 能有更好的方式代替么
只看楼主 加入收藏
ljrainxy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-5-23
结帖率:100%
收藏
 问题点数:0 回复次数:11 
关于goto语句 能有更好的方式代替么
  题目: 输入某年某月某日,判断这一天是这一年的第几天?
  题怎么解的就不多说了
  其实我想加一段代码实现输入错误时后的处理  比如输入 2010,5,32   很明显是错误的
  于是我写下   
  if(((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&(data>31))||((month==2)&&(data>29))||((month==4||month==6||month==9||month==11)&&(data>31)))
      printf("the data error!please enter again\n");
  用来判断某月中是不是超过这个月最大天数了   
  忽然觉得 要是在输入错误怎么办  左思又想 觉得 goto语句是最为合适的 但能力有限 且网上说goto语句最好不要用之类的 比较麻烦
  左思又想 反复修改
  代码如下   
  there:    if(((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&(data>31))||((month==2)&&(data>29))||((month==4||month==6||month==9||month==11)&&(data>31)))
      {printf("the data error!please enter again\n");
          scanf("%d,%d,%d",&year,&month,&data);
       goto there;}
  个人感觉此时用goto语句很不错  特分享经验
  因本人新手 见识有限 特发此贴  希望高手们有更好的方式 如果可以 能否发出来借鉴下
搜索更多相关主题的帖子: goto 语句 代替 
2010-05-25 22:18
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
个人认为可以设置个标志位,比如
int i;
当输入错误时,先让i=1,然后跳出循环
若输入正确,让i=0,然后继续执行
到最后若i=1则输出错误信息
若i=0,则输出正确结果
……
呵呵,我是这样想的,我也是新手……

我很懒,但我讨厌别人说我懒……
2010-05-25 22:23
ljrainxy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-5-23
收藏
得分:0 
你的意思是   if(....) i=1;
              else  i=0;
           然后  if(i>0) printf("error");
                  .....
是这样么     恩 不错 也能达到目的  
2010-05-25 22:51
hcloo7
Rank: 1
等 级:新手上路
帖 子:5
专家分:5
注 册:2009-10-30
收藏
得分:0 
两个if可以合并成一个。。。
2010-05-25 23:06
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
恩,差不多是这样吧,因为从循环内跳出我也不太熟,经常会写错,所以干脆这样简便些,就是不专业了……哈哈

我很懒,但我讨厌别人说我懒……
2010-05-25 23:54
源本英明C
Rank: 3Rank: 3
来 自:日本
等 级:论坛游侠
帖 子:113
专家分:154
注 册:2010-5-14
收藏
得分:0 
你说的输入错误指的是?可以说清楚点吗,是格式错误,还是输入的串错误?如:输入1999-03-31,或者是1999-a2-b4?还有,月份的上限也该规定。
if(char>='0'&&char<='9')

柔术:打败对手的最好方法就是心狠手辣,因为对手不会给你太多机会,如果他够厉害!
2010-05-26 07:49
chenaiyuxue
Rank: 5Rank: 5
来 自:山东滨州
等 级:职业侠客
帖 子:334
专家分:370
注 册:2008-5-20
收藏
得分:0 
程序代码:
while (1)
{
    scanf(...);
    if (输入合法)
        break;
}

你是雪,我是尘埃,相遇是意外;你坠落,在我胸怀,流进我血脉。
2010-05-26 08:32
ljrainxy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-5-23
收藏
得分:0 
回复 6楼 源本英明C
输入错误 指的是 常识性错无  比如 5月份最多31天 而你输入了  2010-5-32   我指的是这个
2010-05-26 17:51
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
说实话,我觉得goto语句还是蛮不错的……有点像汇编里的语法习惯……
我在循环中如果想结束的话总是不知道该如何跳出比较完美,经常会一起输出几个结果,所以很苦恼,于是干脆一不做二不休设标志位了……哈哈

我很懒,但我讨厌别人说我懒……
2010-05-26 20:36
ljrainxy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-5-23
收藏
得分:0 
其实现在很多的人 用不好就敬而远之  感觉做法不恰当   当这个东西用到恰到好处才是   应该想什么时候用到正好 才是根本
2010-05-26 22:29
快速回复:关于goto语句 能有更好的方式代替么
数据加载中...
 
   



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

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