C语言编写函数依次实现

分别编写函数依次实现下列功能:
(1)键盘接收或随机生成10个整数,并存入数组a[10]中。
(2)输出形参数组arry中的前n个数据。(其中n作为形参)
(3)删除形参数组arry中第m个数并存入e中(1<=m<=10).(其中m作为形参)
(4)形参数组arry的第k个元素前插入整数data(1<=k<=9).(k,data作为形参)
编写主函数分别调用上面函数,
1.生成10个整数构成的数组a
2.输出10个整数构成的数组a
3.删除数组a的第m个数,(m是键盘接收数值)
4.输出新数组
5.在数组a的第k个元素前插入整数data,(k和data是键盘接收数)6.输出新数组。(多思考)
1.39

【以下回答由 GPT 生成】

首先,我们需要编写一个程序来实现这个问题的要求。以下是对于题目描述中所需函数的具体实现:

  1. 键盘接收或随机生成10个整数,并存入数组a[10]中。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void generateArray(int a[], int size) {
    int i;
    int choice;

    printf("请选择您的输入方式:\n");
    printf("1. 手动输入\n");
    printf("2. 随机生成\n");
    scanf("%d", &choice);

    if (choice == 1) {
        printf("请输入10个整数,用空格或换行符分隔:\n");
        for (i = 0; i < size; i++) {
            scanf("%d", &a[i]);
        }
    } else if (choice == 2) {
        srand(time(0));
        for (i = 0; i < size; i++) {
            a[i] = rand() % 100; // 在0~99之间生成随机整数
        }
    } else {
        printf("输入无效\n");
        exit(1);
    }
}
  1. 输出形参数组array中的前n个数据。(其中n作为形参)
void printArray(int array[], int n) {
    int i;
    for (i = 0; i < n; i++) {
        printf("%d ", array[i]);
    }
    printf("\n");
}
  1. 删除形参数组array中第m个数并存入e中。(其中m作为形参)
void deleteElement(int array[], int m, int *e, int size) {
    if (m < 0 || m >= size) {
        printf("输入的m无效\n");
        exit(1);
    }

    *e = array[m];

    int i;
    for (i = m; i < size - 1; i++) {
        array[i] = array[i + 1];
    }
}
  1. 形参数组array的第k个元素前插入整数data。(其中k和data作为形参)
void insertElement(int array[], int k, int data, int size) {
    if (k < 0 || k >= size) {
        printf("输入的k无效\n");
        exit(1);
    }

    int i;
    for (i = size - 1; i > k; i--) {
        array[i] = array[i - 1];
    }

    array[k] = data;
}

现在我们可以编写主函数来调用这些函数:

int main() {
    int a[10]; // 存储生成的数组
    int n; // 输出数组的前n个元素
    int m; // 要删除的元素的索引
    int e; // 被删除的元素的值
    int k; // 要在k索引位置之前插入元素
    int data; // 要插入的元素的值

    // 生成数组
    generateArray(a, 10);

    // 输出数组
    printf("请输入要输出的前n个元素数目:");
    scanf("%d", &n);
    printArray(a, n);

    // 删除元素
    printf("请输入要删除的元素的索引:");
    scanf("%d", &m);
    deleteElement(a, m, &e, 10);
    printf("被删除的元素的值为:%d\n", e);

    // 输出新数组
    printArray(a, 9);

    // 插入元素
    printf("请输入要插入的元素的索引和值(以空格或换行符分隔):");
    scanf("%d %d", &k, &data);
    insertElement(a, k, data, 10);

    // 输出新数组
    printArray(a, 10);

    return 0;
}

这段代码将完成题目中对问题的要求。如果有任何不清楚的地方,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
#include <stdio.h>

void inputarr(int a[], int n) 
{
    printf("请输入10个整数:\n");
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
}

void printarr(int arr[], int n) 
{
    printf("数组中的前%d个数据为:\n", n);
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

void del(int arr[], int m, int *e) 
{
    *e = arr[m-1];
    for (int i = m-1; i < 9; i++) {
        arr[i] = arr[i+1];
    }
}

void insert(int arr[], int k, int data) 
{
    for (int i = 9; i >= k; i--) {
        arr[i] = arr[i-1];
    }
    arr[k-1] = data;
}

int main() {
    int a[10];
    int n, m, e, k, data;

    // 1.生成10个整数构成的数组a
    inputarr(a, 10);

    // 2.输出10个整数构成的数组a
    printarr(a, 10);

    // 3.删除数组a的第m个数(m是键盘接收的数值)
    printf("请输入要删除的数的位置(1-10): ");
    scanf("%d", &m);
    del(a, m, &e);

    // 4.输出新数组
    printarr(a, 9);
    printf("被删除的数为:%d", e);

    // 5.在数组a的第k个元素前插入整数data(k和data是键盘接收的数)
    printf("请输入要插入的数的位置(1-9): ");
    scanf("%d", &k);
    printf("请输入要插入的数: ");
    scanf("%d", &data);
    insert(a, k, data);

    // 6.输出新数组
    printarr(a, 10);

    return 0;
}