标题:编写程序,通过函数调用方式实现将一个5*5阶矩阵中最大元素放在中心,四个角 ...
只看楼主
卜算子
Rank: 1
等 级:新手上路
帖 子:86
专家分:8
注 册:2016-9-18
结帖率:82.35%
已结贴  问题点数:20 回复次数:7 
编写程序,通过函数调用方式实现将一个5*5阶矩阵中最大元素放在中心,四个角分别放最小的4个最小元素。代码写好了,但是输出不了,请教。
我想的是在数组元素顺序不打乱的情况下进行值得交换,但是
#include <stdio.h>
 main()
 {
     int a[5][5],i,j,k,t,q;
     k=0;
     t=0;
     q=0;
     for(i=0;i<5;i++)
     {
         for(j=0;j<5;j++)
         {
             scanf("%d",&a[i][j]);
         }
     }
     for(i=0;i<5;i++)
     {
         for(j=0;j<5;j++)
         {
             if(a[q][k]<a[i][j])
                 q=i;
             k=j;
         }
     }
     t=a[2][2];
     a[2][2]=a[q][k];
     a[q][k]=t;
     q=0;
     k=0;
     for(i=0;i<5;i++)
     {
         for(j=0;j<5;j++)
         {
             if(a[q][k]>a[i][j])
                 q=i;
             k=j;
         }
     }
       t=a[0][0];
       a[0][0]=a[q][k];
       a[q][k]=t;
       q=0;
       k=0;
       for(i=0;i<5;i++)
     {
         for(j=0;j<5;j++)
         {
             if(i==0&&j==0)
                 break;
            else if(a[q][k]>a[i][j])
                 q=i;
             k=j;
         }
     }
       t=a[0][4];
       a[0][4]=a[q][k];
       a[q][k]=t;
       q=0;
       k=0;
        for(i=0;i<5;i++)
     {
         for(j=0;j<5;j++)
         {
             if((i==0&&j==0)||(i==0&&j==4))
                 break;
            else if(a[q][k]>a[i][j])
                 q=i;
             k=j;
         }
     }
        t=a[4][0];
        a[4][0]=a[q][k];
        a[q][k]=t;
         for(i=0;i<5;i++)
     {
         for(j=0;j<5;j++)
         {
             if((i==0&&j==0)||(i==0&&j==4)||(i==4&&j==0))
                 break;
            else if(a[q][k]>a[i][j])
                 q=i;
             k=j;
         }
     }
         t=a[4][4];
         a[4][4]=a[q][k];
         a[q][k]=t;

 for(i=0;i<5;i++)
     {
         for(j=0;j<5;j++)\
         {
             if((j+1)==5)
                 printf("\n");
             break;
       printf("%2d",a[i][j]);
         }
     }
 getchar();
 }写出来以后没有错误,就是不能输出值,、
搜索更多相关主题的帖子: 编写程序 include 元素 中心 
2016-11-14 16:20
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:0 

程序代码:
 for(j=0;j<5;j++)\
         {
             if((j+1)==5)
                 printf("\n");
             break;
       printf("%2d",a[i][j]);
         }
。。。break是干嘛的?不就是往外跳?,跳出for循环了当然就没输出了。。




φ(゜▽゜*)♪
2016-11-14 16:22
卜算子
Rank: 1
等 级:新手上路
帖 子:86
专家分:8
注 册:2016-9-18
得分:0 
回复 2楼 书生牛犊
只是跳出J的循环,因为是正方形输出,所以每当j=4就输出‘\n’,然后跳出循环,不然后面的PRINTF还要输出一次,不过后面我改了一下
for(i=0;i<5;i++)
     {
         for(j=0;j<5;j++)
         {
             printf("%2d",a[i][j]);
             if((j+1)==5)
               
                 printf("\n");
         }
getchar();
     }
这样就避免了

岂曰无衣,与子同袍!
2016-11-14 16:28
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:0 
回复 3楼 卜算子
那你是不是漏了大括号了?

φ(゜▽゜*)♪
2016-11-14 16:32
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:20 
回车这件事一般人是这么干的:
程序代码:
for(i=0;i<5;i++)
{
    for(j=0;j<5;j++)
    {
    if(j)printf(" ");
    printf("%2d",a[i][j]);
    }
printf("\n");
}








[此贴子已经被作者于2016-11-14 16:35编辑过]


φ(゜▽゜*)♪
2016-11-14 16:34
卜算子
Rank: 1
等 级:新手上路
帖 子:86
专家分:8
注 册:2016-9-18
得分:0 
回复 5楼 书生牛犊
呐,原来如此,差不太多嘛哈哈哈哈哈,问题解决了,谢谢你

岂曰无衣,与子同袍!
2016-11-14 16:35
卜算子
Rank: 1
等 级:新手上路
帖 子:86
专家分:8
注 册:2016-9-18
得分:0 
回复 4楼 书生牛犊
复制粘贴时候出问题了0.0

岂曰无衣,与子同袍!
2016-11-14 16:36
纵横阳仔
Rank: 7Rank: 7Rank: 7
来 自:自学成才的火星人儿
等 级:贵宾
威 望:26
帖 子:147
专家分:698
注 册:2016-10-20
得分:0 
我觉得使用指针可能会更加方便一点
2016-11-15 10:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-471119-1-1.html




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

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