| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 587 人关注过本帖
标题:请教大家一个问题
只看楼主 加入收藏
nmdsyz
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-1-8
收藏
 问题点数:0 回复次数:8 
请教大家一个问题
这个程序输入字母为什么会死循环,如何修改,先谢谢了.
程序如下:
#include "stdio.h"
#include "stdlib.h"
main()
{
   int a,b,times=0;
   char c='y';
   randomize();
   a=rand()%10;
   printf("Please number:\n");
   while(c!='Y')
   {
   printf("%-4d",++times);
   scanf("%d",&b);
   if(a==b) c='Y';
   else printf("Erorrs\n");
   printf("\n");
   }
   printf("***************************\n");
   printf("Very Good!!!\nThe number is:%d\n",a);
   printf("***************************\n");
   getch();
}
搜索更多相关主题的帖子: include number 如何 字母 
2008-10-18 22:04
dillon
Rank: 1
等 级:新手上路
威 望:2
帖 子:183
专家分:0
注 册:2008-10-6
收藏
得分:0 
LZ的程序好像还不能运行哦,要加个#include"conio.h"头文件的.
2008-10-18 22:20
nmdsyz
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-1-8
收藏
得分:0 
补充一下:
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
main()
{
   int a,b,times=0;
   char c='y';
   randomize();
   a=rand()%10;
   printf("Please number:\n");
   while(c!='Y')
   {
   printf("%-4d",++times);
   scanf("%d",&b);
   if(a==b) c='Y';
   else printf("Erorrs\n");
   printf("\n");
   }
   printf("***************************\n");
   printf("Very Good!!!\nThe number is:%d\n",a);
   printf("***************************\n");
   getch();
}
2008-10-18 22:56
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1687
专家分:4253
注 册:2007-12-27
收藏
得分:0 
scanf("%d",&b);
这句话期待的输入是十进制整数,你输入字母会产生什么后果不可预测

就好象张着嘴等着天上下饺子的时候,下来的却是冰雹...

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-10-18 23:06
nmdsyz
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-1-8
收藏
得分:0 
应该怎么解决?
2008-10-18 23:08
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
~~~~~~~~~~~~~~~~~~~~~``

    你的程序中,c 变量是没有用的,只要用 break 就可以结束循环,所以帮你更正过来。

    另外如果误输入字母,死循环的问题,只要加个清除键盘缓存的代码就可以解决。

    下面是我帮你改过的代码,谨作参考:
程序代码:
#include "stdio.h"
#include "stdlib.h"
#define purge {char e;e=getchar()!='\n';}
main()
{
   int a,b,times=0;
   randomize();
   a=rand()%10;
   printf("Please number:\n");
   while(1)
   {
        printf("%-4d",++times);
        scanf("%d",&b);
        purge;
        if(a==b) break;
        else printf("Erorrs\n\n");
   }
   printf("***************************\n");
   printf("Very Good!!!\nThe number is:%d\n",a);
   printf("***************************\n");
   getch();
}
2008-10-19 00:08
rjgcmjl
Rank: 1
来 自:浙江杭州
等 级:新手上路
帖 子:56
专家分:0
注 册:2008-3-9
收藏
得分:0 
[bo][un]广陵绝唱[/un] 在 2008-10-19 00:08 的发言:[/bo]

~~~~~~~~~~~~~~~~~~~~~``

    你的程序中,c 变量是没有用的,只要用 break 就可以结束循环,所以帮你更正过来。

    另外如果误输入字母,死循环的问题,只要加个清除键盘缓存的代码就可以解决。

    下面 ...

c 变量是没有用的,怎么说?

古道,西风,瘦马......
2008-10-19 00:18
larden
Rank: 1
等 级:新手上路
帖 子:19
专家分:7
注 册:2008-8-28
收藏
得分:0 
4楼正解,我就怕楼主还要说输入字符串为什么会出问题
2008-10-19 01:55
nmdsyz
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-1-8
收藏
得分:0 
谢谢 6楼的前辈!!
问题已解决,不过又有一个问题:

e=getchar()!='\n;

这一句是什么意思!
2008-10-19 08:48
快速回复:请教大家一个问题
数据加载中...
 
   



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

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