用C编排序程序遇到的问题(初学级)

来源:百度知道 编辑:UC知道 时间:2024/05/13 10:15:38
源代码在此:

#include<stdio.h>
#include<string.h>

int main(void)
{
char a[60], temp;
int i, j, k, count;
gets(a);
count = strlen(a);
printf("\n");
for ( i = 0; i < count - 1; i++){
k = i;
for (j = k + 1; j < count; j ++){
if (a[k] > a [j]) k = j;
temp = a[i]; a[i] = a[k]; a[k] = temp;
}
}
printf("%s\n", a);
return 0;
}
为什么我运行它,有时候结果正确,有时候不正确。。。
如果各位看出错误,或者觉得有地方需要改善,请不吝赐教!!!先谢嘞。
似乎还是不行、。。。。。。。。。。。
有时候正确,有时候依然会出现错误的结果。。。

我用的是VC++

for ( i = 0; i < count - 1; i++){

for (j = 0; j < count-1; j ++){
if (a[j] > a [j+1]){
temp = a[i]; a[i] = a[k]; a[k] = temp;
}
}
}
中间那段 这样改
出错原因你的if()后面没有加括号 要把
temp = a[i]; a[i] = a[k]; a[k] = temp;
阔住

你想比较的是CHAR还是INT阿?哦,我知道了,是你的gets的问题,那样的话他把你所有输入的数字全部以ASCII码的形势存入数组中,这样假如输入: 12 23 56
他会存为:空格'12'空格'23',这样他是逐一存储的。
所以你可以把它利用一个while循环判断结束来一个一个存储。