C语言中三个数排序

作者&投稿:樊王 (若有异议请与网页底部的电邮联系)
C语言中将三个数字进行排序的几种写法~

方法1:用3个变量存放3个数字,按从大到小的顺序排:
int a,b,c,tmp;
printf("请输入3个数字:");
scanf("%d%d%d",&a,&b,&c);
if(a<b)//如果a比b小,交换a和b的值,使a存放大的数字
{
tmp=a;
a=b;
b=tmp;
}
if(a<c)//如果a比c小,交换a和c的值,使a存放大的数字
{
tmp=a;
a=c;
c=tmp;
}
if(b<c)//如果b比c小,交换b和c的值,使b存放大的数字
{
tmp=b;
b=c;
c=tmp;
}
printf("按照从大到小的顺序为:%d,%d,%d
",a,b,c);
方法2:用数组存放3个变量,用冒泡排序的方法进行排序int i=0,j=0,tmp=0,a[3];
printf("请输入3个数字:");
for(i=0;i<3;i++)
scanf("%d",&a[i]);
for(i=0;i<2;i++)
for(j=0;j<2-i;j++)
if(a[i]<a[i+1])//按照从大到小排列
{
tmp=a[i];
a[i]=a[i+1];
a[i+1]=tmp;
}
printf("按照从大到小的顺序为:");
for(i=0;i<3;i++)
printf("%d ",&a[i]);
printf("
");

两种方法
简单方法
#include
int
main(void)
{
int
a,
b,
c,
t;
printf("软件的功能是为3个数字排序,从大到小");
printf("请输入三个数字,以空格相间隔:
");
scanf("%d
%d
%d",
&a,
&b,
&c);
if
(a
<
b)
{
t
=
a;
a
=
b;
b
=
t;
}
if
(a
<
c)
{
t
=
a;
a
=
c;
c
=
t;
}
if
(b
<
c)
{
t
=
b;
b
=
c;
c
=
t;
}
printf("a=%d
b=%d
c=%d",
a,
b,
c);
getchar();
getchar();
return
0;
}
------------------------------------这是分割线------------------------------------------------
复杂方法
#include
int
main(void)
{
int
x,
y,
z;
printf("此程序为你输入的三个数值自动排序,用a表示最大,b为中间,c为最小
");
printf("请输入三个不同整数(以空格键相隔):
");
scanf_s("%d
%d
%d",&x,&y,&z);
//
printf("x=%d
y=%d
z=%d
",x,y,z);
if
(x
>
y
&&
y
>z)
printf("a=%d,b=%d,c=%d
",x,y,z);
else
if
(x
>
z
&&
z
>
y)
printf("a=%d,b=%d,c=%d
",x,z,y);
else
if
(y
>
x
&&
x
>
z)
printf("a=%d,b=%d,c=%d
",y,x,z);
else
if
(y
>
z
&&
z
>
x)
printf("a=%d,b=%d,c=%d
",y,z,x);
else
if
(z
>
x
&&
x
>
y)
printf("a=%d,b=%d,c=%d
",z,x,y);
else
if
(z
>
y
&&
y
>
x)
printf("a=%d,b=%d,c=%d
",z,y,x);
else
printf("有相同数值无法比较大小,请重新输入不同数值
");
getchar();
getchar();
return
0;
}

用C语言编写通过if将3个数排序:

#include<stdio.h>/*函数头:输入输出头文件*/

void main()/*空类型:主函数*/

{

inta,b,c,t;/*定义变量的数据类型为整型*/

printf("输入3个数,中间用空格隔开:");/*输出文字提示*/

scanf("%d%d%d",&a,&b,&c);/*输入3个数字*/

if(a<b)/*判断a是否小于b*/

{t=a;a=b;b=t;}/*是,则a、b的值互换*/

if(a<c)/*判断a是否小于c*/

{t=a;a=c;c=t;}/*是,则a、c的值互换*/

if(b<c)/*判断b是否小于c*/

{t=b;b=c;c=t;}/*是,则b、c的值互换*/

printf("从小到大:%d,%d,%d
",c,b,a);/*输出从小到大排列的数*/

printf("从大到小:%d,%d,%d
",a,b,c);/*输出从大到小排列的数*/

}

扩展资料

输入三个数,比较其大小,并从大到小输出。

#include<stdio.h>

int main(){

inta,b,c;

scanf("%d%d%d",&a,&b,&c);

if(a<b){

intflag=a;

a=b;

b=flag;

}

if(a<c){

intflag=a;

a=c;

c=flag;

}

if(b<c){

intflag=b;

b=c;

c=flag;

}

printf("%d%d%d",a,b,c);

}



三个if是并列的关系
程序的功能是三个数里面两两比较,从小到达一次排序。
例如:输入3,2,1 (a = 3,b =2,c = 1)
第一个if语句
if(a>b)
{t=a;a=b;b=t;}
比较a和b的大小,明显a>b,所以利用中间变量t保存a,将b的值赋给a,再将中间变量t的值赋给b,执行过程是{t=a(3);a = b(2);b = t(3)},所以此时a=2,b=3,c =1.
第二个if语句
if(b>c)
{t=b;b=c;c=t;}
比较b和c的大小,明显b>c,将b和c的值调换,{t=b(3);b = c(1);c = t(3),此时a=2,b=1,c=3.
第三个if语句
if(a>b)
{t=a;a=b,b=t;}
再次比较a和b的大小,明显a>b,将a和b的值调换,{t=a(2);a = b(1);b = t(2)},此时a=1,b=2,c=3.
然后一次打印a,b,c的值:printf("从小到大:%d %d %d",a,b,c);

三个if是并列关系,依次执行下来。
第一个if用来比较a和b的大小,如果a>b则交换a,b的值,保证a比b小。
第二个if用来比较b和c的大小,如果b>c则交换b,c的值,保证b比c小。
由于原来可能a比c大,第二次的比较与交换后,需要再次比较a和b。
这个程序的意思就是把大的数依次往后挪。
如果是4个数的话,那么if的顺序就应该是
if(a>b)
if(b>c)
if(c>d)
if(a>b)
if(b>c)
if(a>b)

搂主的方法过于的烦杂,排序的,没有弄清楚算法
算法是:前两个中的小的数,与第三个数再比较,找出较小的数,这个数就是所要求的
#include<stdio.h>
int compare(int,int,int);
main()
{
int a,b,c;
printf("please input 3 numbers:\n");
scanf("%d%d%d",&a,&b,&c);
printf("3个数中最小的是:%d\n",compare(a,b,c));
}

int compare(int x,int y,int z)
{
int t;
t=x<y?x:y;
return (t<z?t:z);
}

1)第一个if条件是a大于b时,a与b的值调换,此后ab比较a是较小的,b是较大的
2)第二个if条件是b大于c时,b与c的值调换,此后bc比较b是较小的,c是较大的
此时c是最大的
3)第三个if条件是a大于b时,a与b的值调换,此后ab比较a是最小的,b是较大的


C语言:对三个数按从小到大排序,为什么不对呢?
include <stdio.h> void swap(int *p1,int *p2){ int * tmp;tmp=*p1; \/\/这儿你必须写上*,不写的话就是对这个参数进行的操作,最后不会改变*p1,*p2 的值。加上*号就是对参数的地址的操作,最后的结果就会保留下来。p1=*p2;p2=tmp;} void sort (int *p1,int *p2,int *p3){ if ...

C语言中,输入三个数a b c,输出结果按大小排序,用if的嵌套结构。_百度知 ...
include<stdio.h> void main(){ float a,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a>b){ t=a;a=b;b=t;\/\/实现a和b的互换 } else;if(a>c){ t=a;a=c;c=t;\/\/实现a和c的互换 } else;if(b>c){ t=b;b=c;c=t;\/\/实现b和c的互换 } else;printf("%5.2f,%5.2f...

c语言用if函数怎么排列任意输出三个数的大小?
思路:如果利用if进行三个数a,b,b的排序,则先利用if判断a和b的大小,把小数赋值给a大数赋值给b,再利用if判断c和b的大小,把小数赋值给b大数赋值给c,则c就是最大值,最后比较a和b的大小,把小数赋值给a大数赋值给b,则a就是最小数,b是中间值,输出a,b,c就是排序后数。参考代码:include...

不要用if语句!!! C语言中三个数排序
\/\/你好,一个简单且完整的代码如下:include<stdio.h> int main(){ int a = 1, b = 2, c = 3; \/\/待排序的三个数 int max, mid , min; \/\/用于存储最大数,中间数,最小数 max = c>(a>b?a:b)?c:(a>b?a:b); \/\/问号表达式找出三个数中的最大值 min = c<(a...

python比较三个数大小
python比较三个数的大小排序的方法:这是最容易理解的方法在之前判断两个数大小的基础上,在if语句中嵌套一个if语句,经过多次判断得出最大数。这样可以再引用函数中将引用的函数变为max(a,b,c)或者在比较两个数的函数在主程序里变为max=max(max(a,b),c)下面介绍一个三元运算符,这个运算符...

C语言题:对A,B,C三个整数按照从大到小的方法进行排序
include <stdio.h>int main(void){ int a, b, c; printf("请输入三个数:"); scanf("%d%d%d", &a, &b, &c); if (a < b) { int c; c = a; a = b; b = c; } if(b < c) { int a; a = b; b = c; c = b...

C语言中将输入的3个整数按照从小到大的顺序排列,程序执行一直未排序,求 ...
}if (*p2 > *p3) {t = *p2; *p2 = *p3; *p3 = t;}}void main() {int a, b, c;int *p1 = &a, *p2 = &b, *p3 = &c;printf("输入三个整型数字:\\n");scanf("%d%d%d", &a, &b, &c);swap(p1, p2, p3);printf("%d,%d,%d\\n", *p1, *p2, *p3);} ...

C语言编程题,输入三个整数,按从大到小的顺序输出
define _CRT_SECURE_NO_WARNINGS include<stdio.h> int main(){ int a,b,c,t;printf("请输入三个整数:\\n");scanf("%d,%d,%d",&a,&b,&c);if(a<b){\/\/完成a和b值的交换,a里面放最大值 t=a;a=b;b=t;} if(a<c){\/\/完成a和c值的交换,a里面放最大值 t=a;a=c;c=t;}...

输入三个数输出排序数第一个是最小的,中间是最大的,最后一个是中间的...
include<stdio.h>int main(){int a,b,c;scanf("%d%d%d",&a,&b,&c);printf ("最小=%d,最大=%d,中间=%d\\n",a<b && a<c?a:(b<c?b:c),a>b && a>c?a:(b>c?b:c),a>b && a<c||ac?a:(a<b&&a<c?(b>c?c:b):(b>c?b:c)));} ...

用c#语言完成:产生三个1~100之间的随机数,按从小到大的顺序排序
{ int[] Arr = new int[100];Random random = new Random();for (int i = 0; i < Arr.Length; i++){ Arr[i] = GetRandomNum(Arr, random);} for (int i = 0; i < 1000; i++){ \/\/Console.WriteLine(random.Next(101));\/\/这种会产生0-100之间的数,返回一个小于指定数的...

马关县18760928605: C语言中将三个数字进行排序的几种写法 -
空刮和血: 方法1:用3个变量存放3个数字,按从大到小的顺序排: int a,b,c,tmp; printf("请输入3个数字:"); scanf("%d%d%d",&a,&b,&c); if(a<b)//如果a比b小,交换a和b的值,使a存放大的数字 { tmp=a; a=b; b=tmp; } if(a<c)//如果a比c小,交换a和...

马关县18760928605: C语言编写程序,将任意3个数按照从小到大的顺序排序. -
空刮和血: #include<stdio.h> int main() {int i,j,m;double temp;double a[3];for(m=0;m<3;m++) //输入三个数{scanf("%lf",&a[m]);}for(i=0;i<3;i++) //完成排序{for(j=i;j<3;j++){if(a[j]<a[i]){temp=a[i];a[i]=a[j];a[j]=temp;}}printf("%lf\t",a[i]);//打印结果}printf("\n");return 0; }

马关县18760928605: C语言中3个数从小到大排序的代码 -
空刮和血: if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;} if(b>c){t=b;b=c;c=t} printf("%d%d%d",a,b,c);

马关县18760928605: C语言中怎么把三个整数从小到大排列 -
空刮和血: 方法如下:1.从控制台读入三个数; 2.实现三个数从小到大排序: (1)将第一个数作为最小数,依次和第二,三个数进行比较.两次比较重如果有任意一个比第一个小,则将两个数交换 ; (2)在(1)步后,得到第一个数为最小数.再将第二个数与第三个数比较大小后即可实现三个数从小到大排序. 拓展资料 两种常用排序方法: 1.选择排序法:从一列数中,选择第一个作为最小数,依次和后面的数进行比较.如有比第一个数小的数,则交换两个数.最后排到该列数都倒数第二个时,这列数就从小到大排好了顺序. 2.冒泡排序法:思路与选择排序法一致.不同的是,冒泡排序将第一个作为最大数,然后再和该数后的数进行比较.

马关县18760928605: c语言编写程序,任意三个数,由大小到排序,源代码如何写! -
空刮和血: 思路:任意三个数按从大到小顺序输出,可以先求出三个数中的最大值和最小值,三个数的和减去最大值和最小值的差就是中间数,接着依次输出. 参考代码: #include "stdio.h" int main() {int a,b,c,max,min;scanf("%d%d%d",&a,&b,&c);max=a>b?a:b;min=a<b?a:b;if(c>max) max=c;if(min>c) min=c;printf("从大到小排序:%d %d %d\n",max,a+b+c-max-min,min); } /* 运行结果: 2 1 3 从大到小排序:3 2 1 */

马关县18760928605: c语言输入3个数排序newline in constant -
空刮和血: 给你举个例子 a=1,b=2,c=3 if(a<b)后 a=2,b=1,c=3 if(b<c)后 a=2,b=3,c=1 if(a<c)后 a=2,b=3,c=1 应该是这样的 if(a<b) swap(a,b) 2,1,3 if(a<c) swap(a,c) 3,1,2 if(b<c) swap(b,c) 3,2,1 先把第一个数和它后边的数比较了,再把第二个数和其它的数比较,直到倒数第二个数和倒数第一个数比较

马关县18760928605: 用c语言对三个整数abc进行排序并输出 -
空刮和血: main() { int a,b,c,i; scanf("%d,%d,%d",&a,&b,&c); if(a>b) {i=a; a=b; b=t;} if(a>c) {t=a; a=c; c=t; } if(b>c) {t=b; b=c; c=t;} printf("%d %d %d",a,b,c); } 这个是从小到大的顺序,希望能够帮助你,望采纳!

马关县18760928605: 用C语言将3个数排序! -
空刮和血: 首先printf("请输入三个整数:/n");中/n应改为\n 其次,printf("你输入的三个数从大到小排序为:%d,%d,%d",&x,&y,&z); 中&x,&y,&z应改为x,y,z 还有就是你输入三个整数时两两间要用,隔开.

马关县18760928605: 如何用函数实现三个数的排序(用的是C语言)? -
空刮和血: void change(int* a,int *b) {int temp = a>b?a:b;return;} 调用函数确实不能修改原参数的值,其实质是拷贝了一份实参给形参,在这种情况下,C语言是用指向实参的指针来修改实参的,C++可以还用引用,就是第一个回答你问题的那个方法.你说书上说可以用全局变量,这个当然可以,但是,绝不推荐用全局变量或者静态变量,这是一个很不好的编程习惯!望采纳

马关县18760928605: C语言中三个数排序
空刮和血: int a,b,c,t; if(a<b) {t=a;a=b;b=t;} if(a<c) {t=a;a=c;c=t;} if(b<c) {t=b;b=c;c=t;} 这样就从大到 小 就是a,b,c

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网