编写一个函数,输入参数是5*5的二维数组,和n,m两个行下标。功能:判断n,m是否在数组范围内,如果不在,则返回0;如果在范围内,则将n行和m行交换,并返回1。
在main函数中, 生成一个5*5的矩阵,输入矩阵数据,并输入n,m的值。调用前面的函数。如果返回值为0,输出error。如果返回值为1,输出交换n,m后的新矩阵。
Input
5*5矩阵的数据,以及n和m的值。
Output
如果不可交换,则输出error;
如果可交换,则输出新矩阵
下面是我自己写的代码,供大家参考:
第一种:
#include<stdio.h>
int f(int a[5][5],int n,int m)
{
int t[5][5],i;
if((n>=0&&n<=4)&&(m>=0&&m<=4))
{
for(i=0;i<=4;i++)
{
t[n][i]=a[n][i];
a[n][i]=a[m][i];
a[m][i]=t[n][i];
}
return 1;
}
else
return 0;
}
int main()
{
int i,j,n,m,t[5][5]={0},k;
int a[5][5];
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
}
}
scanf("%d %d",&n,&m);
k=f(a,n,m);
if(k==1)
{
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
if(k==0)
printf("error\n");
}
第二种:
#include<stdio.h>
int s(int a[5][5], int n, int m)
{
int t[5][5], i;
if (n <= 4 && m <= 4)
{
for (i = 0; i <= 4; i++)
{
t[n][i] = a[n][i];
a[n][i] = a[m][i];
a[m][i] = t[n][i];
}
return 1;
}
else
return 0;
}
int main()
{
int i, j, n, m, t = 0;
int a[5][5];
for (i = 0; i < 5; i++)
for (j = 0; j < 5; j++)
{
scanf("%d", &a[i][j]);
}
scanf("%d%d", &n, &m);
if (s(a, n, m))
{
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
printf("%4d", a[i][j]);
}
printf("\n");
}
}
else
printf("error\n");
return 0;
}
大家有更好的算法我们可以多多交流。