一个C语言的函数问题请教

来源:百度知道 编辑:UC知道 时间:2024/05/09 01:56:29
用函数做:由键盘输入M行M列的矩阵,调用函数作矩阵转置,最后在主函数输出。(不能用指针做啊,因为我还没学)
# include <stdio.h>
# define M 2
void main()
{
int i,j;
float temp,a[M][M];
printf("The square matrix size: %d, %d\n",M,M);
printf("Input the original matrix elment value:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
scanf("%f",&a[i][j]);
}
}
printf("Output the original matrix:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%8.4f",a[i][j]);
printf("\n");
}
for(i=0;i<M;i++)
for(j=i;j<M;j++)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}

printf("Output the transposed matrix:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%8.4f",a[i][j]);
printf("\n");

数组不需要返回

c语言中的数组是传址的 也就是说 所有的数组 你传入函数后所做的修改全部保留

你可以定义一个数组 然后作为参数传递给函数处理 函数无返回值就好

当然 你也可以返回数组的首地址 这就是返回指针的函数了

其实用指针做是很容易的,你以后就会学到的,在c++里面也好解决,就是你不能用函数做,那就只能用全局变量了,全局数组
当然,你也可以把这个数组当参数传进去,但传进去后改的不是原数组哦~
函数返回可以是多个值的,也可以没有返回,但如果你将数组当作返回值,那返回的就是这个数组的头指针(你以后会学到),你可以用另一个数组接收这个返回值,但要注意的是接收的数组的维数,就是第一个值一定要一样,而且要给出来,象a[M][ ]这样(后面可以不写)
愿你以后也能学好c语言,来解答别人的问题~~~~

把数组作为函数的参数传递给子函数就可以的。

void f(float a[M][M])
{
int i,j;
float temp;
for(i=0;i<M;i++)
for(j=i;j<M;j++)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}

你可以将你函数中的以下代码修改成为一个函数
for(i=0;i<M;i++)
for(j=i;j<M;j++)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
这样没进行一次交换数组中的两个元素,这样你可以运用for语句循环调用,就可以达到不用指针也可以转置的目的了

用结构体,定义一个结构体,包含数组,返回结构体类型就行了