有关起泡法排列顺序问题
请问如下代码:#include<stdio.h>
int main()
{
int a, b=0, c, e;
printf("请输入十个数:\n");
scanf("%d", &a);
for (b = 0; b <= 9; b++);
for (c = 0; c < 9; c++)
for (b = 0; b < 9 - c; b++)
if (a > a)
{
e = a;
a = a;
a = e; //把两个值交换
}
printf("它们从小到大排列顺序为;\n");
for (b = 0; b <= 9; b++)
printf("%d", a);
return 0;
}
为什么执行是乱码?用了好几个编辑器都不行,还有就是,对于数组值的输入,就是那句scanf,是不是每个数用空格隔开?恳请大神解答疑惑! #include <stdio.h>
int main(void)
{
int a , b , c , e ;
printf("请输入十个数:\n") ;
for(b = 0 ; b < 10 ; b ++)scanf("%d", & a) ;
for(b = 1 ; b < 10 ; b ++) {
for(c = b ; c && a < a ; c --) {
e = a ;
a = a ;
a = e ;
}
}
printf("它们从小到大排列顺序为 : \n") ;
printf("%d" , a) ;
for(b = 1 ; b < 10 ; b ++) printf("\t%d", a) ;
printf("\n") ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
请输入十个数:
3 7 2 5 7 4 1 10 30 6
它们从小到大排列顺序为 :
1 2 3 4 5 6 7 7 10 30
D:\00.Excise\C> 啊?难道可以正常运行?那为什么我这里不行呀? jackz007 发表于 2020-11-14 00:25
编译、运行实况:
谢谢老师帮我改正,等我看一下
905853663 发表于 2020-11-14 00:28
啊?难道可以正常运行?那为什么我这里不行呀?
不行是指不能编译? 错误全在注释中了
#include<stdio.h>
int main()
{
int a, b, c, e;
printf("请输入十个数:\n");
for (b = 0; b <= 9; b++) // 多了一个分号
scanf("%d",&a); // 与一语句顺序错误
for (c = 0; c < 9; c++)
{
for (b = 0; b <= 9 - c; b++)// 缺少一个等于号,最后一个元素会被遗漏
{
if (a < a) // 所谓起泡,就是大数冒出来,所以应该使用小于号
{
e = a;
a = a;
a = e; //把两个值交换
}
} // 缺少花括号
} // 缺少花括号
printf("它们从小到大排列顺序为;\n");
for (b = 0; b <= 9; b++)
printf("%d ", a);
return 0;
} 风过无痕1989 发表于 2020-11-14 00:46
错误全在注释中了
谢谢!不胜感激! jackz007 发表于 2020-11-14 00:37
不行是指不能编译?
没有没有,我看错了{:10_250:} 905853663 发表于 2020-11-14 08:24
谢谢!不胜感激!
满意了就选为最佳答案吧 风过无痕1989 发表于 2020-11-14 10:42
满意了就选为最佳答案吧
但是13行那里还是大于号不是小于,我是要从小到大的 905853663 发表于 2020-11-14 14:30
但是13行那里还是大于号不是小于,我是要从小到大的
那你就改为大于号按你的排吧,没有问题的
PS: 正常的起泡,就像水泡一样,越大越容易往上冒 风过无痕1989 发表于 2020-11-14 14:52
那你就改为大于号按你的排吧,没有问题的
PS: 正常的起泡,就像水泡一样,越大越容易往上冒
是的,讲道理是这样哈哈
页:
[1]