2418: C语言习题 矩阵元素变换

时间限制: 1 Sec  内存限制: 128 MB

提交: 293  解决: 155

题目描述

将一个n×n(2<n<10,n为奇数)的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右、从上到下顺序依次从小到大存放),写一

函数实现。用main函数调用。

输入

输入n和矩阵中的每个元素

输出

变换后的矩阵

样例输入

5
25 13 9 5 1
16 17 18 19 6
15 24 4 20 7
14 23 22 21 8
2 12 11 10 3

样例输出

1 13 9 5 2
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
3 12 11 10 4

提示

主函数已给定如下,提交时不需要包含下述主函数







/* C代码 */



int main()



{



    void change(int *,int );



    int **a,*p,i,j;



    int n;



    scanf("%d",&n);



    p=(int*)malloc(n*n*sizeof(int));



    a=(int**)malloc(n*sizeof(int *));



    for(i=0; i<n; i++)



        a[i]=p+n*i;



    for (i=0; i<n; i++)                     //输入矩阵



        for (j=0; j<n; j++)



            scanf("%d",&a[i][j]);



    change(p,n);                              //调用函数,实现交换



    for (i=0; i<n; i++)                    //输出已交换的矩阵



    {



        for (j=0; j<n; j++)



            printf("%d ",a[i][j]);



        printf("\n");



    }



    free(p);



    free(a);



    return 0;



}







/* C++代码 */







int main()



{



    void change(int *,int );



    int **a,*p,i,j;



    int n;



    cin>>n;



    p=new int[n*n];



    a=new int*[n];



    for(i=0; i<n; i++)



        a[i]=p+n*i;



    for (i=0; i<n; i++)                     //输入矩阵



        for (j=0; j<n; j++)



            cin>>a[i][j];



    change(p,n);                           //调用函数,实现交换



    for (i=0; i<n; i++)                    //输出已交换的矩阵



    {



        for (j=0; j<n; j++)



            cout<<a[i][j]<<" ";



        cout<<endl;



    }



    delete []p;



    delete []a;



    return 0;



}

迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……

#include <iostream>
using namespace std;
void change(int *k,int p)
{
int t,*min,*max,i,j;
min=max=k;
for(i=0; i<p; i++)
for(j=0; j<p; j++)
{
if(*(k+p*i+j)<*min)
min=k+p*i+j;
else if(*(k+p*i+j)>*max)
max=k+p*i+j;
}
t=*max;
*max=*(k+(p*p)/2);
*(k+(p*p)/2)=t;
t=*min;
*min=*k;
*k=t;
min=&*(k+1);
for(i=0; i<p; i++)
for(j=0; j<p; j++)
if((k+p*i+j)!=k)
if(*(k+p*i+j)<*min)
min=k+p*i+j;
t=*min;
*min=*(k+p-1);
*(k+p-1)=t;
min=&*(k+1);
for(i=0; i<p; i++)
for(j=0; j<p; j++)
if((k+p*i+j)!=(k+p-1)&&(k+p*i+j)!=k)
if(*(k+p*i+j)<*min)
min=k+p*i+j;
t=*min;
*min=*(k+p*(p-1));
*(k+p*(p-1))=t;
min=&*(k+1);
for(i=0; i<p; i++)
for(j=0; j<p; j++)
if((k+p*i+j)!=k&&(k+p*i+j)!=(k+p-1)&&(k+p*i+j)!=(k+p*(p-1)))
if(*(k+p*i+j)<*min)
min=k+p*i+j;
t=*min;
*min=*(k+p*p-1);
*(k+p*p-1)=t;
}
int main()
{
void change(int *,int );
int **a,*p,i,j;
int n;
cin>>n;
p=new int[n*n];
a=new int*[n];
for(i=0; i<n; i++)
a[i]=p+n*i;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
cin>>a[i][j];
change(p,n);
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
delete []p;
delete []a;
return 0;
}

