先列出一道题目:
比较大小:输入3个整数,输出最大值。
int a,b,c;
scanf("%d",&a);
scanf("%d",&b);
scnaf("%d",&c);
if(a>b)
if(a>c) printf("%d",&a);
else printf("%d",&b);
列出在a>b的情况下,比较a与c的大小以求出最大值的情况。
现在,将题目改为:
比较大小:输入3个整数,按从大到小的顺序输出。
if (a > b)
if (a > c)
if (b > c) printf("%d%d%d",a,b,c);
else printf("%d%d%d",a,c,b);
else printf("%d%d%d",c,a,b);
连续使用if-else结构可以解决这个问题
if(a>b&&a>c)
if(b>c) printf("%d%d%d",a,b,c);
else printf("%d%d%d",a,c,b);
else if(b>a&&b>c)
if(a>c) printf("%d%d%d",b,a,c);
else printf("%d%d%d",b,c,a);
else if(c>a&&c>b)
if(a>b) printf("%d%d%d",c,a,b);
else printf("%d%d%d",c,b,a);
if-else结构与else-if结构混合使用也可以解决这个问题。
区别在于使用if-else语句时,会通过有逻辑的两两比较两个数字的大小来先确定出最大值然后再比较剩下的两个数字的大小,而if-else与else-if混合使用,可以通过else-if结构在3个数字中寻找最大值。
共同点在与两种方法都是先确定最大值然后再比较剩下的两个数字。
可以假设如果题目中要求输入的数字变多了,解题的方法还是先通过求出最大值,第二大值……来进行解题。第二种方法(通过逻辑符号表达最大值)似乎更加简单,且不容易出错。
最后,今天,我还学到了分支语句中还可以嵌套分支语句,只要符合逻辑。当然,不断的嵌套分支语句会使问题变得复杂,我们应该通过自己定义一些东西使问题简单化。