c – 我的泡泡分拣计划中的错误是什么?
发布时间:2020-12-16 03:47:21 所属栏目:百科 来源:网络整理
导读:我已经一次又一次检查代码中的任何问题,但无法弄清楚为什么我的气泡分拣程序没有给出正确的输出.你能帮我识别一下吗? #include iostream.h#include conio.h using namespace std; main(){ int number[10]; int temp=0; int i=0; cout"Please enter any ten
我已经一次又一次检查代码中的任何问题,但无法弄清楚为什么我的气泡分拣程序没有给出正确的输出.你能帮我识别一下吗?
#include <iostream.h> #include <conio.h> using namespace std; main() { int number[10]; int temp=0; int i=0; cout<<"Please enter any ten numbers to sort one by one: "<<"n"; for (i=0;i<10;i++) { cin>>number[i]; } i=0; for (i=0;i<10;i++) { if(number[i]>number[i+1]) { temp=number[i+1]; number[i+1]=number[i]; number[i]=temp; } } i=0; cout<<"The sorted numbers are given below:"<<"n"; for (i=0;i<10;i++) { cout<<number[i]<<"n"; } getch(); } 编辑: for (i=0;i<10;i++) if(number[i]>number[i+1]) { temp=number[i+1]; number[i+1]=number[i]; number[i]=temp; } } 现在我解释一下我在想什么这个循环“应该”做什么.它首先将数字[0]与数字[1]进行比较.如果条件满足,它将执行IF语句的正文.然后我将增加1(i).然后在下一次迭代中,比较的值将是数字[1]和数字[2].那么为什么它不会发生并且循环仅在通过后退出?换句话说,可能是我试图要求IF语句不会在for循环中重复?在我看来它确实如此.我非常感谢你的帮助和观点,我的问题可能很小,但这就是我的进步方式.谢谢. 解决方法
>您只运行一次bubble循环 – 您应该运行它直到所有内容都已排序
>您的气泡循环变为十,访问数字[i 1],这是一种未定义的行为 以下是修复主循环的方法: bool again; do { again = false; for (i=0;i<9;i++) { // ^-- Nine,not ten if(number[i]>number[i+1]) { temp=number[i+1]; number[i+1]=number[i]; number[i]=temp; again = true; } } } while (again); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |