| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3608 人关注过本帖
标题:总是卡在循环上,大家看看怎么可以把我的这个goto改为while,谢谢。
只看楼主 加入收藏
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
今天晚上才来```LZ``很抱歉啊```
我写了个例子在TC2.0上可以运行```只是汉字显示为乱码``
因为TC不支持汉语``
希望对你有帮助````如果帮不了``我就没有办法了``爱摸能助``对不起```
程序代码:
 
#include <stdio.h>

void Clearstdin(void) ;

int main(void)
{
    char c = 'y' ;
    int  i = 0   ;

    while ( c == 'y' || c == 'Y' )
    {
          printf ("恨死了``死了都要C``你去死吧``!!\n\n") ;
          printf ("还要继续骂吗??? (Y/N)\n\n") ;

          scanf  ("%c", &c ) ;
          Clearstdin() ;

          while ( c != 'y' && c != 'Y' && c != 'n' && c != 'N' )
          {
                  ++i ; 

                  printf ("按拐了``重新按``!!! (Y/N)\n\n") ;
                  printf ("还要继续骂吗(Y\N)\n") ;

                  scanf  ("%c", &c ) ;
                  Clearstdin() ;  
          }
    }
    
    if ( i > 3 )
       printf ("``啊哟``骂得我累惨了``!!!\n\n") ;    
   
    return 0 ;
}

void Clearstdin(void)
{    
     while ( getchar() != '\n' ) ;
}


[[it] 本帖最后由 死了都要C 于 2008-2-4 19:30 编辑 [/it]]

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-02-04 19:28
ACQ
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-1-31
收藏
得分:0 
while ( getchar() != '\n' ) ;
看见楼上这句代码,赞一个!支持!

ACQ
2008-02-04 19:49
lujunplanet
Rank: 1
来 自:昆山
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-2-4
收藏
得分:0 
如何學C語言
版主你好~~~我想學C語言~~~請問怎樣才能很好的學習C語言?

happy everyday
2008-02-04 21:55
yanhaolang
Rank: 1
等 级:新手上路
帖 子:60
专家分:7
注 册:2007-3-12
收藏
得分:0 
经调试,我的程序符合你的要求:
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void main(){
//猜数字游戏开始,请你输入1000以内的数字,你有20次机会
int my_rand,your_input;
char c;
begin:
srand(unsigned(time(0)));
my_rand=rand()%1000+1;
int count=0;
do{
        if(count>=20){
        printf("你猜了20次了,程序终止。。。\n");
        printf("你还要继续玩 吗 ?(y/n)");
        fflush(stdin);
        c=getchar();
        if(c=='y'||c=='Y')
            goto begin;
        else
        break;
    }
    printf("请输入1000以内的数字:\n");
    scanf("%d",&your_input);
    if(your_input>1000||your_input<1){
        printf("你输入的数范围错误!\n");
        fflush(stdin);
        continue;

    }
    else if(your_input>my_rand){
        printf("你输入的数字比随机数大\n");
        count++;
        continue;
    }
    else if(your_input<my_rand){
        printf("你输入的数字比随机数小\n");
        count++;
        continue;
    }
    else if(your_input==my_rand){
        printf("恭喜你,你猜对了!");
        break;
            
    }
//    else {
//        printf("你输入错误违反游戏规则。\n");
//        continue;
//    }


}
while(true);
}
2008-02-08 14:18
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
[bo]以下是引用 [un]菜鸭[/un] 在 2008-2-3 22:44 的发言:[/bo]

(恕删)我知道程序中用goto语句不好 ...


没人说用goto不好,而是说“用不好goto,会怎的怎的...因此尽量不要用”

你可以试试用goto提高效率,把while的判断省掉


...嘿嘿,因为经常汇编,JMP来JMP去的,还是很喜欢goto,废话了几句,莫怪

