菜鸟再次求救!C语言3个数小到大排,为何3个if就行?if里面的赋值为啥要这样,求解释,谢了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了菜鸟再次求救!C语言3个数小到大排,为何3个if就行?if里面的赋值为啥要这样,求解释,谢了相关的知识,希望对你有一定的参考价值。
main()
int a,b,c,t;
printf("enter a,b,c\n");
scanf("%d%d%d",&a,&b,&c);
if(a>b) t= b;b= a;a= t;
if(a>c) t=c;c=a; a =t;
if(b>c) t= c; c= b;b =t;
printf("result is:%d %d %d", a,b,c);
t=a>b?(a>c?a:c):(b>c?b:c);
printf("%d",t);
输入三个数,将最大的数给t就可以了。
至于你写的那三个if语句里面的东西,为啥是那样写,给你举一个简单的例子,比如:有红酒、白酒各一瓶,如果想使得这两个装满酒的瓶子互换一下(即装白酒的装红酒,装红酒的装白酒),这就的考虑用另外一个空瓶,将其中的一瓶先倒出来,然后再将另一瓶倒入空瓶。如果你不使用空瓶的话,会是一瓶酒白白的浪费丢失。
t为空瓶
t=a(第一步将a瓶中的酒倒入空瓶) 此时t变为满的,a为空瓶
a=b(第二步将b瓶中的酒倒入空瓶) 此时a变为满瓶,b为空瓶
b=t (第二步将t瓶中的酒倒入空瓶) 此时b变为满瓶,t为空瓶
希望对你有帮助! 参考技术A //程序的思想是a始终保存最小的数
if(a>b) t= b;b= a;a= t;;//执行完后得到a<=b的结果
if(a>c) t=c;c=a; a =t;//执行完后得到a<=c的结果
if(b>c) t= c; c= b;b =t;//执行完后得到b<=c的结果
所以由a<=b,b<=c,就可以得到a<=b<=c 参考技术B 第一个if保证a比b小,第二个if保证a比c小,这样a已经最小了,第三个if又让b比c小,结果达到排序的目的 参考技术C 第一个if使 a 小于 b
第二个if使 a 小于 c
第三个if使 b 小于 c 参考技术D t是个中间存储变量
【向大虾求助,C语言编程问题,C++】输入三个int整数x,y,z,请把这三个数由小到大输出。(注
【向大虾求助,C语言编程问题,C++】输入三个int整数x,y,z,请把这三个数由小到大输出。(注意:x,y,z为不重复的三个数) 〖帮助分析:想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。(需要定义临时变量)〗
//#include "stdafx.h"//If the vc++6.0, with this line.#include <iostream>
using namespace std;
int main(int argv,char *argc[])
int x,y,z,t;
cout << "Input 3 integers...\\n";
cin >> x >> y >> z;
if(x>y)
t=x,x=y,y=t;
if(x>z)
t=x,x=z,z=t;
if(y>z)
t=y,y=z,z=t;
cout << x << ' ' << y << ' ' << z << endl;
return 0;
运行样例:
参考技术A /*这个就是最简单的比大小了*/#include <stdio.h>
// 利用指针将两个数进行交换
void swap(int * a,int * b)
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
int main(void)
int x,y,z,i,j;// i 和 j 是循环变量
int arr[3] = 0
//从键盘获取三个int 型整数
for(i = 0; i< 3 ; i++)
scanf("%d",&arr[i]);
//下面是排序逻辑
for(i = 0;i < 2;i++)
for(j = i+1; j< 3;j++)
if(arr[i] > arr[j])
swap(&arr[i],&arr[j]);
//将排序的最终结果保存到 x y z
x = arr[0];
y = arr[1];
z = arr[2];
return 0;
参考技术B //望采纳
#include<stdio.h>
int main()
int a,b,c,t;
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("%d %d %d\\n",a,b,c);
return 0;
本回答被提问者和网友采纳
以上是关于菜鸟再次求救!C语言3个数小到大排,为何3个if就行?if里面的赋值为啥要这样,求解释,谢了的主要内容,如果未能解决你的问题,请参考以下文章
写一个函数,使N个整数按由小到大的顺序排列,要求在主函数中输入10个数,并输出排好序的数