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. linux 在当前目录下查找一个,或者多个文件

    1.find ./ -name "y*" 查找以y开头的文件. find ./ -name "*sql*" 查找包含 sql 的文件名 2.查找redis su ...

  2. ssm依赖

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  3. UVA12103 贪心+置换

    题意:给出26个大写字母的置换B,问是否存在一个置换A,舍得A^2=B,如果存在输出Yes,否则输出No 题解: 研究一下置换A与A^2关系. 假设A=(a1 a2 a3)(b1 b2 b3 b4) ...

  4. nginx反向代理ajax,解决跨域问题

    server { listen 8000; server_name somename alias another.alias; location /a { add_header 'Access-Con ...

  5. js命名

    JS变量名前加 _ 与 $ 的区别: 下划线一般当做私有属性, 业界会比较常用$开头作为框架.库的关键词前缀,目的是避免命名冲突

  6. 洛谷——P1608 路径统计

    P1608 路径统计 题目描述 “RP餐厅”的员工素质就是不一般,在齐刷刷的算出同一个电话号码之后,就准备让HZH,TZY去送快餐了,他们将自己居住的城市画了一张地图,已知在他们的地图上,有N个地方, ...

  7. response对象学习

    import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpSer ...

  8. 在Studio中使用Access数据库时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”

    错误提示:

  9. kill mediaserver脚本

    #!/bin/bash adb shell kill $(adb shell ps | grep mediaserver | awk '{print $2}') adb shell pm clear ...

  10. Selenium系列之--测试框架断言【转】

    selenium提供了三种模式的断言:assert .verify.waitfor 1)Assert(断言) 失败时,该测试将终止. 2)Verify(验证) 失败时,该测试将继续执行,并将错误记入日 ...