《C语言及程序设计》实践参考——有序数组中插入数据(函数版)

来源:互联网 发布:ios 用沙盒缓存数据 编辑:程序博客网 时间:2024/06/05 04:34

返回:贺老师课程教学链接  项目要求


【项目1-有序数组中插入数据(函数版)】
  有一个足够“大”的数组a,其中已经存储了n个呈升序排列的数据。调用函数insert(a, n, m),可以将数m插入到a中的合适位置,使其仍然保持升序,并且返回值为数组中有效数字的个数(即原先的n加1)。
  例如,若a中数据为1 7 8 17 23 24 59 62 101,n=9,需要插入的数字m为50,调用函数insert(a, n, m)后,a中数据为1 7 8 17 23 24 50 59 62 101,n=10。
  下面给出了调用函数insert的main函数,请写出insert函数来,实现上述功能。

int main(){    int a[N]= {1, 7, 8, 17, 23, 24, 59, 62, 101};    int i, n=9;    int m =50;    n = insert(a, n, m);   //在长度为n的a数组中插入m,使仍保持有序    for(i=0; i<n; ++i)        printf("%d ", a[i]);    printf("\n");    return 0;}
[参考解答]

#include <stdio.h>#define N 100int insert(int [], int, int);int main(){    int a[N]= {1, 7, 8, 17, 23, 24, 59, 62, 101};    int i, n=9;    int m =50;    n = insert(a, n, m);   //在长度为n的a数组中插入m,使仍保持有序    for(i=0; i<n; ++i)        printf("%d ", a[i]);    printf("\n");    return 0;}int insert(int d[], int n, int m){    int i = n-1;    while(i>=0&&d[i]>m )  //把大数往后“搬”,腾出位置保存n    {        d[i+1] = d[i];        i--;    }    i++;    d[i] = m;   //找到了确定的位置赋值    n++;    return n;   //返回值为数组中新的有效数据的个数}



0 0
原创粉丝点击