| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 936 人关注过本帖, 1 人收藏
标题:这个C程序的错误在哪里
只看楼主 加入收藏
灰兜兜
Rank: 2
等 级:论坛游民
帖 子:25
专家分:18
注 册:2012-4-15
结帖率:100%
收藏(1)
已结贴  问题点数:2 回复次数:11 
这个C程序的错误在哪里
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    int i,a,b,flag=1;
    char p;
    while(flag==1)
    {
        srand((int)time(0));   
        i=(rand()%100+1);
         for(b=0;b<10;)
        {   
            printf("Please enter a number:");
            scanf("%d",&a);
            b++;
            if(a==i)
            {
                printf("you are right.\n");
                printf("you enter %d times.\n",b);
                flag=0;
                break;
            }
            else if(a>i)printf("too high\n");
            else printf("too low\n");
        }
        if(flag==1)
        {
            printf("do you want to enter a number,YES/NOT?\n");
            printf("please enter Y/N:");
            scanf("%c",&p);//就是这里错在哪里!!!!!!!!!!
            if(p=='N'||p=='n')
             flag=0;
        }
    }
   
    return 0;

}

编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。




[ 本帖最后由 灰兜兜 于 2012-5-11 14:13 编辑 ]
搜索更多相关主题的帖子: include number 
2012-05-11 13:45
ln6265431
Rank: 5Rank: 5
等 级:职业侠客
帖 子:66
专家分:325
注 册:2012-3-29
收藏
得分:0 
把return 0;换成getch();
就行了;
2012-05-11 15:16
灰兜兜
Rank: 2
等 级:论坛游民
帖 子:25
专家分:18
注 册:2012-4-15
收藏
得分:0 
回复 2楼 ln6265431
不行啊
2012-05-11 15:21
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:0 
第一个scanf 后添个getchar(), 除去回车。

[ 本帖最后由 回首依依 于 2012-5-11 16:31 编辑 ]
2012-05-11 15:49
灰兜兜
Rank: 2
等 级:论坛游民
帖 子:25
专家分:18
注 册:2012-4-15
收藏
得分:0 
回复 4楼 回首依依
为什么?能说得详细点吗
2012-05-11 22:48
小糊涂神c30
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:198
专家分:809
注 册:2012-4-25
收藏
得分:2 
scanf语句不接收空格,回车等字符,在第一个scanf输入完以后留有一个‘回车’字符在缓冲区',所以在第二个scanf输入时,把缓冲区的‘回车’输入进去了,造成了无法输入!解决办法就是楼上所说的,在第一个scanf后面加getchar()吸收缓冲区的回车。
2012-05-12 08:42
xiyao0206
Rank: 2
等 级:论坛游民
帖 子:25
专家分:32
注 册:2012-4-23
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    int i,a,b,flag=1;
    char p;
    while(flag==1)
    {
        srand((int)time(0));   
        i=(rand()%100+1);
         for(b=0;b<10;)
        {   
            printf("Please enter a number:");
            scanf("%d",&a);
            getchar();
            b++;
            if(a==i)
            {
                printf("you are right.\n");
                printf("you enter %d times.\n",b);
                break;
            }
            else if(a>i)printf("too high\n");
            else printf("too low\n");
        }
         if(b<10)
         {
            printf("<10times,do you want to enter a number again,YES/NOT?\n");
            printf("please enter Y/N:");
            scanf("%c",&p);
            if(p=='N'||p=='n')
             flag=0;
         }
       else
        {
            printf(">10times,do you want to enter a number again,YES/NOT?\n");
            printf("please enter Y/N:");
            scanf("%c",&p);
            if(p=='N'||p=='n')
             flag=0;
        }
    }
   
    return 0;

}
楼主之前的程序还是有些小bug的,就是如果在10次以内猜中的话就不能进行下一次猜数了,我修改了下,应该没有问题了。如果还有问题,再切磋切磋下哈
2012-05-12 09:14
灰兜兜
Rank: 2
等 级:论坛游民
帖 子:25
专家分:18
注 册:2012-4-15
收藏
得分:0 
回复 7楼 xiyao0206
呵呵,童鞋,那个题目就是如果输入对了,就跳出循环了。
2012-05-12 22:20
灰兜兜
Rank: 2
等 级:论坛游民
帖 子:25
专家分:18
注 册:2012-4-15
收藏
得分:0 
回复 6楼 小糊涂神c30
while(getchar()!='\n');
这个也能清除缓存吧?他们两个有区别吗,都是只能清除'\n'吗
2012-05-12 22:24
小糊涂神c30
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:198
专家分:809
注 册:2012-4-25
收藏
得分:0 
回复 9楼 灰兜兜
是可以清除,但这个while语句就没有作用了,因为判断条件永远不成立!
2012-05-13 00:12
快速回复:这个C程序的错误在哪里
数据加载中...
 
   



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

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