标题:帮帮忙看看我哪编错了
只看楼主
iamyangfan
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2004-8-26
 问题点数:0 回复次数:3 
帮帮忙看看我哪编错了

用冒泡法对6个字符串按由小到大的顺序进行排序。 冒泡排序:所谓“冒泡排序”,也称“起泡排序”或者“气泡排序”,是指这样的一种简单排序方法:若被排序的数组元素个数为N,可以对此数组做N-1次处理。在第k次(k=0, 1, …, N-1)处理时,需比较前N-k个元素,方法是:连续从前到后比较相邻的两个元素,如果后面的元素小于前面的元素,则将二者交换,否则不变。可见,每经过一次处理,至少此次被处理的N-k个元素中的最大元素被移到了本次处理的最后位置,而N-1次处理后就使所有的元素被排序

#include<stdio.h> void main() {char a[6]; int i,j,t; gets(a); for(i=0;i<5;i++) for(j=0;j<5-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } puts(a); }

执行结果总是多出来一个字符,经查证是a[6]的值,我不知道为什么会出现a[6].大家帮忙看看,谢了

搜索更多相关主题的帖子: 元素 void 冒泡 main 气泡 
2004-08-31 02:36
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 

很简单:你的t是个int变量。

更正:把int t; 换成 char t; 即可。

理由:因为int变量占用的是2字节,而char只占用1字节,错误就在这里产生。

[此贴子已经被作者于2004-08-31 10:21:05编辑过]


淘宝杜琨
2004-08-31 10:19
sunwear
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-8-15
得分:0 
厉害
2004-08-31 10:41
iamyangfan
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2004-8-26
得分:0 
OK了,谢谢
2004-08-31 11:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-4777-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.226702 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved