问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用函数实现三个数的排序(用的是C语言)25

发布网友 发布时间:2023-09-11 03:01

我来回答

5个回答

热心网友 时间:2024-11-18 18:31

一:全局变量

#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;
}

热心网友 时间:2024-11-18 18:31

void change(int* a,int *b)
{
int temp = a>b?a:b;
return;

}
调用函数确实不能修改原参数的值,其实质是拷贝了一份实参给形参,在这种情况下,C语言是用指向实参的指针来修改实参的,C++可以还用引用,就是第一个回答你问题的那个方法。你说书上说可以用全局变量,这个当然可以,但是,绝不推荐用全局变量或者静态变量,这是一个很不好的编程习惯!望采纳

热心网友 时间:2024-11-18 18:32

#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);
}

热心网友 时间:2024-11-18 18:32

这个太简单了 。。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;
}

}

热心网友 时间:2024-11-18 18:33

调用子函数交换主函数里变量的值,需要传递指针
#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);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 12v100A电瓶充电多少V为满41 请问一个12v100安的电瓶要用多久才充满电?21 铁板烧的铁板厚度要求、材质63 100AH12V电池要充多长时间?54 烧烤架子制作尺寸图84 不锈钢板厚度一般是多少? 如何查看自己的是多少 &lt;&lt;秦时明月&gt;&gt;的主要故事内容86 小说《秦时明月》 中 嬴政喜欢的女人就只有 牙儿一个么 ? 秦时明月的小说和动漫有何差别12 普通的摩托车可以加装涡轮增压器吗?加装后有什么效果?168 因抄袭网上的入党志愿书而被要求写3000字的检讨书23 哪些罪判刑重 乐山大佛门票需要预约吗 什么叫决水罪,决水罪如何处罚,决水罪判几年 用布蒙着脸,倒水 让受刑者呛水刑罚 叫什么33 《欢乐颂》不只是“金钱颂”,还是“血统颂” 水刑是什么 史上最恐怖逼供刑罚水刑介绍29 C语言编程:用指针编程,输入3个整数,从小到大的顺序输出11 欢乐颂2结局讲了什么?40 摩托车如何加装涡轮增压器55 深圳有几个高铁站分别在哪里1 摩托车能改装涡轮增压器70 摩托车发动机能装涡轮增压器吗?(声明:指的是摩托车发动机!) 150摩托车用电子涡轮增压器有用吗,能增强动力吗6 不锈钢板都是有多大尺寸的36 同样是1.5毫米厚的铁制烧烤炉和一样厚的不锈钢炉比哪一个比较... 汽车发电机给100ah电瓶充电要几个小时可以充满4 12v100AH电瓶没有电充满电要多长时间6 C语言编程——冒泡排序法。要求:由主函数调用排序子函数,对n...76 C语言,,输入3个数,从小到大排序,,用指针做,39 家里离公司远,上班搭公车还要转车,经常会迟到怎么办 C语言编程——选择排序法,要求:由主函数调用排序子函数,对n...32 我想用C语言的指针和函数实现冒泡排序,输入一就从小到大排序否...11 因入党志愿书写错而被要求写3000字的检讨书49 150摩托车可以加装涡轮增压的吗 新华社的详细介绍,以及对记者有什么要求?身高?学历?长相?背景?_百度知... 少年群侠传-无门槛京东卡申请代理需要什么资质? 少年群侠传-无门槛京东卡首发福利有什么? 在路上收到免费体验卡违法吗怎么投诉