| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 265 人关注过本帖
标题:请大神看一下我的代码哪里错了?谢谢!!
只看楼主 加入收藏
despicableba
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-10-14
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
请大神看一下我的代码哪里错了?谢谢!!
这是问题:
将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之.用main函数调用.

#include<iostream>
using namespace std;
void T(int (*a)[5])
{
    int *b,k=0,i,j,t,flag=0;
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
        {
            b[k]=a[i][j];
            k++;
        }
    for(j=0;j<24;j++)
        for(i=0;i<24-j;i++)
            if(b[i]>b[i+1])
            {t=b[i];b[i]=b[i+1];b[i+1]=t;}
    if(b[24]!=a[2][2])
        for(i=0;i<5;i++)
        {
            for(j=0;j<5;j++)
                if(a[i][j]==b[24])
                {
                    t=a[i][j];
                    a[i][j]=a[2][2];
                    a[2][2]=t;
                    flag=1;
                    break;
                }
            if(flag==1) break;
        }
    flag=0;
    if(b[0]!=a[0][0])
        for(i=0;i<5;i++)
        {
            for(j=0;j<5;j++)
                if(a[i][j]==b[0])
                {
                    t=a[i][j];
                    a[i][j]=a[0][0];
                    a[0][0]=t;
                    flag=1;
                    break;
                }
            if(flag==1) break;
        }
    flag=0;
    if(b[1]!=a[0][4])
        for(i=0;i<5;i++)
        {
            for(j=0;j<5;j++)
                if(a[i][j]==b[1])
                {
                    t=a[i][j];
                    a[i][j]=a[0][4];
                    a[0][4]=t;
                    flag=1;
                    break;
                }
            if(flag==1) break;
        }
    flag=0;
    if(b[2]!=a[4][0])
        for(i=0;i<5;i++)
        {
            for(j=0;j<5;j++)
                if(a[i][j]==b[2])
                {
                    t=a[i][j];
                    a[i][j]=a[4][0];
                    a[4][0]=t;
                    flag=1;
                    break;
                }
        }
    flag=0;
    if(b[3]!=a[4][4])
        for(i=0;i<5;i++)
        {
            for(j=0;j<5;j++)
                if(a[i][j]==b[3])
                {
                    t=a[i][j];
                    a[i][j]=a[4][4];
                    a[4][4]=t;
                    flag=1;
                    break;
                }
            if(flag==1) break;
        }
}
 
int main ()
{
    void T(int (*a)[5]);
    int maxtrix[5][5]={{3,4,6,9,13},{4,45,5,56,6},{13,3,8,-2,3},{1,2,3,4,5},{2,4,6,8,10}};
    printf("原矩阵:\n");
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
            cout<<maxtrix[i][j]<<" ";
        cout<<endl;
    }
    printf("\n转置后矩阵:\n");
    T(maxtrix);
    for(i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
            cout<<maxtrix[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}

编译组建时都没有问题  但是运行的时候没法输出转置后的矩阵,显示“已停止工作”。

谢谢各位大神!!!
2015-10-14 11:28
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:20 
程序代码:
[11:52:31 azzbcc@XJH-PC ~]$ diff test.cpp.bak test.cpp
0a1
> #include<stdio.h>
5c6
<     int *b,k=0,i,j,t,flag=0;
---
>     int b[5*5],k=0,i,j,t,flag=0;
104c105
<     for(i=0;i<5;i++)
---
>     for(int i=0;i<5;i++)


[fly]存在即是合理[/fly]
2015-10-14 11:53
快速回复:请大神看一下我的代码哪里错了?谢谢!!
数据加载中...
 
   



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

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