| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3605 人关注过本帖
标题:总是卡在循环上,大家看看怎么可以把我的这个goto改为while,谢谢。
取消只看楼主 加入收藏
菜鸭
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2007-12-9
收藏
 问题点数:0 回复次数:3 
总是卡在循环上,大家看看怎么可以把我的这个goto改为while,谢谢。
大家好,又给大家添麻烦了,今天又做了个习题,尽量作得比书上的要求高些,我增加了二个功能:

一:当输入数字错误时,给出提示,重新输入;

二:当猜字结束后,可以询问是否重新开始。

    我就卡在这第二条上了,我知道程序中用goto语句不好,可是试了不下百次,就是不能用while取代goto,请大家帮忙,在此谢过了。

      声明:我为新手,所以代码健壮性和可移植性不是很高,技术含量也很低,代码也超过30行,我用的编译器是WIN-TC。如果对此有看法的朋友尽可不必回帖。谢谢支持。

    再次谢谢大家,不怕找出错误,您找出的错误和不足之处,就是我前进莫大的动力与支持,请您畅所欲言,如果是对此程序有挖苦讽刺以及恶毒批评,我会更加感激您。谢谢。

    另外,我对自定义函数已经明白,对指针还没学到,所以尽量请不要改成这两种模式的。

    再次感谢。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
   int a,b,c,n;
  fh:  printf("***********************************************************\n");
   printf("您好,现在请您猜一个1000以内的整数。\n您有20次机会,每次您猜错了,系统会提\n示您猜得大了或者小了。祝您玩得愉快!\n");
   printf("***********************************************************\n");
   n=1;
   srand(time(NULL));
   b=rand()%1000+1;
   do
  {
   printf("请您输入一个数字:");
   scanf("\n%d",&a);
   while(a<1||a>1000)
   {
     printf("对不起,您输入的数字不对,请重新输入:");
     scanf("\n%d",&a);
   }
     if(a>b)
     {
       printf("对不起,您输入的数字过大,请重新输入。\n");
       printf("**********************************************************\n");
     }
     if(a<b)
     {
        printf("对不起,您输入的数字太小,请重新输入。\n");
        printf("**********************************************************\n");
     }
      n++;
     if(n==21)break;
     printf("这是您第%d次猜数!\n",n);
    }
     while(a!=b) ;
     if(a==b)
     printf("恭喜您,猜对了!\n");
     if(n==21)
     printf("您好,您的次数已到!\n");
     printf("请问您还想继续玩吗?是请按1,按其它键退出!");
     scanf("\n%d",&c);
     if(c==1)
     goto fh;
    getch();
}
搜索更多相关主题的帖子: goto 数字 习题 语句 
2008-02-03 22:44
菜鸭
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2007-12-9
收藏
得分:0 
经过测试,正常运行。

我只是想把goto去掉。

谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-03 23:05
菜鸭
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2007-12-9
收藏
得分:0 
劳烦您看仔细些行么?虽然程序简单了些,但也应当看仔细罢?

    您说的do~while 或者while 语句,道理我明白,我程序中也用了一个do~while语句。可是当我把最后一句goto改为while的时候,程序又混乱了~~~吓死我了。

   测试不下数十回,达百次之多。

    难道是do~~while不可以再嵌套while?不明白。

谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-03 23:10
菜鸭
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2007-12-9
收藏
得分:0 
回复 8# 的帖子
这个方法我也试过,刚才又重新试了一遍,果然和以前一样。

当按1重新猜数的时候,没问题,可以运行,当按其它键的时候,屏幕会不断地输出printf中的字符,而且刷新速度极快。

再请您想一想,是不是我的程序哪不对?不过用goto的时候,正常运行。

谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-04 00:06
快速回复:总是卡在循环上,大家看看怎么可以把我的这个goto改为while,谢谢。
数据加载中...
 
   



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

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