请C语言高手来看看小弟的简单程序怎么运行后得不到想要的结果!求助!!!

来源:百度知道 编辑:UC知道 时间:2024/05/11 01:24:18
题目:输入一串数字,用指针方法让它们顺序输出。
然后再让用户插入一个数字,把这个数字放入这排数列正确的位置。

我的程序:
#include<stdio.h>
void sort(int x[],int length){
int *p,i,j,k;
p=x;
for(k=0;k<length-1;k++){
for(i=0;i<length-1-k;i++){
if(*(p+i)>*(p+1+i)){
j=*(p+i);
*(p+i)=*(p+1+i);
*(p+1+i)=j;
}
}
}
}

void main(){

int num[80];
int i,j;
printf("请输入你要输入数字的个数:\n");
scanf("%d",&j);
printf("请输入%d个数字:\n",j);
for(i=0;i<j;i++) scanf("%d",&num[i]);
sort(num,j);
for(i=0;i<j;i++) printf("%d ",num[i]);
printf("\n");

printf("请再输入一个数字:\n");
i++;
j++;
scanf("%d",&num[i]);
sort(num,j);
for(i=0;i<j;i++) printf("%d ",num[i]);
printf("\n");

}
无错无警告,但是最后的num[0]始终为-85899

当你再输入一个数时,i不能再++了,因为在前面的循环中已经++了,

#include<stdio.h>
void sort(int x[],int length){
int *p,i,j,k;
p=x;
for(k=0;k<length-1;k++)
{
for(i=0;i<length-1-k;i++)
// 应该是(i=0;i<k;i++)_把
{

if(*(p+i)>*(p+1+i))
{
j=*(p+i);
*(p+i)=*(p+1+i);
*(p+1+i)=j;
}
}
}
}