#include <stdio.h>
#include <stdlib.h>
int numbers[],size;
void C_sort(int L,int R){
int L_arrow,R_arrow,box;
if(L>R){
return;
}
box=numbers[L];
L_arrow=L;R_arrow=R;
while(L_arrow!=R_arrow){
while(numbers[R_arrow]>=box){
if(L_arrow<R_arrow){
R_arrow--;
} else {
break;
}
}
while(numbers[L_arrow]<=box){
if(L_arrow<R_arrow){
L_arrow++;
} else {
break;
}
}
if(L_arrow<R_arrow){
numbers[L_arrow]=numbers[L_arrow]+numbers[R_arrow];
numbers[R_arrow]=numbers[L_arrow]-numbers[R_arrow];
numbers[L_arrow]=numbers[L_arrow]-numbers[R_arrow];
}
}
numbers[L]=numbers[L_arrow];
numbers[L_arrow]=box;
C_sort(L,L_arrow-1);
C_sort(L_arrow+1,R);
}
int main()
{
int i;
scanf("%d",&size);
for(i=1;i<=size;i++)scanf("%d",&numbers[i]);
for(i=1;i<=size;i++)printf("%d",numbers[i]);//测试代码,此时输出已不正常
C_sort(1,size);
for(i=1;i<=size;i++)printf("%d",numbers[i]);
system("pause");
return 0;
}就这个,编译倒没问题,运行的时候,错误非常随机,比如98765甚至要输入两次还是错的!!为什么?
1 回答
已采纳
Camel97
TA贡献49条经验 获得超38个赞
第一个。哪有数组是像这样定义的。数组定义的时候必须指明长度。
第二个。你输入的size应该是表示数组的大小。那数组的下标应该是8到size-1不是从1到size
第三个。学会debug找错误,这也是编程的一个能力。如果算法代码不是自己写的那好好查错更能理解一个算法。实在不行用printf把值打出来看哪里错了。
第四个。虽然算法很重要。还是建议先把基础打牢。
- 1 回答
- 0 关注
- 1410 浏览
添加回答
举报
0/150
提交
取消