关于c语言排序后插入元素的问题

来源:百度知道 编辑:UC知道 时间:2024/09/19 16:49:37
我从键盘输入5个数后排序,然后再插入一个数
这是我的程序:
#include"stdio.h"
void seq(int a[],int);
void output(int a[],int);
void insert(int a[],int);
main()
{
int a[10];
seq(a,9);
output(a,9);
insert(a,9);
}
void seq(int p[],int m)
{
int i,j,min,t;
for(i=0;i<m-4;i++)
scanf("%d",p+i);

for(i=0;i<=m-4;i++)
{
min=i;

for(j=i+1;j<m-4;j++)
{
if(p[min]>p[j])
{
t=p[min];
p[min]=p[j];
p[j]=t;
}
}
}
}
void output(int p[],int m)
{
int i;
for(i=0;i<m-4;i++)
printf("%d ",p[i]);
}
void insert(int p[],int m)
{
int i,j,n;
printf("\nplease input a number:");
scanf("%d",n);
for(i=0;i<m-4;i++)
{
if(n<p[i])
{
for(j=m-4;j>=i;j--)
p[j+1]=p[j

你定义的函数里的数组应该有具体的元素个数啊!像a[5]这样的.
还有就是定义函数后面应该有变量名,不能只一个int就放在那里

#include<stdlib.h>
#include<stdio.h>
main()
{
int i,j,k,a[9]={1,2,3,4,5,7,8,9,10},b[10]={0};
scanf("%d",&k);
for(i=0;i<=8;i++)
printf("%3d",a[i]);
printf("\n");
for(i=0;i<=8;i++)
if(k<=a[i]){
b[i]=k;
break;
}

for(j=9;j>i;j--)
b[j]=a[j-1];

for(j=0;j<i;j++)
b[j]=a[j];
for(j=0;j<=9;j++)
printf("%3d",b[j]);

system("pause");}
插入的时候再好再重新定义一个数组。。。要不会出现越界的现象。楼主看一下我这个单独进行插入一个数的。
有问题可以hi我。大写一起讨论

刚才有人求这样的程序,我跟他写了个,我看到你写的程序太多调用函数了,有点花,你看下我写的吧:觉得简单的话,顶个!!!!(你的两个问题好像挨在一起,而且都是一样的问题呢)
其实主要就是两个过程,一排序,二插入,排序我用的选择法,插入的算法就是你先判断你要插入的数刚好比排好序中大的那个数的位置,然后将其后的数后移一个位置,腾出一个空间来给这个插入的数,值得