C语言插入排序的题目,我检查不出来错误啊

edward1992 2010-11-30 02:57:51
要求先输入一个数组并排好序,再输入另外一个数组并按序插入到之前的数组内。
我的代码运行的时候,输入数字的时候要输入三次ctrl+Z才能停止。
而且最后打印出来的数列完全不是我想要的数列。
#include <stdio.h>
#include <stdlib.h>

void Sort(int num[],int i);

int main(void)
{
int num1[100],num2[50],i,j,k;

printf("Please input some digits for the original array.\n");
printf("Be aware that the amount of digits shouldn't be bigger than 50.\n");
for(i=0;getchar()!=EOF;i++)
{
scanf("%d",&num1[i]);
}
printf("\n");

Sort(num1,i+1);

printf("Please input some digits for the array to be inserted.\n");
for(j=0;getchar()!=EOF;j++)
{
scanf("%d",&num2[j]);
}
printf("\n");

for(k=0;k<=j;k++)
{
num1[i+k+1]=num2[k];
}

Sort(num1,i+j+2);

printf("The sorted array which has been inserted another array is:\n");
for(k=0;k<i+j+2;k++)
{
printf("%d\t",num1[k]);
if((k+1)%6==0)
{
printf("\n");
}
}
printf("\n");

system("PAUSE");
return 0;
}

void Sort(int num[],int i)
{
int j,t,temp;

for(j=0;j<i;j++)
{
for(t=0;t<i-j;t++)
{
if(num[t]>num[t+1])
{
temp=num[t];
num[t+1]=num[t];
num[t]=temp;
}
}
}
}

...全文
205 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangyipeng123 2010-12-02
  • 打赏
  • 举报
回复
# include <stdio.h>
# include <stdlib.h>

void Sort(int num[],int i);

int main(void)
{
int num1[100],num2[50],i,j,k;

printf("Please input some digits for the original array.\n");
printf("Be aware that the amount of digits shouldn't be bigger than 50.\n");
for(i=0;getchar()!=EOF;i++)
{
scanf("%d",&num1[i]);//这里得到了一个元素个数为i的数组
}
printf("\n");

Sort(num1,i);//调用排序函数

printf("Please input some digits for the array to be inserted.\n");
for(j=0;getchar()!=EOF;j++)
{
scanf("%d",&num2[j]);
}
printf("\n");//得到一个元素个数为j的数组

for(k=0;k<j;k++)
{
num1[i+k]=num2[k];
}

Sort(num1,i+j);

printf("The sorted array which has been inserted another array is:\n");
for(k=0;k<i+j;k++)
{
printf("%d\t",num1[k]);
if((k+1)%6==0)
{
printf("\n");
}
}
printf("\n");

system("PAUSE");
return 0;
}

void Sort(int num[],int i)
{
int j,t,temp;

for(j=0;j<i;j++)
{
for(t=0;t<i-j;t++)
{
if(num[t]>num[t+1])
{
temp=num[t+1];
num[t+1]=num[t];
num[t]=temp;
}
}
}
}
由于我记得#include <stdlib.h>

在GGC里应该怎么加后缀编译,所以改了下,这个在GCC下面可以达到理想效果。
huangyipeng123 2010-12-02
  • 打赏
  • 举报
回复
# include <stdio.h>
# include <stdlib.h>

void Sort(int num[],int i);

int main(void)
{
int num1[100],num2[50],i,j,k;

printf("Please input some digits for the original array.\n");
printf("Be aware that the amount of digits shouldn't be bigger than 50.\n");
for(i=0;getchar()!=EOF;i++)
{
scanf("%d",&num1[i]);//这里得到了一个元素个数为i的数组
}
printf("\n");

Sort(num1,i);//调用排序函数

printf("Please input some digits for the array to be inserted.\n");
for(j=0;getchar()!=EOF;j++)
{
scanf("%d",&num2[j]);
}
printf("\n");//得到一个元素个数为j的数组

for(k=0;k<j;k++)
{
num1[i+k]=num2[k];
}

Sort(num1,i+j);

printf("The sorted array which has been inserted another array is:\n");
for(k=0;k<i+j;k++)
{
printf("%d\t",num1[k]);
if((k+1)%6==0)
{
printf("\n");
}
}
printf("\n");

system("PAUSE");
return 0;
}

void Sort(int num[],int i)
{
int j,t,temp;

for(j=0;j<i;j++)
{
for(t=0;t<i-j;t++)
{
if(num[t]>num[t+1])
{
temp=num[t+1];
num[t+1]=num[t];
num[t]=temp;
}
}
}
}
edward1992 2010-12-02
  • 打赏
  • 举报
回复
请问为什么我要连续输入三次ctrl+z才能终止输入的循环?
guolie1989 2010-11-30
  • 打赏
  • 举报
回复
冒泡排序时将num[n+1]覆盖了,
te m p=num[t+1];
nu m[t+1]=num[t];
num[t]=temp;

Sort(num1,i+1);改为sort(num1,i)吧??
num1[i+k+1]=num2[k];改为num1[i+k]=num2[k];
Sort(num1,i+j+2);改为sort(num1,i+j);



forestfire 2010-11-30
  • 打赏
  • 举报
回复
我看了额 额
edward1992 2010-11-30
  • 打赏
  • 举报
回复
顶起,顶起~~
edward1992 2010-11-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hqin6 的回复:]
te m p=num[t];
nu m[t]=num[t+1];
num[t+1]=temp
[/Quote]
就只是这里出错了吗?
太乙 2010-11-30
  • 打赏
  • 举报
回复

te m p=num[t];
nu m[t]=num[t+1];
num[t+1]=temp
hrx1989 2010-11-30
  • 打赏
  • 举报
回复
调试这个功能还真的不怎么会用呀!!
没有编写大型软件的经验!
edward1992 2010-11-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wyfwx 的回复:]
有个功能叫调试,做软件的人必须会使用它
[/Quote]
我调试了,找不出来~~
wyfwx 2010-11-30
  • 打赏
  • 举报
回复
有个功能叫调试,做软件的人必须会使用它
太乙 2010-11-30
  • 打赏
  • 举报
回复
 
排序函数里交换错了

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