| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 273 人关注过本帖
标题:为什么1和0排除不了
只看楼主 加入收藏
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
为什么1和0排除不了
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 20
#define SUM 100
int main()
{
    int i,t=0,flag,arr[5];
    //    srand( (unsigned)time(NULL) );
    srand(time(NULL));
    for (i=0; i<5; i++)
    {
        do
        {
            arr[i]=rand()%(MAX+1);
            flag=0;
            for( int j=0; j<i; j++)
            {
                if(arr[i]==1 || arr[i]==0 || arr[i]==arr[j]) //1,0为什么排除不了?
                {
                    flag=1;
                    break;
                }
            }
        }while(flag);
    }
    for(i=0; i<4; i++)
    {
        t+=SUM *5/100*(i+1);
        printf("恭喜%d楼得分%d\n",arr[i],SUM *5/100*(i+1));
    }
    printf("恭喜%d楼特等奖得分%d\n",arr[i],SUM-t);
    return 0;
}
搜索更多相关主题的帖子: color 
2012-11-27 21:23
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:10 
第一次循环时i=0,j=0,这时是不执行for( int j=0; j<i; j++)这个循环的,这时因flag==0,也不执行do循环,回到最外面的循环去执行,这时i==1.
第一次循环进arr[0]的值不管是多少也会被保存下来,

还有你最后面的一条printf中的i==4,数组出界了
2012-11-27 22:19
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:10 
程序代码:
for(j = 0;j < i;j++)    //i = 0时,循环不执行,不判断,就有楼主说的情况了
{
    if(arr[i] == 1 || arr[i] == 0 || arr[i] == arr[j])    //这里对 1和 0分别判断j + 1次,这样,额。
    {
        flag=1;
        break;
    }
}


[fly]存在即是合理[/fly]
2012-11-27 22:19
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
有道理。

www.qunxingw.wang
2012-11-27 22:25
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
程序代码:
for (i = 0;i < 5; i++)
{
    arr[i] = rand() % (MAX + 1);
    if (arr[i] == 1 || arr[i] == 0)
    {
        i--;
        continue;
    }
    for(j = 0;j < i;j++)
    {
        if(arr[i] == arr[j])
        {
            i--;
            break;
        }
    }
}


[ 本帖最后由 azzbcc 于 2012-11-27 22:27 编辑 ]


[fly]存在即是合理[/fly]
2012-11-27 22:26
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define SCORE 100
#define MAX_FLOOR 20 
int main()
{
    int i,t=0,flag,arr[5];
    bool loop;
    srand(time(NULL));
    for (i=0; i<5; i++)
    {
loop:
        do
        {
            flag=0;
            arr[i]=rand()%(MAX_FLOOR+1);
            if(arr[i]==1 || arr[i]==0  ) //防止为1, 0
            { goto loop;}
      
            for( int j=0; j<i; j++)
            {
            if( arr[i]==arr[j])
                {
                    flag=1; break;
                }
            }
        }while(flag);
    }
    for(i=0; i<4; i++)
    {
        t+=SCORE *5/100*(i+1);
        printf("恭喜%d楼得分%d\n",arr[i],SCORE *5/100*(i+1));
    }
    printf("恭喜%d楼特等奖得分%d\n",arr[i],SCORE-t);
    system("pause");
    return 0;
}


[ 本帖最后由 qunxingw 于 2012-11-28 10:58 编辑 ]

www.qunxingw.wang
2012-11-27 23:27
快速回复:为什么1和0排除不了
数据加载中...
 
   



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

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