标准程序是这样的:

C语言三整数排序是否可以调换比较顺序?

标准程序执行结果没有问题,那么改变比较顺序执行结果怎么样呢?

先比较a和b,之后比较b和c,最后比较a和c。程序如下:

C语言三整数排序是否可以调换比较顺序?

但是,当运行之后的结果却是这样的:

C语言三整数排序是否可以调换比较顺序?

这是为什么呢?

书中对于正确答案的解释是这样的:

C语言三整数排序是否可以调换比较顺序?

这段话的意思是a是三个数里面两两比较较小的数,但是调换顺序之后先比较a和b,a最后是较小的数,再比较b和c,b是较小的数,但是并不能保证a和b的大小关系。如果用数字过程来解释就是这样的:

a=34;b=5;c=1;

a和b比较之后的结果是:

a=5;b=34;

b和c比较之后的结果是:

b=1;c=34;

此时b是小于a的,但是接下来比较a和c:

a=5;c=34;

所以结果是5134。

原因在于没有连续确定同一个数是较小的数,正确程序前两次比较都是确定a是较小的数,最后在两个较大的数b,c之中进行比较,后面调换后的程序是前两次分别确定出两个较小的数,但是不知道到底谁更小,之后也没有比较谁更小,所以出错。

总结:比较大小只能先确定同一个数是两两比较之后都较小的数,之后再进行比较其他的,如果不连续的比较可能会出错。

 

 

 

 

 

 

相关文章:

  • 2021-08-18
  • 2022-12-23
  • 2022-12-23
  • 2021-07-19
  • 2021-05-28
  • 2022-01-04
  • 2021-07-05
  • 2021-06-05
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-28
  • 2022-12-23
  • 2021-12-16
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案