| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 907 人关注过本帖
标题:出现多个for如何运算
只看楼主 加入收藏
l240958836
Rank: 1
等 级:新手上路
帖 子:29
专家分:7
注 册:2016-10-19
结帖率:88.89%
收藏
 问题点数:0 回复次数:2 
出现多个for如何运算
有以下程序
main()
{int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][ i]>a[k][ i])
{t=a[j][ i];a[j][ i ]=a[k][ i ];a[k][ i]=t;}/*按列排序*/
for(i=0,j=0;i<4;i++,j++)
printf("%d, ",a[ i ][j]);}
程序运行后的输出结果是
A)1,6,5,7, B)8,7,3,1, C)4,7,5,2, D)1,6,2,1
搜索更多相关主题的帖子: 如何 
2016-10-29 17:09
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:0 
1432
8657
3725
4861
你可以先取i=0,j=0;
for(k=j+1;k<4;k++)
你可以发现在这个循环里面每次都是a[0][0]和a[k][0]比较,k每次加一,你会发现a[0][0]和下面的每个数比较,若大就交换,a[0][0]一直保持最小
下一次i=0,j=1;
for(k=j+1;k<4;k++)
这次循环每次都是a[1][0](第一列第二个数)和a[k][0]比较,循环完a[1][0]变成了第二小的数,依次类推,第一列从小到大排序完成。
现在i=1,排序第二列。
从这里可以知道,i控制列,j控制行,k控制在i列的j行以下的数和j行的数进行比较,完成从小到大排序。

最后输出对角线元素,第一个是第一列最小值1,第二个是第二列第二小值6,第三个。。。。5      第四个。。。。7
2016-10-29 19:03
l240958836
Rank: 1
等 级:新手上路
帖 子:29
专家分:7
注 册:2016-10-19
收藏
得分:0 
是这样的。。。。

不许放弃
2016-10-31 17:12
快速回复:出现多个for如何运算
数据加载中...
 
   



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

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