新手求助!
疑问:题目一里的sort函数能对main函数起作用(即数组能在sort中重新排序并在main函数中输出),而题目二里的convert函数对数组转置后,main函数输不出转置后的数组,还是按原来数组输出。为什么输不出转置后的数组呢?址传递的话,形参和实参不是在同一空间里吗?
题目一:对数组中10个整数由小到大排序
#include<stdio.h>
void main()
{
void sort(int array[],int n);
int a,i;
。。。
。。。//省略了不重要的部分!!
sort(a,10);
for(i=0;i<10;i++)
printf("%d",a);
}
void sort(int array[],int n)
{
。。。
。。。//省略了排序部分
}
题目二:写一个函数,使给定的一个3X3的二维整型数组转置,即行列互换。
#include<stdio.h>
void zhuanhuan(int array);
void main()
{
int i,j;
int a={1,2,3,4,5,6,7,8,9};
printf("begin:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d",a);
if(j==2)
{
putchar(10);
}
}
}
printf("after:\n");
zhuanhuan(a);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d",a);
if(j==2)
{
putchar(10);
}
}
}
}
void zhuanhuan(int array)
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(i!=j)
{
temp=a;
array=array;
array=temp;
}
}
}
}
啊!写错了!!题目二里的zhuanhuan函数就是convert函数 你的zhuanhuan函数,转了两次,又转回来了。所以输出和原来的一样。
例如:i=1,j=2的时候对应数据交换了一次,等i=2,j=1的时候,又交换了一次,相当于转置了两次,那就和原来的一样了啊
内层循环,结束条件应该是j<i
此外还有几处错误,temp没有 定义,交换代码第一行数组名写错了。都帮你修改了
#include<stdio.h>
void zhuanhuan(int array);
void main()
{
int i,j;
int a={1,2,3,4,5,6,7,8,9};
printf("begin:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d",a);
if(j==2)
{
putchar(10);
}
}
}
printf("after:\n");
zhuanhuan(a);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d",a);
if(j==2)
{
putchar(10);
}
}
}
}
void zhuanhuan(int array)
{
int i,j,temp;
for(i=0;i<3;i++)
{
for(j=0;j<i;j++)
{
if(i!=j)
{
temp=array;
array=array;
array=temp;
}
}
}
} sunrise085 发表于 2020-4-10 17:34
你的zhuanhuan函数,转了两次,又转回来了。所以输出和原来的一样。
例如:i=1,j=2的时候对应数据交换了 ...
非常感谢!!!!
页:
[1]