| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 473 人关注过本帖
标题:可以把这个程序中三个for(i=0;i<6;i++)循环合并么?如何操作?thx!
只看楼主 加入收藏
fallenpeanut
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-4-8
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:6 
可以把这个程序中三个for(i=0;i<6;i++)循环合并么?如何操作?thx!
以下的编程为的是:输入6个整数,按从小到大的顺序排列。试过把三个for(i=0;i<6;i++)循环合并在一起,各个for(i=0;i<6;i++)中循环其余部分分别用花括号合并在一起,发现结果并不正确。可以把三个循环合并么?
#include <stdio.h>
int main()
{
    int a[6];
    int max=a[0],i,j,h;
    for(i=0;i<6;i++)
    {
    scanf("%d",&a[i]);
    }
   
    for(i=0;i<6;i++)
    for(j=0,max=a[0];j<6-i;j++)
    if (a[j]>a[j+1])
        {
        max=a[j];
        a[j]=a[j+1];
        a[j+1]=max;
        }
    for(i=0;i<6;i++)
    printf("%d ",a[i]);
   
    return 0;
}

[ 本帖最后由 fallenpeanut 于 2015-4-15 09:47 编辑 ]
2015-04-15 09:44
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
合在一起 要干嘛 为了节省代码量吗   
你还是不理解这个程序  如果理解了 就不会问这个问题

DO IT YOURSELF !
2015-04-15 09:47
fallenpeanut
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-4-8
收藏
得分:0 
回复 2楼 wp231957
这个是我自己写的,但是完了觉得不够简洁,但合在一起运行结果又不对,不知道错误在哪里。为什么改成下面的这样结果就不对了?for(i=0;i<6;i++)循环下运行整个的用了花括号,各个循环按先后顺序~哦!我明白了……按先后顺序每个结构循环一次再i++额,包括printf的输出。谢谢!
#include <stdio.h>
int main()
{
    int a[6];
    int max=a[0],i,j,h;
    for(i=0;i<6;i++)
{
    {
    scanf("%d",&a[i]);
    }
   
    {
    for(j=0,max=a[0];j<6-i;j++)
    if (a[j]>a[j+1])
        {
        max=a[j];
        a[j]=a[j+1];
        a[j+1]=max;
        }
    }
        {
    printf("%d ",a[i]);
    }
}
   
    return 0;
}
2015-04-15 10:03
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
如果这样写,你还是想合并吗  不要试图去做一些费力不讨好的事情

程序代码:
#include <stdio.h>

int main()
{
    int a[6]={0};
    int max=a[0];
    int j;
    int x,y,z;
    //这个循环就是用于输入用户数据的 
    for(x=0;x<6;x++)
    {
        scanf("%d",&a[x]);
    }
    //这个双重循环就是用于对用户输入的数据进行排序的
    for(y=0;y<6;y++)
    {
        for(j=0,max=a[0];j<6-y;j++)
        {
            if (a[j]>a[j+1])
            {
                max=a[j];
                a[j]=a[j+1];
                a[j+1]=max;
            }
        }
    }
    //这个循环就是对已经排好序的用户数据进行输出打印的
    for(z=0;z<6;z++)
    {
        printf("%d ",a[z]);
    }

    return 0;
}

DO IT YOURSELF !
2015-04-15 10:34
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
边接受数据边排序应该可以

能编个毛线衣吗?
2015-04-15 10:45
fallenpeanut
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-4-8
收藏
得分:0 
回复 4楼 wp231957
受教了!十分感谢!
2015-04-15 18:51
fallenpeanut
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-4-8
收藏
得分:0 
回复 4楼 wp231957
谢谢指点,我再想想。
2015-04-15 20:45
快速回复:可以把这个程序中三个for(i=0;i<6;i++)循环合并么?如何操作?thx!
数据加载中...
 
   



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

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