编写函数调用函数来实现变量值大小互换遇到问题,目前学到函数还未学指针,如何调用函数实现互换。
#include
void mpsort(int a[],int n) //冒泡排序
{
int i,j,t;
for(i=0;i1;i++)
{
for(j=0;j<(n-i);j++)
{
if(a[n+1][n]) //从小到大排序
{
t=a[i+1];
a[i+1]=a[i]; //待修改
a[i]=t;
}
}
}
}
void initArray(int a[],int n)//输入函数
{
int i;
for(i=0;i"a[i]=");
scanf("%d",&a[i]);
}
}
void outputArray(int a[],int n)//输出数组
{
int i;
for(i=0;i"%3d",a[i]);
}
}
int main()
{
int array[100];
int m;
printf("请输入数组长度: ");
scanf("%d",&m);
initArray(array,m);
mpsort(array,m);
outputArray(array,m);
return 0;
}
该回答引用GPTᴼᴾᴱᴺᴬᴵ
如果您想在不使用指针的情况下,实现冒泡排序中的变量值大小互换,可以使用一个临时变量来完成。在您的代码中,临时变量已经定义为t,但是在比较和互换两个元素的时候,您需要注意数组下标的范围和变量的使用。
以下是修改过的mpsort函数,其中使用了临时变量t,并且在比较和互换两个元素的时候,使用正确的数组下标和变量:
void mpsort(int a[], int n) //冒泡排序
{
int i, j, t;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++) //注意这里的循环范围
{
if (a[j + 1] < a[j]) //从小到大排序
{
t = a[j + 1];
a[j + 1] = a[j];
a[j] = t;
}
}
}
}
请注意,上述代码中if语句的判断条件为a[j+1]<a[j],而不是您之前的if(a[n+1]<a[n]),因为您在循环中使用的是i和j两个变量来遍历数组,而不是n和n+1。另外,在第二个for循环中,内层循环应该是j<n-i-1,而不是j<(n-i),因为冒泡排序每次都会将最大的元素沉到数组的最后面,因此在下一轮循环中,就可以忽略已经排好序的最后几个元素。
#include<stdio.h>
void mpsort(int a[],int n) //冒泡排序
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<(n-i);j++)
{
if(a[j+1] < a[j]) //从小到大排序
{
t=a[i+1];
a[j+1]=a[j]; //待修改
a[i]=t;
}
}
}
}
void initArray(int a[],int n)//输入函数
{
int i;
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
}
void outputArray(int a[],int n)//输出数组
{
int i;
for(i = 0;i < n;i++)
{
printf("%3d",a[i]);
}
}
int main()
{
int array[100];
int m;
printf("请输入数组长度: ");
scanf("%d",&m);
initArray(array,m);
mpsort(array,m);
outputArray(array,m);
return 0;
}
#include<stdio.h>
void mpsort(int a[],int n) //冒泡排序
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j] > a[j+1])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
}
}
void initArray(int a[],int n)//输入函数
{
int i;
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
}
void outputArray(int a[],int n)//输出数组
{
int i;
for(i=0;i<n;i++)
{
printf("%3d",a[i]);
}
}
int main()
{
int array[100];
int m;
printf("请输入数组长度: ");
scanf("%d",&m);
initArray(array,m);
mpsort(array,m);
outputArray(array,m);
return 0;
}