哪位帮忙说下,这段程序怎样插入排序

wohu007 2011-07-12 09:53:23
#include <stdio.h>
#define N 20
main()
{int a[10],s;
int i,j,temp;
printf("请输入学生成绩\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++) /*冒泡法排序: 如果有n个数,则需要进行n-1趟比较;
第j趟比较中要进行n-j 次两两比较 */
for(i=0;i<10-j;i++)
if(a[i]<a[i+1])
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}

for(i=0;i<10;i++)
printf("%d\n",a[i]);
printf("请输入另外一个数\n");
scanf("%d\n",&s);
for(i=0;i<N;i++)
{ if( s>a[i]&& s<a[i+1])
{ for(j=N-2;j>=i+1;j--)
a[j+1]=a[j];
}
a[i+1]=s;
}
for(i=0;i<N;i++)
printf("%d\n",a[i]);

}
要实现插入一个数s,然后按照以前的顺序输出,怎样改呢?望赐教
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hedy007 2011-07-13
  • 打赏
  • 举报
回复
fflush(stdin);是清输入缓冲区的
前面定义的是
int a[N]={0},s=0;
wohu007 2011-07-12
  • 打赏
  • 举报
回复
fflush(stdin);
是什么意思?另外j=10时 while(j > 0 && s > a[j])
a[j]超出了范围啊?
hedy007 2011-07-12
  • 打赏
  • 举报
回复

#include <stdio.h>
#define N 20
main()
{
int a[N]={0},s=0;
int i,j,temp;
printf("请输入学生成绩\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++) /*冒泡法排序: 如果有n个数,则需要进行n-1趟比较;
第j趟比较中要进行n-j 次两两比较 */
for(i=0;i<10-j;i++)
if(a[i]<a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}

for(i=0;i<10;i++)
printf("%d\n",a[i]);
printf("请输入另外一个数\n");
fflush(stdin);
scanf("%d",&s);
j=10;

while(j > 0 && s > a[j])
{
a[j]=a[j-1];
j--;
}
a[j]=s;

for(i=0;i<11;i++)
printf("%d\n",a[i]);
return 0;
}


将scanf("%d\n",&s);改成scanf("%d",&s);
hedy007 2011-07-12
  • 打赏
  • 举报
回复

scanf("%d\n",&s);
j=10;

while(j > 0 && s > a[j])
{
a[j]=a[j-1];
j--;
}
a[j]=s;

for(i=0;i<11;i++)
printf("%d\n",a[i]);
c_losed 2011-07-12
  • 打赏
  • 举报
回复
插的位置?

69,371

社区成员

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

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