|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
疑问:题目一里的sort函数能对main函数起作用(即数组能在sort中重新排序并在main函数中输出),
而题目二里的convert函数对数组转置后,main函数输不出转置后的数组,还是按原来数组输出。为什么输不出转置后的数组呢?址传递的话,形参和实参不是在同一空间里吗?
题目一:对数组中10个整数由小到大排序
#include<stdio.h>
void main()
{
void sort(int array[],int n);
int a[10],i;
。。。
。。。//省略了不重要的部分!!
sort(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
}
void sort(int array[],int n)
{
。。。
。。。//省略了排序部分
}
题目二:写一个函数,使给定的一个3X3的二维整型数组转置,即行列互换。
#include<stdio.h>
void zhuanhuan(int array[3][3]);
void main()
{
int i,j;
int a[3][3]={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[i][j]);
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[i][j]);
if(j==2)
{
putchar(10);
}
}
}
}
void zhuanhuan(int array[3][3])
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(i!=j)
{
temp=a[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}
}
}
你的zhuanhuan函数,转了两次,又转回来了。所以输出和原来的一样。
例如:i=1,j=2的时候对应数据交换了一次,等i=2,j=1的时候,又交换了一次,相当于转置了两次,那就和原来的一样了啊
内层循环,结束条件应该是j<i
此外还有几处错误,temp没有 定义,交换代码第一行数组名写错了。都帮你修改了
- #include<stdio.h>
- void zhuanhuan(int array[3][3]);
- void main()
- {
- int i,j;
- int a[3][3]={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[i][j]);
- 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[i][j]);
- if(j==2)
- {
- putchar(10);
- }
- }
- }
- }
- void zhuanhuan(int array[3][3])
- {
- int i,j,temp;
- for(i=0;i<3;i++)
- {
- for(j=0;j<i;j++)
- {
- if(i!=j)
- {
- temp=array[i][j];
- array[i][j]=array[j][i];
- array[j][i]=temp;
- }
- }
- }
- }
复制代码
|
|