输入4个整数,要求按由小到大顺序输出;我刚学c语言,就是对于下面解答中的 if 过程不是很理解?
为什么只有if没有else,替换过程我知道,就是不知道到为什么这样替换就能顺序输出呢,不知道自己是不是转牛角尖,希望高手指点迷津啊?#include<stdio.h>vo...
为什么只有if 没有else,替换过程我知道,就是不知道到为什么这样替换就能顺序输出呢,不知道自己是不是转牛角尖,希望高手指点迷津啊?
# include<stdio.h>
void main()
{
int a,b,c,d,t;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a>b) {t=a;a=b;b=t);
if(a>c) {t=a;a=c;c=b};
if(a>d) {t=a;a=d;d=t);
if(b>c) {t=b;b=c;c=t};
if(b>d) {t=b;b=d;d=t};
if(c>d) {t=c;c=d;d=t};
printf("%d,%d,%d,%d",a,b,c,d);
} 展开
# include<stdio.h>
void main()
{
int a,b,c,d,t;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a>b) {t=a;a=b;b=t);
if(a>c) {t=a;a=c;c=b};
if(a>d) {t=a;a=d;d=t);
if(b>c) {t=b;b=c;c=t};
if(b>d) {t=b;b=d;d=t};
if(c>d) {t=c;c=d;d=t};
printf("%d,%d,%d,%d",a,b,c,d);
} 展开
4个回答
展开全部
if是可以没有else的,这样的情况下如果if的条件符合,则执行if语句,否则不执行,直接到下一个if。也就是说,如果a不大于b,也就是a小于b,那么就像刚刚说的,不执行这个if就是了,计算机会往下阅读程序,也就是去判断下一个if,记住一句话“if条件不符合就不执行”。else只是相当于if不符合的话其他情况下执行什么,如果没有else,那就表示,if不符合,程序保持不动。
这个程序给你举个实例讲解也许你就明白了
假设输入为1,3,4,2
1不大于3,第一个if不执行,目前顺序为1,3,4,2
1不大于4,第二个if不执行,目前顺序为1,3,4,2
1不大于2,第三个if不执行,目前顺序为1,3,4,2
3不大于4,第四个if不执行,目前顺序为1,3,4,2
3大于2,第五个if执行,实现交换,目前顺序为1,2,4,3
4大于3,第六个if执行,实现交换,最后顺序为1,2,3,4
其实你仔细想想,如果第一个if执行,实现交换,那么第二个if中的a已经是交换过后的那个较小的数。第三个同理。也就是说,前3个if执行完以后确保了第1个数是4个数字中最小的,第四第五确保第二个数在剩下的3个数中是最小的(也就是4个数字中第二小的),第6个if确保第三个数小于第四个数。这样子就实现了整个结构的排序。希望能帮到你。
这个程序给你举个实例讲解也许你就明白了
假设输入为1,3,4,2
1不大于3,第一个if不执行,目前顺序为1,3,4,2
1不大于4,第二个if不执行,目前顺序为1,3,4,2
1不大于2,第三个if不执行,目前顺序为1,3,4,2
3不大于4,第四个if不执行,目前顺序为1,3,4,2
3大于2,第五个if执行,实现交换,目前顺序为1,2,4,3
4大于3,第六个if执行,实现交换,最后顺序为1,2,3,4
其实你仔细想想,如果第一个if执行,实现交换,那么第二个if中的a已经是交换过后的那个较小的数。第三个同理。也就是说,前3个if执行完以后确保了第1个数是4个数字中最小的,第四第五确保第二个数在剩下的3个数中是最小的(也就是4个数字中第二小的),第6个if确保第三个数小于第四个数。这样子就实现了整个结构的排序。希望能帮到你。
展开全部
就是通过两两比较,经过前3个if可以使得a值最小,这时表明a已经排好,接着是4、5个if使得b是次小,最后一个if比较最大值和次大值。就这样。如果希望方便可以用到数组。排序的方法有很多种,这个涉及到时间和空间的一些问题,楼主有兴趣可以查看有关的数据结构或算法的书
追问
那为什么if语句里没有else呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组存储,直接用冒泡法排序 超级简单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
依次比较,先比较两个,小的放前面。
两个比较,为了防止比较丢失t作为中间变量。
例如两盘苹果,a盘十个,b盘五个,b中的少就要放前面的a里,怎么放呢?再找个盘子t。a放t里,b放a里,t放b里。
按照排列组合,四个数有六组。
两个比较,为了防止比较丢失t作为中间变量。
例如两盘苹果,a盘十个,b盘五个,b中的少就要放前面的a里,怎么放呢?再找个盘子t。a放t里,b放a里,t放b里。
按照排列组合,四个数有六组。
追问
如果(a>b) 则怎么怎么样,如果(a>c)则怎么怎么样,但他没有说若(a<b),(a<c)应该如何处理,只有if没有else的这个过程不怎么理解,虽然这是个简单的问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询