C语言 函数调用写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。

如题所述

方法一、

#include<stdio.h>

void main(){

void switchArray(int[3][3]);

int array[][3]={{1,2,3},{4,5,6},{7,8,9}};

int i,j;

switchArray(array);

return 0;

}

void switchArray(int array[][3]){

int newArray[3][3];

int i,j;

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

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

newArray[j]<i>=array<i>[j];

}

}

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

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

printf("%d",newArray<i>[j]);

}

printf("\n");

}

}

方法二、用指针实现:

#include<stdio.h>

void main(){

void switchArray(int[3][3]);

int array[][3]={{1,2,3},{4,5,6},{7,8,9}};

int i,j;

int(*pToArray)[3];

pToArray=array;

switchArray(pToArray);

return 0;

}

void switchArray(int array[][3]){

int newArray[3][3],(*pTArr)[3],(*pTNewArr)[3];

int i,j;

pTArr=array;

pTNewArr=newArray;

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

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

*(*(pTNewArr+j)+i)=*(*(pTArr+i)+j);

}

}

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

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

printf("%d",*(*(pTNewArr+i)+j));

}

printf("\n");

}

}

扩展资料:

用法:

1、printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。

格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。

要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。

2、printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。

printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。

其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-20
/*
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
请按任意键继续. . .
*/
#include <stdio.h>
#include <malloc.h>
#define N 4

void Transpose(int a[][N]) {
int i,j,t;
for(i = 0; i < N; ++i) {
for(j = i; j < N; ++j) {
t = a[i][j];
a[i][j] = a[j][i];
a[j][i] = t;
}
}
}

int main() {
int i,j,a[N][N] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
for(i = 0; i < N; ++i) {
for(j = 0; j < N; ++j)
printf("%2d ",a[i][j]);
printf("\n");
}
Transpose(a);
printf("\n");
for(i = 0; i < N; ++i) {
for(j = 0; j < N; ++j)
printf("%2d ",a[i][j]);
printf("\n");
}
return 0;
}本回答被网友采纳
第2个回答  2012-05-17
凑和着用吧!
#include<stdio.h>
#define N 3
int main()
{
void transposition(int arr[][N]);
int a[N][N],i,j;
printf("请输入一个3*3的二维整型数组\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
}
printf("转置前:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
printf("\n");
}
transposition(a);
printf("转置后:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
void transposition(int arr[][N])
{
int i,j,temp;
for(i=0;i<N;i++)
{
for(j=i;j<N;j++)
if(i!=j)
{
temp=arr[i][j];
arr[i][j]=arr[j][i];
arr[j][i]=temp;
}
}
}
第3个回答  2012-05-17
#include<stdio.h>
void f10(int **x,int n)
{
int t[3][3];
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)t[j][i]=x[i][j];
printf("转置后:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%5d",t[i][j]);
putchar('\n');
}
}
void main()
{
int b[3][3]={{1,2,3,},{4,5,6},{7,8,9}},a[3][3];
int *c[3];
int i,j;
for(i=0;i<3;i++) c[i]=b[i];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%5d",b[i][j]);
putchar('\n');
}
f10(c,3);
}
第4个回答  2012-05-17
main(){
int array[][]= {{1,2,3},{4,5,6},{7,8,9}};
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
System.out.print(array[i][j]);
}
System.out.println();
}

for(int i=0;i<3;i++){
for(int j=0;i<3;j++){
if(i==j){
break;
}
int temp = array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}

}
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
System.out.print(array[i][j]);
}
System.out.println();
}
}