| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 488 人关注过本帖
标题:求大神帮忙解答一下为什么我这个程序在我输入数据判断一次后还要我输入一次 ...
只看楼主 加入收藏
aa874142631
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-11-7
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:7 
求大神帮忙解答一下为什么我这个程序在我输入数据判断一次后还要我输入一次数据回车后才提示我重新输入一个数据 ????
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
    int a,b,c=0;
    srand(time(NULL));

 
    loop: b=rand()%100+1;   
        do
{   
    printf("请输入一个整数:\n");
    scanf("%d",&a);
    if(c>10)
    break;
    else if(a==b)
{    printf("right 您猜测的次数是%d\n",c);   
    goto loop;
}   
   
    else if(a>b)
    printf("too hight\n");
   
    else if(a<b)
    printf("too low\n");
    c++;
}
while(scanf("%d",&a)!=EOF);
printf("程序终止");
    return 0;
}
搜索更多相关主题的帖子: include 
2013-11-10 11:54
南国神画
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:51
专家分:124
注 册:2013-10-24
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
    int a,b,c=0;
    srand(time(NULL));


loop: b=rand()%100+1;   
    do
    {   
        printf("请输入一个整数:\n");
        scanf("%d",&a);
           ++c;

        //    if(c>10)
        //    break;
        if(a==b)
        {    printf("right 您猜测的次数是%d\n",c);   
        goto loop;
        }   

        else if(a>b)
            printf("too hight\n");



        else {
            printf("too low\n");


        }
           }
    while(c<=10);
    printf("程序终止");
    return 0;
} 


  个人觉得是这里出了问题,你那个(scanf("%d",&a)!=EOF)是要输入一个数据再判断的,自然就会出现你说的那种情况了。
收到的鲜花
  • aa8741426312013-11-10 19:09 送鲜花  3朵  
2013-11-10 12:45
aa874142631
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-11-7
收藏
得分:0 
回复 2楼 南国神画
这样改了的话就不符合我题目的要求了。。我题目的要求是最多可以判断10次。10次之后就重新产生一个随机数继续猜或者是10次前就判断对了,然后重新产生一个随机数再继续猜、、直到输入终止符才终止程序。。这样的话应该怎样去改动啊???
2013-11-10 12:56
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:8 
你有两个输入语句,每个循环当然要输入两次,
第一次是你猜的数,第二次是用来判断程序是否终止的(ctrl+z)
所以你干嘛要用 do while 而不用 while 呢

三十年河东,三十年河西,莫欺少年穷!
2013-11-10 13:28
aa874142631
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-11-7
收藏
得分:0 
回复 4楼 韶志
哦,原来是这样,while用过但没作对。。
2013-11-10 13:56
aa874142631
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-11-7
收藏
得分:0 
回复 4楼 韶志
我题目的要求是最多可以判断10次。10次之后就重新产生一个随机数继续猜或者是10次前就判断对了,然后重新产生一个随机数再继续猜、、直到输入终止符才终止程序。。这样的话应该怎样使用while语句???
2013-11-10 14:56
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:12 
回复 6楼 aa874142631
仔细看我的改动
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
    int a,b,c=0;
    srand(time(NULL));
    loop: b=rand()%100+1;
    printf("请输入一个整数:\n");
    while(scanf("%d",&a)!=EOF)
    {
        if(c>10)
            break;
        else if(a==b)
        {
            printf("right 您猜测的次数是%d\n",c);   
            goto loop;
        }
        else if(a>b)
            printf("too hight!请重新输入一个更小的整数:\n");
        else if(a<b)
            printf("too low!  请重新输入一个更大的整数:\n");
        c++;
    }
    printf("程序终止");
    return 0;
} 

收到的鲜花
  • aa8741426312013-11-10 19:08 送鲜花  3朵  

三十年河东,三十年河西,莫欺少年穷!
2013-11-10 16:40
aa874142631
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-11-7
收藏
得分:0 
回复 7楼 韶志
while(scanf("%d",&a)!=EOF)
    {   c++;
        if(c>10)
            break;
    我这样改动就符合要求了。。谢谢咯
2013-11-10 19:08
快速回复:求大神帮忙解答一下为什么我这个程序在我输入数据判断一次后还要我输入 ...
数据加载中...
 
   



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

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