如何用函数实现三个数的排序(用的是C语言)?
调用子函数交换主函数里变量的值,需要传递指针
#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);
}
用C语言怎么实现输入任意个数的整数并排序?
楼主的思路是对的。不能直接对数组用动态定义,但是可以对指针使用。所以动态定义一个指针,把它当成数组用。
我把你的程序做了些简单的修改,运行成功。源程序如下:
#include<stdio.h>#include<stdlib.h>main(){float*a;inti,j,length;printf("请输入要排序数字的个数:\n")
;scanf("%d",&length);a=(float*
)malloc(length*sizeof(float))
;printf("请输入%d个数(数字之间用空格或回车隔开):\n",length)
;for(i=0;i<length;i++){scanf("%f",&a[i]);}for(i=0;i<length-1;i++)for(j=0;j<length-1-i;j++)if(a[j]>a[j+1]){a[j]=a[j]+a[j+1];a[j+1]=a[j]-a[j+1];a[j]=a[j]-a[j+1];
}printf("这%d个数从小到大排列的顺序是:\n",length)
;for(i=0;i<length;i++)printf("%-7.2f\n",a[i]);}
用C语言编写程序,输入一个正整数n(1#include"stdio.h"intmain(){inti,j,n;inta[12];intmin,mx;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n;i++){min=a[i];mx=i;for(j=i+1;j<n;j++){if(a[j]>min){min=a[j];mx=j;}}j=a[i];a[i]=a[mx];a[mx]=j;}for(i=0;i<n;i++){printf("%d",a[i]);}return0;}min记录该次比较的最大值,mx为相应坐标遍历找到mx后,与a[i]换位~
#include"stdio.h"intmain(){inti,j,n;inta[12];intmin,mx;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n;i++){min=a[i];mx=i;for(j=i+1;j<n;j++){if(a[j]>min){min=a[j];mx=j;}}j=a[i];a[i]=a[mx];a[mx]=j;}for(i=0;i<n;i++){printf("%d",a[i]);}return0;}min记录该次比较的最大值,mx为相应坐标遍历找到mx后,与a[i]换位~
还没有评论,来说两句吧...