| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2181 人关注过本帖
标题:数组乱序的问题!我做出来了,但是结果不对!大师支招啊!
取消只看楼主 加入收藏
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:9 
数组乱序的问题!我做出来了,但是结果不对!大师支招啊!
初始化一个10个元素的数组,赋值为0-10,乱序后,输出;这题用两种方法写出来!下面是我写的代码:
这里面输出结果还会没问题,我尝试了5次,有时候结果还会多出一个零!真不知道什么回事!
    //int s[10];
    //int i=0,cont=9;
    //while(i<10)
    //{
    //    s[i]=i;
    //    i++;
    //}
    //srand(time(0));
    //int j=0,a,b,t;
    //while(j<cont/2)
    //{
    //    a=rand()%10;
    //    s[a]=s[a]+s[j];
    //    s[j]=s[a]-s[j];
    //    s[a]=s[a]-s[j];
    //    j++;
    //}
    //int y=0;
    //while(y<10)
    //{
    //    printf("%d ",s[y]);
    //    y++;
    //}
搜索更多相关主题的帖子: 元素 
2013-12-28 13:55
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
收藏
得分:0 
回复 2楼 TonyDeng
我这里不是0《10吗?

西游记告诉我既没有后台、也没有师傅!所以老实敲代码!
2013-12-28 13:58
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
收藏
得分:0 
回复 4楼 TonyDeng
对不起,文字上写错了,赋值的意思的数字1~10的数!除以2是循环5次啊(即使这里不除以2,就是循环10次,结果还是错误!),然后rand()%10 = 1~`10之间的随机数,结果仍然是多一个“0”!
结果:
1 5 9 4 0 8 2 0 6 7(第1次)
6 0 4 7 1 8 2 5 3 9(第2次)
3 2 4 6 0 9 7 0 0 5(第3次)

西游记告诉我既没有后台、也没有师傅!所以老实敲代码!
2013-12-28 14:18
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
收藏
得分:0 
回复 4楼 TonyDeng
我在里面加了一个判断,然后就没有多输出“0”了!大神您觉得怎么样?
在给点思路呀!
    int s[10];
    int i=0,cont=9;
    while(i<10)
    {
        s[i]=i;
        i++;
    }
    srand(time(0));
    int j=0,a;
    while(j<cont)
    {
        a=rand()%10;
        if(j!=a)
        {
            s[a]=s[a]+s[j];
            s[j]=s[a]-s[j];
            s[a]=s[a]-s[j];
        }
        j++;
    }
    int y=0;
    while(y<10)
    {
        printf("%d ",s[y]);
        y++;
    }

西游记告诉我既没有后台、也没有师傅!所以老实敲代码!
2013-12-28 14:37
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
收藏
得分:0 
回复 4楼 TonyDeng
大师你看我现在这样写这个题目怎么样?我自己感觉这样比较谨慎一些,每个数组的值都会乱序!
    int s[10];
    int i=0;
    while(i<10)
    {
        s[i]=i;
        i++;
    }
    srand(time(NULL));
    int x=1;
    while(x<10)
    {
        int temp = x+rand()%(10-x);
        s[x-1]=s[x-1]+s[temp];
        s[temp]=s[x-1]-s[temp];
        s[x-1]=s[x-1]-s[temp];
        x++;
    }
    int j=0;
    while(j<10)
    {
        printf("%d ",s[j]);
        j++;
    }
    printf("\n");
这样写好比洗牌一样!您觉得还有其他办法吗?

西游记告诉我既没有后台、也没有师傅!所以老实敲代码!
2013-12-29 12:24
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
收藏
得分:0 
回复 7楼 pangshch
兄弟,这次我加上了这行代码!
int temp = x+rand()%(10-x);
感觉问题已经解决了,您觉得呢?您还有什么好办法吗?
我现在还在练习逻辑,for和while循环都一样!
学习知识快,新人练习逻辑困难!
我现在就懂if,while!这些够写题了。哈哈!
等有了逻辑,那些所谓的知识就是语法没有什么稀奇的,不就背背单词呗!

西游记告诉我既没有后台、也没有师傅!所以老实敲代码!
2013-12-29 12:29
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
收藏
得分:0 
回复 11楼 TonyDeng
大师!我是新人!做题是要看题目做,不能想您这样举一反三!我功力欠佳!

西游记告诉我既没有后台、也没有师傅!所以老实敲代码!
2013-12-30 22:42
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
收藏
得分:0 
回复 10楼 pangshch
您这样写看这的确换了50次,但是循环就多了,如果a随机数和b随机数同样的就做多余的动作了,如果像我那样写代码的话,就好比把所有的数放在一大筐里,随机挑一个数出来换位,然后减一位,在随机挑一个数出来换位!这样写既不会重复!也会全部换位了!

西游记告诉我既没有后台、也没有师傅!所以老实敲代码!
2013-12-30 22:48
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
收藏
得分:0 
回复 12楼 zhaogay
快奔3了,隔行如隔山!现在学起吃力!也不知道是对的选择还是错误的选着!

西游记告诉我既没有后台、也没有师傅!所以老实敲代码!
2013-12-30 22:50
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
收藏
得分:0 
回复 17楼 azzbcc
果然是大神啊!多谢前辈!

西游记告诉我既没有后台、也没有师傅!所以老实敲代码!
2014-01-05 21:51
快速回复:数组乱序的问题!我做出来了,但是结果不对!大师支招啊!
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062596 second(s), 8 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved