日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/8 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Problem B: C语言习题 矩阵元素变换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Problem B: C語言習題 矩陣元素變換

Time Limit: 1 Sec??Memory Limit: 128 MB
Submit: 942??Solved: 558
[Submit][Status][Web Board]

Description

將一個n×n(2<n<10,n為奇數)的矩陣中最大的元素放在中心,4個角分別放4個最小的元素(按從左到右、從上到下順序依次從小到大存放),寫一
函數實現。用main函數調用。

Input

輸入n和矩陣中的每個元素

Output

變換后的矩陣

Sample Input

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

Sample Output

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

HINT

主函數已給定如下,提交時不需要包含下述主函數



/* 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<stdio.h> #include<stdlib.h> void change(int *p,int n) {int max=0,maxj,m1=99,m2=99,m3=99,min=99,minj,m1j,m2j,m3j,x;int t;for (x=0; x<n*n; x++)if(*(p+x)>max){max=*(p+x);maxj=x;}t=*(p+maxj);*(p+maxj)=*(p+(n*n)/2);*(p+(n*n)/2)=t;for (x=0; x<n*n; x++)if(*(p+x)<min){min=*(p+x);minj=x;}t=*(p+minj);*(p+minj)=*(p+0);*(p+0)=t;for (x=0; x<n*n; x++)if(*(p+x)>min&&*(p+x)<m1){m1=*(p+x);m1j=x;}t=*(p+m1j);*(p+m1j)=*(p+(n-1));*(p+(n-1))=t;for (x=0; x<n*n; x++)if(*(p+x)>m1&&*(p+x)<m2){m2=*(p+x);m2j=x;}t=*(p+m2j);*(p+m2j)=*(p+n*(n-1));*(p+n*(n-1))=t;for (x=0; x<n*n; x++)if(*(p+x)>m2&&*(p+x)<m3){m3=*(p+x);m3j=x;}t=*(p+m3j);*(p+m3j)=*(p+n*n-1);*(p+n*n-1)=t;} 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; }

總結

以上是生活随笔為你收集整理的Problem B: C语言习题 矩阵元素变换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。