啊哈磊_编程从这里起步
标题:
第三章第七节三个数排序算法一出错
[打印本页]
作者:
Smallbee
时间:
2013-3-26 01:00
标题:
第三章第七节三个数排序算法一出错
刚下了最新版啊哈C编程入门书。读完第三章第六节,不禁对该节算法的修正叫好!然而紧跟着的第七节排序算法一却又犯了老错误:若输入的三个数全相等,则将输出六次排序后的结果;若三个数中有两个相等,则将输出两次。不得不说是一大遗憾啊。我写了段代码,将修正前后的算法针对七种相等情况做对比验证,证明修正后的算法输出正常,即均只有一次。希望下个版本能改进
代码如下:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a,b,c;
int i=1;
while (i<8)
{
printf("\n第 %d 次。请输入三个整数,以逗号分隔:\n",i++);
scanf("%d,%d,%d",&a,&b,&c);
printf("书上的算法:\n");
if (a>=b && b>=c) printf("a,b,c\t%d\t%d\t%d\n",a,b,c);
if (a>=c && c>=b) printf("a,c,b\t%d\t%d\t%d\n",a,c,b);
if (b>=a && a>=c) printf("b,a,c\t%d\t%d\t%d\n",b,a,c);
if (b>=c && c>=a) printf("b,c,a\t%d\t%d\t%d\n",b,c,a);
if (c>=a && a>=b) printf("c,a,b\t%d\t%d\t%d\n",c,a,b);
if (c>=b && b>=a) printf("c,b,a\t%d\t%d\t%d\n",c,b,a);
printf("\n改进后的算法:\n");
if (a>=b && b>=c) printf("a,b,c\t%d\t%d\t%d\n",a,b,c);
if (a>=c && c>b) printf("a,c,b\t%d\t%d\t%d\n",a,c,b);
if (b>a && a>=c) printf("b,a,c\t%d\t%d\t%d\n",b,a,c);
if (b>=c && c>a) printf("b,c,a\t%d\t%d\t%d\n",b,c,a);
if (c>a && a>=b) printf("c,a,b\t%d\t%d\t%d\n",c,a,b);
if (c>b && b>a) printf("c,b,a\t%d\t%d\t%d\n",c,b,a);
}
return 0;
}
复制代码
作者:
啊哈磊
时间:
2013-3-26 10:29
感谢你的回馈
送你一个小礼物,我已经私信你。
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/)
Powered by Discuz! X3.2