| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1094 人关注过本帖
标题:高手帮看下代码,循环
只看楼主 加入收藏
lautition
Rank: 2
等 级:论坛游民
威 望:1
帖 子:24
专家分:21
注 册:2016-3-16
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:9 
高手帮看下代码,循环
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{
    srand((unsigned) time(NULL));
    int number=rand()%19+1;
    int n,i;
    //printf("这个随机值是=%d\n",number);
    printf("我是一个1-20的整数\n");
    printf("请你猜猜我是几=");
    scanf("%d",&n);
    for(i=1;n!=number;i++)//for循环开始
        {                  
        if((n<=0)||(n>20))
            {
            printf("请输入一个1-20的整数:");
            }
        else if((n>=1)&&(n<=20))
            {   
                if(n>number)
                    {
                printf("你输入的数太大了!");
                    }
                else if(n<number)
                    {
                printf("你输入的数太小了!");
                    }
            }
        printf("你第%d次没有猜对!\n",i);
                if(i>=3)
                {
                printf("你太蠢了\n");
                }
                else
                {
                ;   
                }
   
        printf("请再次输入:");
        scanf("%d",&n);
        }//for循环结束
        if( i < 3 )
            {
            printf("你太聪明了!");
            }    else
                {
                ;
                }

        printf("恭喜你猜对了\n");
    return 0;
}
这是一个猜数代码,猜一个1-20的数,红色部分,不知道怎么搞了,这样运行也是没问题的
有没有办法搞到一起,我如果放到上面   当输入正确值的时候就不会判断i次数, 如果放到下面,输错了后又不会判断i值
2016-03-18 10:10
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{
    srand((unsigned) time(NULL));
    int number=rand()%19+1;
    int n,i;
    //printf("这个随机值是=%d\n",number);
    printf("我是一个1-20的整数\n");
    printf("请你猜猜我是几=");
    scanf("%d",&n);
    for(i=0;n!=number&&i<3;i++)//for循环开始
    {                   
        if((n<=0)||(n>20))
        {
            printf("请输入一个1-20的整数:");
        }
        else if((n>=1)&&(n<=20))
        {    
            if(n>number)
            {
                printf("你输入的数太大了!");
            }
            else if(n<number)
            {
                printf("你输入的数太小了!");
            }
        }
        printf("你第%d次没有猜对!\n",i);
        printf("请再次输入:");
        scanf("%d",&n);
    }//for循环结束
    if( i < 3 )
    {
        printf("你太聪明了!恭喜你猜对了\n");
    }    else
    {
        printf("你太蠢了\n");;
    }
    return 0;
}

能编个毛线衣吗?
2016-03-18 10:48
lautition
Rank: 2
等 级:论坛游民
威 望:1
帖 子:24
专家分:21
注 册:2016-3-16
收藏
得分:0 
回复 2楼 wmf2014
只能连续猜4次

    后面的if(i<3)...else后面不会运行
2016-03-18 12:02
lautition
Rank: 2
等 级:论坛游民
威 望:1
帖 子:24
专家分:21
注 册:2016-3-16
收藏
得分:0 
回复 2楼 wmf2014
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{
    srand((unsigned) time(NULL));
    int number=rand()%19+1;
    int n,i;
    printf("这个随机值是=%d\n",number);
    printf("我是一个1-20的整数\n");
    printf("请你猜猜我是几=");
    scanf("%d",&n);
    for(i=1;n!=number;i++)//for循环开始   //这里我没有限制i的大小
    {                  
        if((n<=0)||(n>20))
        {
            printf("请输入一个1-20的整数:");
        }
        else if((n>=1)&&(n<=20))
        {   
            if(n>number)
            {
                printf("你输入的数太大了!");
            }
            else if(n<number)
            {
                printf("你输入的数太小了!");
            }
        }
        printf("你第%d次没有猜对!\n",i);
        printf("请再次输入:");
        scanf("%d",&n);
    }//for循环结束
    if( i < 3 )
    {
        printf("你太聪明了!恭喜你猜对了\n");
    }    else
    {
        printf("你太蠢了\n");;    //如果我超过三次输入正确的number  这里还是输出 你太蠢了  不会提示猜对了&&在我3次没猜对的情况依然不会输出这条
    }
    return 0;
}
在我没猜对的情况下,程序依然在FOR循环  不会执行 if(i<3)后面的语句

[此贴子已经被作者于2016-3-18 12:20编辑过]

2016-03-18 12:16
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:5 
总体要求是啥?
2016-03-18 12:26
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:5 
这个就是简单的猜数游戏,他可能意思是限定猜3次吧,如果第一次对了,就结束,不对可以继续猜。
不过这个rand()%19+1应该是1-19随机数吧?
min-max随机数应该是rand()%(max-min+1)+min,没记错的话
2016-03-18 12:59
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 


[此贴子已经被作者于2016-3-18 13:27编辑过]

2016-03-18 13:26
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 4楼 lautition
if( i < 3 )
    {
        printf("你太聪明了!恭喜你猜对了\n");
    }    else
    {
        printf("你太蠢了\n");;    //如果我超过三次输入正确的number  这里还是输出 你太蠢了  不会提示猜对了&&在我3次没猜对的情况依然不会输出这条
    }
1、你这儿的if(i<3)判断的条件是猜的次数小于3,也就是说你要求在3次内猜出正确数才能输出你太聪明了这句。你超过三次输入正确数字,此时i>3,当然会输出太蠢了这句。
2、至于你说的在你3次没猜对的情况下依然不会输出你太蠢了,是你放的printf这句位置不对。你上面猜数输入那个循环在你没有猜对的情况话会一直运行让你输入,肯定不会输出下面的printf了。想3次不对就输出你太蠢了,就把printf这句移到猜数那个循环内。如果想放的位置不变,那就像2楼斑斑那样,加个限制i次数的要求

[此贴子已经被作者于2016-3-18 13:30编辑过]

2016-03-18 13:26
lautition
Rank: 2
等 级:论坛游民
威 望:1
帖 子:24
专家分:21
注 册:2016-3-16
收藏
得分:0 
回复 5楼 grmmylbs
//总体要求是,猜一个随机数,三次内(不含三次)猜对了,输出你太聪明了,恭喜你猜对了;
//三次以上(含三次)没猜对,输出你太蠢了,请再次输入一个整数,
//三次以上(含三次)猜对,只输出恭喜你猜对了

//比较每次输入的整数是否在0-20之间,如果不是 提示重新输入
//printf输入的总次数
//其实程序是对的,只是红字部分if语句 怎么看 怎么别扭,能部能把他们合在一起 而不影响
2016-03-18 13:58
lautition
Rank: 2
等 级:论坛游民
威 望:1
帖 子:24
专家分:21
注 册:2016-3-16
收藏
得分:0 
回复 8楼 wanglianyi1
我的源码是在1L,4L的是我照着版主给我改的 我再改的结果  你看下1L

我不限制次数啊
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

程序运行是没问题的,就是红色if语句,两个空else if   这样不好吧   能不能整合到一起

[此贴子已经被作者于2016-3-18 14:14编辑过]

2016-03-18 14:01
快速回复:高手帮看下代码,循环
数据加载中...
 
   



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

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