Problem D、F: C语言习题 矩阵元素变换
来源:互联网 发布:手机声音放大器软件 编辑:程序博客网 时间:2024/05/18 01:06
Description
函数实现。用main函数调用。
Input
输入n和矩阵中的每个元素
Output
变换后的矩阵
Sample Input
525 13 9 5 116 17 18 19 615 24 4 20 714 23 22 21 82 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 <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;}
- Problem D、F: C语言习题 矩阵元素变换
- Problem F: C语言习题 矩阵元素变换
- Problem D: C语言习题 矩阵元素变换
- Problem D: C语言习题 矩阵元素变换
- Problem D: C语言习题 矩阵元素变换
- Problem B: C语言习题 矩阵元素变换
- YTU:C语言习题 矩阵元素变换
- C语言习题 矩阵元素变换
- YTU 2418: C语言习题 矩阵元素变换
- Problem D: C语言习题 字符串比较
- Problem D: C语言习题 字符串比较
- Problem F: C语言习题 不等长字符串排序
- Problem F: C语言习题 不等长字符串排序
- Problem D: C语言习题 a!+b!+c!
- OJytu:Problem D: C语言习题5.12--查闰年
- Problem D: C语言习题 不等长字符串排序
- Problem D: C语言习题5.25--文件操作2
- Problem D: C语言习题5.25--文件操作2
- 缺省构造函数
- 如何下载离线版Chrome安装文件
- Servlet生命周期与工作原理
- requirejs
- 买水果(组合)
- Problem D、F: C语言习题 矩阵元素变换
- 遍历Map的四种方法
- linux程序设计(套接字)+TCP/IP网络编程学习笔记
- linux下开启-禁止笔记本触摸板
- 工厂模式的好处
- Android中使用OrmLite(三):批处理
- mysql数据库服务器无法启动
- 使用ntpdate更新linux时间的时候出现 no server suitable for synchronization found解决办法
- 1086. Tree Traversals Again (25)