发布网友 发布时间:2024-10-24 02:23
共4个回答
热心网友 时间:2024-11-26 06:12
看来你还没真正明白“函数”!
swap(int*pt1,int*pt2,int*pt3,int*pt4,int*pt5)
你定义的交换函数swap的参数5个!
而在exchange中调用时,“swap(q1,q2);”都是2个实际参!!
================================================
函数exchange中没有考虑完所有的情况!
====================================
这样改下就可以了:
#include <stdio.h>
swap(int *pt1,int *pt2)
{int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
exchange(int *q1,int *q2,int *q3,int *q4,int *q5)
{if(*q1<*q2) swap(q1,q2);
if(*q1<*q3) swap(q1,q3);
if(*q1<*q4) swap(q1,q4);
if(*q1<*q5) swap(q1,q5);
if(*q2<*q3) swap(q2,q3);
if(*q2<*q4) swap(q2,q4);
if(*q2<*q5) swap(q2,q5);
if(*q3<*q4) swap(q3,q4);
if(*q3<*q5) swap(q3,q5);
if(*q4<*q5) swap(q4,q5);
}
main()
{int a,b,c,d,e;
printf("Inputa,b,c,d,e:") ;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
exchange(&a,&b,&c,&d,&e);
printf("\n%d,%d,%d,%d,%d\n",a,b,c,d,e);
getch();
}
当然这样做exchange函数会太麻烦,我是针对的做法提出的修改而已。
热心网友 时间:2024-11-26 06:14
错误1
swap是两个数交换
只应该带两个参数。。
你的程序是什么意思。。。
错误2
一个exchange只是一次排序
所以我定义了一个N,为要排序的数组的个数
index为排了几次
修改了 一下
你看看吧
// zd_65.cpp : Defines the entry point for the console application.
//
/*swap(int*pt1,int*pt2,int*pt3,int*pt4,int*pt5)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=*pt3;
*pt3=*pt4;
*pt4=*pt5;
*pt5=*temp;
} */
#define N 5;
int index=0;
swap(int *pt1,int *pt2)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
exchange(int*q1,int*q2,int*q3,int*q4,int*q5)
{
if(*q1<*q2) swap(q1,q2);
if(*q2<*q3) swap(q2,q3);
if(*q3<*q4) swap(q3,q4);
if(*q4<*q5) swap(q4,q5);
index++;
if(index<N)
exchange(q1,q2,q3,q4,q5);
}
main()
{
int a,b,c,d,e,*p1,*p2,*p3,*p4,*p5;
scanf("%d,%d,%d,%d,%d",&a,&b,&c,&d,&e);
p1=&a;p2=&b;p3=&c;p4=&d;p5=&e;
exchange(p1,p2,p3,p4,p5);
printf("\n%d,%d,%d,%d,%d\n",a,b,c,d,e);
}
运行结果:
5,6,4,7,8
8,7,6,5,4
Press any key to continue
热心网友 时间:2024-11-26 06:08
好乱啊
热心网友 时间:2024-11-26 06:09
你的函数调用错了。你在定义swap函数时,有五个参数,调用时却只有两个参数,而且你还误以为在调用该函数时只给它两个参数,它就交换那两个参数。你只要把swap函数改一下就好了。
swap(int*pt1,int*pt2)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
热心网友 时间:2024-11-26 06:07
看来你还没真正明白“函数”!
swap(int*pt1,int*pt2,int*pt3,int*pt4,int*pt5)
你定义的交换函数swap的参数5个!
而在exchange中调用时,“swap(q1,q2);”都是2个实际参!!
================================================
函数exchange中没有考虑完所有的情况!
====================================
这样改下就可以了:
#include <stdio.h>
swap(int *pt1,int *pt2)
{int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
exchange(int *q1,int *q2,int *q3,int *q4,int *q5)
{if(*q1<*q2) swap(q1,q2);
if(*q1<*q3) swap(q1,q3);
if(*q1<*q4) swap(q1,q4);
if(*q1<*q5) swap(q1,q5);
if(*q2<*q3) swap(q2,q3);
if(*q2<*q4) swap(q2,q4);
if(*q2<*q5) swap(q2,q5);
if(*q3<*q4) swap(q3,q4);
if(*q3<*q5) swap(q3,q5);
if(*q4<*q5) swap(q4,q5);
}
main()
{int a,b,c,d,e;
printf("Inputa,b,c,d,e:") ;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
exchange(&a,&b,&c,&d,&e);
printf("\n%d,%d,%d,%d,%d\n",a,b,c,d,e);
getch();
}
当然这样做exchange函数会太麻烦,我是针对的做法提出的修改而已。
热心网友 时间:2024-11-26 06:06
你的函数调用错了。你在定义swap函数时,有五个参数,调用时却只有两个参数,而且你还误以为在调用该函数时只给它两个参数,它就交换那两个参数。你只要把swap函数改一下就好了。
swap(int*pt1,int*pt2)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
热心网友 时间:2024-11-26 06:08
好乱啊
热心网友 时间:2024-11-26 06:10
错误1
swap是两个数交换
只应该带两个参数。。
你的程序是什么意思。。。
错误2
一个exchange只是一次排序
所以我定义了一个N,为要排序的数组的个数
index为排了几次
修改了 一下
你看看吧
// zd_65.cpp : Defines the entry point for the console application.
//
/*swap(int*pt1,int*pt2,int*pt3,int*pt4,int*pt5)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=*pt3;
*pt3=*pt4;
*pt4=*pt5;
*pt5=*temp;
} */
#define N 5;
int index=0;
swap(int *pt1,int *pt2)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
exchange(int*q1,int*q2,int*q3,int*q4,int*q5)
{
if(*q1<*q2) swap(q1,q2);
if(*q2<*q3) swap(q2,q3);
if(*q3<*q4) swap(q3,q4);
if(*q4<*q5) swap(q4,q5);
index++;
if(index<N)
exchange(q1,q2,q3,q4,q5);
}
main()
{
int a,b,c,d,e,*p1,*p2,*p3,*p4,*p5;
scanf("%d,%d,%d,%d,%d",&a,&b,&c,&d,&e);
p1=&a;p2=&b;p3=&c;p4=&d;p5=&e;
exchange(p1,p2,p3,p4,p5);
printf("\n%d,%d,%d,%d,%d\n",a,b,c,d,e);
}
运行结果:
5,6,4,7,8
8,7,6,5,4
Press any key to continue