简单C语言函数题,急急急!!!!!

向一个已经排好序的数组a中插入一个数,要求插入后数组仍按原来的规律排序,然后再将该数组的第3个元素删除,请编程实现该操作并显示插入和删除以后的数组。(以6-1.c保存并提交)
//使用函数解决上述问题,需要定义以下函数:
//1.实现排序(若给定数组元素已排序,可省略)
//2.实现插入数据
//3.实现删除数据
//4.实现数组元素的输出
注:我是初学者,要能让我看懂

第1个回答  2014-05-20
#include "stdio.h"
#include "stdlib.h"

int a[20] = { 5,2,4,5,6,7,8,2,1,7};

int cmp(const void *a, const void *b)
{
return*(int*)a - *(int*)b;
}

int main()
{
void insert(int); //插入一个值为参数的数据
void deletenum(int); //删除第i-1个数据
int i;
for (i = 0; i < 10; i++)
printf("%d", a[i]); //输出初始数据
printf("\n");
qsort(a,10,sizeof(a[0]), cmp);
for (i = 0; i < 10; i++)
printf("%d", a[i]); //输出排序后的数据
printf("\n");
insert(5); //插入数据
for (i = 0; i < 11; i++)
printf("%d", a[i]); //输出插入后的数据
printf("\n");
deletenum(1); //删除首数据
for (i = 0; i < 10; i++)
printf("%d", a[i]); //输出删除后的数据
printf("\n");
}

void insert(int b)
{
a[10] = b;
qsort(a, 11, sizeof(a[0]), cmp);
}
void deletenum(int b)
{
a[b] = a[10];
a[10] = 0;
qsort(a, 10, sizeof(a[0]), cmp);
}
第2个回答  2014-05-20
#include<stdio.h>
#define LEN 5
int main(void)
{
    int a[10] = {1,3,5,7,9};
    int insert_value;
    int i, j;
    scanf("%d", &insert_value);//输入插入值
    for(i = 0; insert_value > a[i] && i < LEN; i++);//定位下标

    for(j = LEN; j > i; j--)//移位
        a[j] = a[j - 1];
    a[i] = insert_value;//插入

    for(i = 0; i < LEN + 1; i++)
        printf("%d ", a[i]);//打印插入后的数组
    printf("\n");

    for(i = 2; i < LEN + 1; i++)
        a[i] = a[i + 1];//移位覆盖第三个数
    for(i = 0; i < LEN; i++)//打印删除后的值
        printf("%d ", a[i]);

    printf("\n");
    return 0;
}

很晚了,如果明天还需要的话,我再帮你修改了。。上午没有空。

第3个回答  2014-05-20
帮别人写了几次代码,就说了声谢谢,分倒是忘了给!
第4个回答  2014-05-20
给我十分钟时间追问

请快点!

追答

#include
void bubble_sort(int *a,int n) //冒泡排序
{
int i,j,t;
for(i=0;i=3) {Delete(a,n);n=n-1;} //如果数组长度大于等于3,则删除第3个元素

n=n-1;

PRINT(a,n);
return 0;
}

追问

能再注释一下哪个是哪个函数吗?请

追答

#include
void bubble_sort(int *a,int n) //实现排序
{
int i,j,t;
for(i=0;i=3) {Delete(a,n);n=n-1;} //如果数组长度大于等于3,则删除第3个元素,实现删除数据

PRINT(a,n); //输出,实现数组元素的输出

return 0;
}

追问

运行不了啊,亲

追答

#include<stdio.h>

void bubble_sort(int *a,int n)      //实现排序

{

int i,j,t;

for(i=0;i<n-1;i++)

{

for(j=1;j<n;j++)

{

if(a[j]<a[j-1]) {t=a[j-1];a[j-1]=a[j];a[j]=t;}

}

}


}


void charu(int *a,int n)                                //插入元素,实现插入数据

{

int x;

printf("输入要插入的元素:\n");

scanf("%d",&x);


a[n]=x;

n=n+1;


bubble_sort(a,n);


}


void Delete(int *a,int n)                               // 删除第三个元素,实现删除数据

{

int i;  

for(i=2;i<n-1;i++)

a[i]=a[i+1];

}


void PRINT(int *a,int n)                                  //输出,实现数组元素的输出

{

int i;

for(i=0;i<n;i++)

printf("%d ",a[i]);

}

int main()

{

int a[100],n,i;


printf("输入初始数组长度:\n");

scanf("%d",&n);

printf("输入数组元素(用空格分开):\n");

for(i=0;i<n;i++)

scanf("%d",&a[i]);


bubble_sort(a,n);  //排序


charu(a,n);        //插入元素

n=n+1;


if(n>=3) {Delete(a,n);n=n-1;}    //如果数组长度大于等于3,则删除第3个元素,实现删除数据


PRINT(a,n);            //输出,实现数组元素的输出


return 0;

}



本回答被提问者采纳