【发布时间】:2019-03-03 17:42:36
【问题描述】:
我编写了一个 C 程序来对数组进行排序,但该程序没有返回任何内容——它只是运行并停留在那里,就好像它在等待输入一样。下面是代码:
#include<stdio.h>
bool unsorted(int ar[],int x){
int c;
for(int i=1;i<=x;i++){
if(ar[0]>ar[i]){
return true;
} else {
return false;
}
}
}
void sort(int arr[],int s){
int h,b;
while(unsorted(arr,s)){
h=arr[0];
for(int i=0;i<=s;i++){
if(arr[i]>h){
b=arr[i];
arr[i]=h;
h=b;
}
}
}
for(int i=0;i<=s;i++){
printf("%d",arr[i]);
}
}
int main(){
int arr[3]={ 2,1,3 };
sort(arr,3);
return 0;
}
【问题讨论】:
-
旁注:thts c++ not c edit tag
-
您使用
for(int i=0; i<=s; i++)之类的循环超出了数组的边界,该循环应为for(int i=0; i<s; i++)。 -
if(ar[0]>ar[i])是打算改成if(ar[i-1]>ar[i])吗? -
您应该开始使用调试器。它可以向您显示程序中的执行流程,并且您可以将变量的实际值与预期值进行比较。您可能会发现您的函数
unsorted和sort中的for循环并没有真正对齐“排序”的含义。 -
不,这个函数只是检查数组是否排序。