如何用函数实现三个数的排序(用的是C语言)
发布网友
发布时间:2022-04-22 15:42
我来回答
共5个回答
热心网友
时间:2023-10-09 05:35
一:全局变量
#include <stdio.h>
int a,b,c; //定义三个全局变量
void sort() //不需要参数
{
int t;
if(a>b)
{
t=a;a=b;b=t;
}
if(b>c)
{
t=b;b=c;c=t;
}
if(a>b)
{
t=a;a=b;b=t;
}
}
int main()
{
printf("输入:");
scanf("%d%d%d",&a,&b,&c);
sort();
printf("排序:%d < %d < %d\n",a,b,c);
return 0;
}
二:指针
#include <stdio.h>
void sort(int *a, int *b, int *c) //参数传递方式:地址传递
{
int t;
if(*a>*b)
{
t=*a;*a=*b;*b=t;
}
if(*b>*c)
{
t=*b;*b=*c;*c=t;
}
if(*a>*b)
{
t=*a;*a=*b;*b=t;
}
}
int main()
{
int a,b,c;
printf("输入:");
scanf("%d%d%d",&a,&b,&c);
sort(&a,&b,&c); //把地址作为参数
printf("排序:%d < %d < %d\n",a,b,c);
return 0;
}
热心网友
时间:2023-10-09 05:35
void change(int* a,int *b)
{
int temp = a>b?a:b;
return;
}
调用函数确实不能修改原参数的值,其实质是拷贝了一份实参给形参,在这种情况下,C语言是用指向实参的指针来修改实参的,C++可以还用引用,就是第一个回答你问题的那个方法。你说书上说可以用全局变量,这个当然可以,但是,绝不推荐用全局变量或者静态变量,这是一个很不好的编程习惯!望采纳
热心网友
时间:2023-10-09 05:36
#include "stdio.h"
void Mysort(int *pa,int *pb,int *pc){
int i,j,k,a[]={*pa,*pb,*pc};
for(i=0;i<3;i++){
for(k=i,j=k+1;j<3;j++)
if(a[k]>a[j]) k=j;
if(k!=i){
j=a[i];
a[i]=a[k];
a[k]=j;
}
}
*pa=a[0];
*pb=a[1];
*pc=a[2];
}
}
void main(void){
int a,b,c;
printf("Type 3 integers...a,b,c=\n");
scanf("%d%d%d",&a,&b,&c);
Mysort(&a,&b,&c);
printf("The result: %d < %d < %d\n",a,b,c);
}
热心网友
时间:2023-10-09 05:36
这个太简单了 。。1楼用的是引用 你也可以用指针。。。
void swap(int *a,int *b)
{
int t;
t=*a;*a=*b;*b=t;
}
void mysort(int *a,int *b,int *c)
{
if(*a>*b) swap(a,b);
if(*a>*c) swap(a,c);
if(*b>*c) swap(b,c);
}
#include<stdio.h>
void twosort(int *a,int *b)
{//执行此函数后,保证*a<*b
int t;
if(*a>*b)
{
t=*a;*a=*b;*b=t;
}
}
热心网友
时间:2023-10-09 05:37
调用子函数交换主函数里变量的值,需要传递指针
#include <stdio.h>
void sort(float *a,float *b,float *c)
{
float m;
if(*a>*b)
{
m=*a;
*a=*b;
*b=m;
}
if(*a>*c)
{
m=*a;
*a=*c;
*c=m;
}
if(*b>*c)
{
m=*b;
*b=*c;
*c=m;
}
}
void main()
{
float i,j,k;
printf("Input three numbers:\n");
scanf("%f%f%f",&i,&j,&k);
sort (&i,&j,&k);
printf("The sorted number is:\n%f\n%f\n%f\n",i,j,k);
}