YTU 2418: C语言习题 矩阵元素变换的更多相关文章

  1. YTU 2973: C语言习题5.25--文件操作2

    2973: C语言习题5.25--文件操作2 时间限制: 1 Sec  内存限制: 128 MB 提交: 242  解决: 105 题目描述 文本文件score.dic 中存储了n名学生的信息(班级编 ...

  2. YTU 2414: C语言习题 字符串排序

    2414: C语言习题 字符串排序 时间限制: 1 Sec  内存限制: 128 MB 提交: 656  解决: 305 题目描述 输入n个字符串,将它们按字母由小到大的顺序排列并输出.编写三个函数实 ...

  3. YTU 2974: C语言习题5.26--文件操作3

    2974: C语言习题5.26--文件操作3 时间限制: 1 Sec  内存限制: 128 MB 提交: 213  解决: 92 题目描述 文本文件score.dic 中存储了n名学生的信息(班级编号 ...

  4. YTU 2972: C语言习题5.24--文件操作1

    2972: C语言习题5.24--文件操作1 时间限制: 1 Sec  内存限制: 128 MB 提交: 248  解决: 94 题目描述 文本文件score.dic 中存储了n名学生的信息(班级编号 ...

  5. YTU 2425: C语言习题 输出月份

    2425: C语言习题 输出月份 时间限制: 1 Sec  内存限制: 128 MB 提交: 476  解决: 287 题目描述 编写一程序,输入月份号,输出该月的英文月名.例如,输入3,则输出Mar ...

  6. YTU 2420: C语言习题 不等长字符串排序

    2420: C语言习题 不等长字符串排序 时间限制: 1 Sec  内存限制: 128 MB 提交: 460  解决: 239 题目描述 在主函数中输入n(n<=10)个不等长的字符串.用另一函 ...

  7. YTU 2419: C语言习题 等长字符串排序

    2419: C语言习题 等长字符串排序 时间限制: 1 Sec  内存限制: 128 MB 提交: 650  解决: 249 题目描述 在主函数中输入n(n<=10)个等长的字符串.用另一函数对 ...

  8. YTU 2424: C语言习题 字符串比较

    2424: C语言习题 字符串比较 时间限制: 1 Sec  内存限制: 128 MB 提交: 1042  解决: 613 题目描述 写一函数,实现两个字符串的比较.即自己写一个strcmp函数,函数 ...

  9. YTU 2417: C语言习题 字符串长度

    2417: C语言习题 字符串长度 时间限制: 1 Sec  内存限制: 128 MB 提交: 758  解决: 548 题目描述 写一函数,求一个字符串的长度.在main函数中输入字符串,并输出其长 ...

随机推荐

  1. Android开发——遍历读写U盘、SD卡等外部存储

    1.首先需要得到挂载在手机上的有哪些盘符 String[] result = null; StorageManager storageManager = (StorageManager)getSyst ...

  2. POJ-2386Lake Counting,搜索题。。

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K           Description Due to recent rains, w ...

  3. 短视频 SDK 架构设计实践

    作者简介 孔维乐,七牛云客户端团队 Android 平台高级开发工程师,专注音视频,图形图像领域.OpenGL 专家,先后参与直播推流及连麦 SDK 的开发,主导短视频 SDK 的架构设计与实现, 对 ...

  4. 关于datetime,date,timestamp,year,time时间类型小结

    关于datetime,date,timestamp,year,time时间类型 datetime占用8个字节 日期范围:”1000-01-01 00:00:00” 到”9999-12-31 23:59 ...

  5. selenide01---截图

    1.junit:import com.codeborne.selenide.junit.ScreenShooter; @Rule public ScreenShooter makeScreenshot ...

  6. gcc,gdb基础学习2

    gdb调试: 源文件:test.cc >>g++ -g test.cc -o test.o  这里需要参数-g,因为接下来要使用gdb进行调试,生成目标文件test·o 因为需要将调试信息 ...

  7. socket相关

    socket层 图示,没有找到socket,那么socket层在哪儿呢? 看图: socket是什么 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Sock ...

  8. Swift--错误集:couldn’t be opened because you don’t have permission to view it

    bug复现过程  把snapkit拉入代码中时,也把里面的info.plist文件拖到项目中,运行时,提示“couldn’t be opened because you don’t have perm ...

  9. 洛谷——P1047 校门外的树

    P1047 校门外的树 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...

  10. 原生js操作dom的方法

    今天学习了原生js的dom节点的操作,就记录下来,仅供自己以后参考. 1)创建节点:除了可以使用createElement创建元素,也可以使用createTextNode创建文本节点. documen ...