女侠,约吗?
2008-02-11 03:52
s_k_y
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2008-2-2
收藏
得分:0 
我是菜鸟
不知这样可以不,是不是你想要得把goto去掉.


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
   int a,b,c,n;

  do{
  printf("***********************************************************\n");
   printf("您好,现在请您猜一个1000以内的整数。\n您有20次机会,每次您猜错了,系统会提\n示您猜得大了或者小了。祝您玩得愉快!\n");
   printf("***********************************************************\n");
   n=1;
   srand(time(NULL));
   b=rand()%1000+1;
   do
  {    printf("input a number:");
       /*printf("请您输入一个数字:");*/
   scanf("\n%d",&a);
   while(a<1||a>1000)
   {
      printf("error,input a number again!");
     /*printf("对不起,您输入的数字不对,请重新输入:");*/
     scanf("\n%d",&a);
   }
     if(a>b)
     {
       printf("more,input a number again!");
       /*printf("对不起,您输入的数字过大,请重新输入。\n");*/
       printf("**********************************************************\n");
     }
     if(a<b)
     {  printf("less,input a number again!");
      /*printf("对不起,您输入的数字太小,请重新输入。\n");*/
        printf("**********************************************************\n");
     }
      n++;
     if(n==21)break;
      printf("This is the %d!\n",n);
     /*printf("这是您第%d次猜数!\n",n);*/
    }
     while(a!=b) ;
     if(a==b)
     printf("you guess the number\n");
     /*printf("恭喜您,猜对了!\n");*/
     if(n==21)
     printf("game over");
     printf("Do you try again?If you want,you press 1.");
     /*printf("您好,您的次数已到!\n");*/
     /*printf("请问您还想继续玩吗?是请按1,按其它键退出!"); */
     scanf("\n%d",&c);
   }
   while(c==1);
    getch();
}
2008-02-11 18:08
s_k_y
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2008-2-2
收藏
得分:0 
我是菜鸟
不知这是不是你想要得的把goto去掉.

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
   int a,b,c,n;

  do{
  printf("***********************************************************\n");
   printf("您好,现在请您猜一个1000以内的整数。\n您有20次机会,每次您猜错了,系统会提\n示您猜得大了或者小了。祝您玩得愉快!\n");
   printf("***********************************************************\n");
   n=1;
   srand(time(NULL));
   b=rand()%1000+1;
   do
  {    printf("input a number:");
       /*printf("请您输入一个数字:");*/
   scanf("\n%d",&a);
   while(a<1||a>1000)
   {
      printf("error,input a number again!");
     /*printf("对不起,您输入的数字不对,请重新输入:");*/
     scanf("\n%d",&a);
   }
     if(a>b)
     {
       printf("more,input a number again!");
       /*printf("对不起,您输入的数字过大,请重新输入。\n");*/
       printf("**********************************************************\n");
     }
     if(a<b)
     {  printf("less,input a number again!");
      /*printf("对不起,您输入的数字太小,请重新输入。\n");*/
        printf("**********************************************************\n");
     }
      n++;
     if(n==21)break;
      printf("This is the %d!\n",n);
     /*printf("这是您第%d次猜数!\n",n);*/
    }
     while(a!=b) ;
     if(a==b)
     printf("you guess the number\n");
     /*printf("恭喜您,猜对了!\n");*/
     if(n==21)
     printf("game over");
     printf("Do you try again?If you want,you press 1.");
     /*printf("您好,您的次数已到!\n");*/
     /*printf("请问您还想继续玩吗?是请按1,按其它键退出!"); */
     scanf("\n%d",&c);
   }
   while(c==1);
    getch();
}
UID230111 精华0 积分66 铜板0 个 阅读权限10 在线时间0 小时 最后登录2008-2-11 查看详细资料
 评分 编辑 引用 使用道具 举报 回复 TOP
2008-02-11 18:11
s_k_y
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2008-2-2
收藏
得分:0 
TO yanhaolang
对你的程序一点改良,你有一处明显错误,你的定义语句(int count=0)放在了执行语句的后面,在c语言里是不允许的!
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void main()
{
  /*猜数字游戏开始,请你输入1000以内的数字,你有20次机会*/
  int my_rand,your_input;
  int count;
  char c,b;

 begin:
  srand(time(NULL));
  my_rand=rand()%1000+1;
  count=0;
  do
    {
      printf("qing shu ru 1000 yi nei de shu zi:\n");
      /*printf("请输入1000以内的数字:\n");*/
      scanf("%d",&your_input);
     if(your_input>1000||your_input<1){
      printf("ni shu ru de shu wai wei cun wu!\n");
      /* printf("你输入的数范围错误!\n");*/
      fflush(stdin);
      continue;

    }
    else if(your_input>my_rand){
        printf("it is more\n");
      /*  printf("你输入的数字比随机数大\n");  */
        count++;
        continue;
    }
    else if(your_input<my_rand){
        printf("it is less\n");
       /* printf("你输入的数字比随机数小\n"); */
        count++;
        continue;
    }
    else if(your_input==my_rand){
        printf("ni cai dui le!");
       /*  printf("恭喜你,你猜对了!");  */
        printf("\n ni ai xiang cai ma?  chu ru Y huo y\n");
           b=getchar();
            if(b=='y'||b=='Y')
              goto begin;
            else
               break;
    }

  }

     while(count<=20);
      printf("ni cai le 20 ci.\n");
      printf("ni hai xiang ji xu wang ma?(y/n)");
      c=getchar();
        if(c=='y'||c=='Y')
          goto begin;
        else
          exit(1);
  }
2008-02-12 00:43
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
楼上的改一下偶的代码吧
2008-02-12 01:29
s_k_y
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2008-2-2
收藏
得分:0 
你的什么代码?
2008-02-12 22:34
快速回复:总是卡在循环上,大家看看怎么可以把我的这个goto改为while,谢谢。
数据加载中...
 
   



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

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