作业帮 > 综合 > 作业

已知有一个已经从小到大排好顺序的整数数列,若从键盘任意输入一个整数,编写程序将其插入到数列的适当位置,仍保持数列的递增顺

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/26 12:28:13
已知有一个已经从小到大排好顺序的整数数列,若从键盘任意输入一个整数,编写程序将其插入到数列的适当位置,仍保持数列的递增顺序.(提示信息:如有数列2,6,9,12,23,若从键盘输入10,则输出数列为:2,6,9,10,12,23).(c语言)
这个很简单:#include <stdio.h>

// 输入
void input(int a[], int len)
{
    int i = 0;
    while (i < len)
    {
        scanf("%d", &a[i++]);
    }
}

// 输出
void output(int a[], int len)
{
    printf("[ ");
    
    int i = 0;
    while (i < len) printf("%3d ", a[i++]);
    
    printf("]\n");
}

// 排序
void reorder(int a[], int len)
{
    int i, j, index, max;
    for (i = len - 1; i >= 0; i--)
    {
        index   = 0;
        max     = 0;
        for (j = 0; j <= i; j++)
        {
            if (a[j] > max) 
            {
                max = a[j];
                index = j;
            }
        }
        
        a[index] = a[i];
        a[i] = max;
    }
}

// 排序
void inset(int a[], int &len,int x)
{
    int i, j;
a[len]=100000;
for(i=0;i<=len;++i)
{
if(a[i]>x)
break;
}
    for (j=len+1;j>i;j--)
    {
a[j] = a[j-1];
    }
a[i] = x;
len++;
}

int main()
{
    int a[30] = {0};
    int count = 10;
    int x = -1;
    
    printf("Please input %d integers:", count);
    input(a, count);
    
    printf("The numbers you input are:\n");
    reorder(a, count);
    output(a, count);

    printf("Input the number what you want to insert it:\n", x);
scanf("%d",&x);
    inset(a,count,x);
    
    printf("The numbers after you insert are:\n");
    output(a, count);
    printf("\nThanks for your using!\n");
    
    return 0;
}其实可以补充一下:
#include <stdio.h>

// 输入
void input(int a[], int len)
{
    int i = 0;
    while (i < len)
    {
        scanf("%d", &a[i++]);
    }
}

// 输出
void output(int a[], int len)
{
    printf("[ ");
    
    int i = 0;
    while (i < len) printf("%3d ", a[i++]);
    
    printf("]\n");
}

// 排序
void reorder(int a[], int len)
{
    int i, j, index, max;
    for (i = len - 1; i >= 0; i--)
    {
        index   = 0;
        max     = 0;
        for (j = 0; j <= i; j++)
        {
            if (a[j] > max) 
            {
                max = a[j];
                index = j;
            }
        }
        
        a[index] = a[i];
        a[i] = max;
    }
}

// 折半查找
int search(int a[], int begin, int end, int target)
{
    int left    = begin;
    int right   = end;
    int mid     = (left + right) / 2;
    
    if (left >= right)
        return -1;
    
    if (a[mid] == target)
        return mid;
    else if (a[mid] < target)
        return search(a, mid, right, target);
    else
        return search(a, left, mid, target);
}

// 插入
void insert(int a[], int len, int target)
{
    int i = 0;
    int index = -1;
    
    if (target <= a[0]) index = 0;
    else if (target >= a[len - 1]) index = len;
    else
    {
        for (i = 0; i < len; i++)
        {
            if (a[i] < target && a[i + 1] >= target)
            {
                index = i + 1;
                break;
            }
        }
    }
    
    for (i = len; i > index; i--)
    {
        a[i] = a[i - 1];
    }
    
    a[index] = target;
}

// 删除
void del(int a[], int len, int target)
{
    int index = search(a, 0, len, target);
    
    if (index != -1)
    {
        int i = 0;
        for (i = index; i < len; i++)
        {
            a[i] = a[i + 1];
        }
    }
}

int main()
{
    int a[30] = {0};
    int count = 20;
    int index = -1;
    int x = -1;
    
    printf("Please input %d integers:", count);
    input(a, count);
    
    printf("The numbers you input are:\n");
    output(a, count);
    
    printf("Please input the x you want to insert: x = ");
    scanf("%d", &x);
    
    printf("Firstly, we reorder these numbers...\n");
    reorder(a, 10);
    
    printf("Now we get an array like this:\n");
    output(a, 10);
    
    printf("Search %d in the array...\n", x);
    index = search(a, 0, count, x);
    
    if (index == -1)
    {
        printf("We CAN NOT find %d in the array, so we insert it.\n", x);
        insert(a, count, x);
        count++;
    }
    else
    {
        printf("Wow, we found it, so we delete it...\n");
        del(a, count, x);
        count--;
    }
    
    printf("Now let us check up the content in the array:\n");
    output(a, count);
    
    printf("\nThanks for your using!\n");
    
    return 0;
}你可以选择上面那个,下面的就当我写给你观摩的,哈哈
、编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到 编写程序,用scanf函数输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到 编程,任意输入10个整数的数列,输入一个整数插入到数数列中,使数列保持从大到小的顺序. 有n个数,已有小到大的顺序排好,要求输入一个数,将它插入到数列的合适位置,使 从键盘输入一个数,将其插入到有序的数列中去,插入后的数列仍然保持以前的顺序. 10个数,按从大到小排序,输入一个数,插入到原有数列中并保持从大到小的顺序不变,输出该数插入的位置 通过键盘输入一个含有10个整数的数列.编写程序,将10个整数按照从大到小的顺序重新排列,要求输出排序 C/C++ 在已排序好的数列中插入一个数,使数列保持从小到大的顺序. 数据结构 已知一个顺序表递增有序,试设计一种算法,将x插入到表中的适当位置,以保持顺序表的有 编写一个程序,功能是:从键盘上输入任意两位整数,将其十位数字与个位数字交换位置后输出 C语言:用指针编程:有一个数列,含有20个整数,编写函数,要求能够对从指定位置开始的n个数按相反顺序重 1、假设通过键盘输入一个含有10个整数的数列.编写程序,将10个整数按照从大到小的顺序重新排列,要求输出排序后的结果以及