如何用C语言程序编写“利用函数将给定的3*3二维数组转置”

如题所述

#include<iostream>

usingnamespacestd;

void zhuang zhi(int a[3][3])

{int m,n,i;

for(m=0;m<2;m++)

for(i=0;i<3;i++)

{if(m!=1||i!=0)

{n=a[i][m];

a[i][m]=a[m][i];

a[m][i]=n;

int main()

inta[3][3];

inti,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

cin>>a[i][j];

zhuang zhi(a);

for(i=0;i<3;i++)

for(j=0;j<3;j++)

cout<<a[i][j]<<"";

cout<<endl;

return0;

运行效果:

扩展资料:

return语句有以下形式:

return;//不带返回值的return语句

return 0;//带返回值的return语句,或者返回一个变量或一个函数。

return 1//表示函数异常结束

不带返回值的return语句用于,中断返回值为void类型的函数的执行,而带返回值的return则不行。

#include<iostream>

using namespace std;

void f(){

cout<<"begin"<<endl;

return 0;此处有问题,此时return;的作用相当于break;用于中断循环的作用。所以不该返回某个具体的值。

cout<<"end"<<endl;

}

int main(){

f();

return 0;

}

将return 0;换为return;后,运行成功:

总结:

return;的作用相当于break;用于中断循环的作用;return 0;则是return的另一种用法,专用于返回值非void的函数返回其值。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-08
package com;

public class my{
public my(){}
public static void main(String[] args){
String[][] str = {{"1","2","3"},{"4","5","6"},{"7","8","9"}};
my g = new my();
System.out.println("你给定的数组(三行三列)");
g.print(str);
str = g.change(str);
System.out.println("改变后的数组(三行三列)");
g.print(str);
}
//改变结构(从横变成竖)
public String[][] change(String[][] str){
String[][] empty = new String[3][3];
for(int i = 0; i < 3; i ++){
for(int j = 0; j < 3; j ++){
empty[j][i] = str[i][j];
}
}
return empty;
}
//打印数组
public void print(String[][] str){
for(int i = 0; i < 3; i ++){
for(int j = 0; j < 3; j ++){
System.out.print(str[i][j]+" ");
}
System.out.println("");
}
}
}本回答被网友采纳
第2个回答  2020-04-09
#include<stdio.h>
int b(int a[3][3])
{

int i,j,r;
for(i=0;i<3;i++)
{for(j=i;j<3;j++)
r=a[i][j],a[i][j]=a[j][i],a[j][i]=r;
}
return a[3][3];
}
main()

{int k[3][3]={1,2,3,4,5,6,7,8,9};
int m,n;
b(k);
for(m=0;m<3;m++)
{for(n=0;n<3;n++)
printf("%d ",k[m][n]);
printf("\n");
}
}
第3个回答  2013-05-09
这种题有两种方法,一种为直接将横竖颠倒,成为直接转置,很简单。还有一种就是现将数组改变后再原样输出,成为间接转置
第一种
#include<stdio.h>
int main()
{
int a[3][3]; //定义数组
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);//输入数组
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",a[j][i]);
printf("\n"); //输出数组(直接转置)
}
return 0;
}
第二种
#include<stdio.h>
int main()
{
int a[3][3]; //定义数组
int i,j,t;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]); //输入数组
}
for(i=0;i<3;i++)
{
for(j=i;j<3;j++)//转换矩阵
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");//输出数组
}
return 0;
}
当然,如果要实现多组数组,你自己再改变一下程序就行了。希望能帮上你。
第4个回答  2018-05-05
#include <stdio.h>
int zhuanzhi(int x,int ,int ,int a[3][3]);
int main()
{
int i, j;
int b[3][3] = { { 1,2,3 },{ 4,5,6 } ,{ 7,8,9 } };
int a[3][3] = { {1,2,3}, {4,5,6} ,{7,8,9} };
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
a[i][j]=zhuanzhi(a[i][j],i,j,b);
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
printf("%d", a[i][j]);
printf("\n");
}
return 0;
}
int zhuanzhi(int x,int i,int j,int a[3][3])
{
x = a[j][i];
return x;
}
相似回答