哪里出的故障?
下面是我的源代码
#include <stdio.h>
#include<stdlib.h>
void main()
{
system("COLOR 3E");
void exchang(int ,int ,int );
int a,b,c;
printf("please input the numbers:");
scanf("%d%d%d",&a,&b,&c);
exchang(a,b,c);
printf("\n%d,%d,%d\n",a,b,c);
}
void exchang(int q1,int q2,int q3)
{
void swap(int ,int );
if(q1<q2) swap(q1,q2);
if(q1<q3) swap(q1,q3);
if(q2<q3) swap(q2,q3);
}
void swap(int pt1,int pt2)
{
int temp;
temp=pt1;
pt1=pt2;
pt2=temp;
}
a,b,c三个整数按从大到小顺序输出。先谢谢了!
不说设计思路有没有问题,但是先告诉你,函数的形参属于局部变量,它的变化是不会影响调用者的,所以你在void swap(int pt1,int pt2)里时行交换,只是Swap内部交换了而已,调用者里的Q1,Q2,q3是没改变的,a,b,c也没有,你要把它们定义成指针才行.void exchang(int * q1,int *q2,int *q3)
#include <stdio.h>
#include<stdlib.h>
void main()
{
system("COLOR 3E");
void exchang(int ,int ,int );
int a,b,c;
printf("please input the numbers:");
scanf("%d%d%d",&a,&b,&c);
exchang(&a,&b,&c);
printf("\n%d,%d,%d\n",a,b,c);
}
void exchang(int *q1,int *q2,int *q3)
{
void swap(int *,int* );
if(*q1<*q2) swap(q1,q2);
if(*q1<*q3) swap(q1,q3);
if(*q2<*q3) swap(q2,q3);
}
void swap(int *pt1,int* pt2)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息