3个回答
展开全部
这道题最简单是先排序,再按要求存放,而用冒泡算法排序,肯定是要重复交换的。
或者按下表这个顺序存放,不过要寻找数字和判断上的规律。
int main(void)
{
int i,j,k,s;
int arrA[5][5],arrB[25];
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
scanf("%d",arrA[i][j];
}
}
k=0;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++,k++)
{
arrB[k]=arrA[i][j];
}
}
for(i=0;i<13;i++)
{
for(k=0;k<25;k++)
{
if(arrB[k]>arrB[k+1])
{
s=arrB[k];
arrB[k]=arrB[k+1];
arrB[k+1]=s;
}
}
}
/*未完*/
追问
您能写个程序解决这个问题吗?
追答
/*持续*/
k=0;
for(i=0;i<5-i;i++)
{
for(j=0;j<5-j;j++)
{
arrA[i][j]=arrB[k];
k++;
if(j==4-j)
;
else
{
arrA[i][4-j]=arrB[k];
k++;
}
if(i==4-i)
;
else
{
arrA[4-i][j]=arrB[k];
k++;
if(j==4-j)
;
else
{
arrA[4-i][4-j]=arrB[k];
k++;
}
}
}
}
}
至今未能验证代码语法和逻辑的正确性?。
展开全部
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct
{
int data;
int index; //保存数组下标
} N1;
void sort(N1 a[], int len)
{
N1 temp;
for (int i = 0; i < len - 1; i++)
for (int j = 0; j < len - 1 - i; j++)
if (a[j].data > a[j + 1].data)
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
int main()
{
int a[5][5] = {{6, 7, 18, 9, 14},
{5, 24, 2, 9, 10},
{22, 8, 5, 1, 8},
{4, 12, 5, 7, 2},
{13, 33, 8, 7, 9}};
int temp = 0;
int sa[] = {0, 4, 20, 24};
int *p;
N1 b[25];
p = &a[0][0];
for (int i = 0; i < 25; i++)
{
b[i].data = *p;
b[i].index = i;
p++;
}
sort(b, 25);
p = &a[0][0];
//交换4个角
for (int i = 0; i < 4; i++)
{
temp = p[sa[i]];
p[sa[i]] = p[b[i].index];
p[b[i].index] = temp;
}
//交换中心
temp = p[12];
p[12] = p[b[24].index];
p[b[24].index] = temp;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C代码:
#include<stdio.h>
void main()
{
void change(int x[][5]);
int a[5][5]={{100,99,98,97,96},{95,94,93,92,91},{90,89,88,87,86},{85,84,83,82,81},{80,79,78,77,76}};
int i,j;
printf("转换前:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%4d",a[i][j]);
printf("\n");
}
change(a);/*调用函数*/
printf("转换后:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
void change(int x[][5])
{
int b[25],i,j,k=0,t;
for(i=0;i<5;i++)/*把二维数组中元素按行的顺序存放到一维数组*/
for(j=0;j<5;j++)
{
b[k]=x[i][j];
k++;
}
for(i=0;i<24;i++)/*选择排序法,对一维数组中元素进行从小到大的排序*/
{
k=i;
for(j=i+1;j<25;j++)
if(b[j]<b[k])
k=j;
if(k!=i)
{
t=b[k];
b[k]=b[i];
b[i]=t;
}
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[24])
{
t=x[i][j];
x[i][j]=x[2][2];
x[2][2]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[0])
{
t=x[i][j];
x[i][j]=x[0][0];
x[0][0]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[1])
{
t=x[i][j];
x[i][j]=x[0][4];
x[0][4]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[2])
{
t=x[i][j];
x[i][j]=x[4][0];
x[4][0]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[3])
{
t=x[i][j];
x[i][j]=x[4][4];
x[4][4]=t;
break;
}
}
C++代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
void change(int x[][5]);
int a[5][5]={{100,99,98,97,96},{95,94,93,92,91},{90,89,88,87,86},{85,84,83,82,81},{80,79,78,77,76}};
int i,j;
cout<<"转换前:"<<endl;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
change(a);/*调用函数*/
cout<<"转换后:"<<endl;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
return 0;
}
void change(int x[][5])
{
int b[25],i,j,k=0,t;
for(i=0;i<5;i++)/*把二维数组中元素按行的顺序存放到一维数组*/
for(j=0;j<5;j++)
{
b[k]=x[i][j];
k++;
}
for(i=0;i<24;i++)/*选择排序法,对一维数组中元素进行从小到大的排序*/
{
k=i;
for(j=i+1;j<25;j++)
if(b[j]<b[k])
k=j;
if(k!=i)
{
t=b[k];
b[k]=b[i];
b[i]=t;
}
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[24])
{
t=x[i][j];
x[i][j]=x[2][2];
x[2][2]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[0])
{
t=x[i][j];
x[i][j]=x[0][0];
x[0][0]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[1])
{
t=x[i][j];
x[i][j]=x[0][4];
x[0][4]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[2])
{
t=x[i][j];
x[i][j]=x[4][0];
x[4][0]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[3])
{
t=x[i][j];
x[i][j]=x[4][4];
x[4][4]=t;
break;
}
}
#include<stdio.h>
void main()
{
void change(int x[][5]);
int a[5][5]={{100,99,98,97,96},{95,94,93,92,91},{90,89,88,87,86},{85,84,83,82,81},{80,79,78,77,76}};
int i,j;
printf("转换前:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%4d",a[i][j]);
printf("\n");
}
change(a);/*调用函数*/
printf("转换后:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
void change(int x[][5])
{
int b[25],i,j,k=0,t;
for(i=0;i<5;i++)/*把二维数组中元素按行的顺序存放到一维数组*/
for(j=0;j<5;j++)
{
b[k]=x[i][j];
k++;
}
for(i=0;i<24;i++)/*选择排序法,对一维数组中元素进行从小到大的排序*/
{
k=i;
for(j=i+1;j<25;j++)
if(b[j]<b[k])
k=j;
if(k!=i)
{
t=b[k];
b[k]=b[i];
b[i]=t;
}
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[24])
{
t=x[i][j];
x[i][j]=x[2][2];
x[2][2]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[0])
{
t=x[i][j];
x[i][j]=x[0][0];
x[0][0]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[1])
{
t=x[i][j];
x[i][j]=x[0][4];
x[0][4]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[2])
{
t=x[i][j];
x[i][j]=x[4][0];
x[4][0]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[3])
{
t=x[i][j];
x[i][j]=x[4][4];
x[4][4]=t;
break;
}
}
C++代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
void change(int x[][5]);
int a[5][5]={{100,99,98,97,96},{95,94,93,92,91},{90,89,88,87,86},{85,84,83,82,81},{80,79,78,77,76}};
int i,j;
cout<<"转换前:"<<endl;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
change(a);/*调用函数*/
cout<<"转换后:"<<endl;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
return 0;
}
void change(int x[][5])
{
int b[25],i,j,k=0,t;
for(i=0;i<5;i++)/*把二维数组中元素按行的顺序存放到一维数组*/
for(j=0;j<5;j++)
{
b[k]=x[i][j];
k++;
}
for(i=0;i<24;i++)/*选择排序法,对一维数组中元素进行从小到大的排序*/
{
k=i;
for(j=i+1;j<25;j++)
if(b[j]<b[k])
k=j;
if(k!=i)
{
t=b[k];
b[k]=b[i];
b[i]=t;
}
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[24])
{
t=x[i][j];
x[i][j]=x[2][2];
x[2][2]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[0])
{
t=x[i][j];
x[i][j]=x[0][0];
x[0][0]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[1])
{
t=x[i][j];
x[i][j]=x[0][4];
x[0][4]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[2])
{
t=x[i][j];
x[i][j]=x[4][0];
x[4][0]=t;
break;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(x[i][j]==b[3])
{
t=x[i][j];
x[i][j]=x[4][4];
x[4][4]=t;
break;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询