pta数组的各种操作组合

输入n(n<2000),之后输入n个不超过2000的整数到数组a,数组下标从0开始。对数组有以下可选的操作:

1、打印:输出数组所有n个单元的值,空格分开,完成后换行;(注意,末尾不要有多余的空格)

2、倒排:即逆序存放数组a;(不需输出)

3、查找:输入整数x,查找左起第一个在数组中出现的x的位置,输出位置下标并换行,若没找到则输出"Not Found!"并换行;

4、最大值:输出数组的最大值下标及最大值(空格分开)﹐并换行。若有多个相等最大值,选左边起的第一个最大值;

5、求和:输出数组所有n个数的和,并换行。

#include <stdio.h>

int main()
{
    int n, a[2000];  // 定义变量n和数组a
    scanf("%d", &n); // 输入n
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);  // 输入数组a
    }

    int choice;
    scanf("%d", &choice); // 输入操作选择

    switch (choice) {
        case 1:  // 打印数组所有值
            for (int i = 0; i < n; i++) {
                printf("%d", a[i]);
                if (i != n - 1) {  // 最后一个数字不输出空格
                    printf(" ");
                }
            }
            printf("\n");
            break;

        case 2:  // 数组倒序
            for (int i = 0; i < n / 2; i++) {
                int temp = a[i];
                a[i] = a[n - i - 1];
                a[n - i - 1] = temp;
            }
            break;

        case 3:  // 查找
            int x;
            scanf("%d", &x);  // 输入待查找的整数x
            for (int i = 0; i < n; i++) {
                if (a[i] == x) {
                    printf("%d\n", i);
                    return 0;  // 找到后直接返回
                }
            }
            printf("Not Found!\n");  // 没找到输出"Not Found!"
            break;

        case 4:  // 求最大值及下标
            int max_index = 0;
            for (int i = 1; i < n; i++) {
                if (a[i] > a[max_index]) {
                    max_index = i;
                }
            }
            printf("%d %d\n", max_index, a[max_index]);
            break;

        case 5:  // 求和
            int sum = 0;
            for (int i = 0; i < n; i++) {
                sum += a[i];
            }
            printf("%d\n", sum);
            break;

        default:  // 输入了错误的操作选择
            printf("Input error!\n");
            break;
    }

    return 0;
}


#include <stdio.h>

// 定义print_array函数,用于打印数组所有n个单元的值
void print_array(int a[], int n) {
    for (int i = 0; i < n; i++) {
        printf("%d", a[i]);
        if (i != n - 1) {
            printf(" ");
        }
    }
    printf("\n");
}

// 定义reverse_array函数,用于倒排数组a
void reverse_array(int a[], int n) {
    for (int i = 0; i < n / 2; i++) {
        int temp = a[i];
        a[i] = a[n - i - 1];
        a[n - i - 1] = temp;
    }
}

// 定义find_element函数,用于查找左起第一个在数组中出现的x的位置
void find_element(int a[], int n, int x) {
    for (int i = 0; i < n; i++) {
        if (a[i] == x) {
            printf("%d\n", i);
            return;
        }
    }
    printf("Not Found!\n");
}

// 定义max_element函数,用于输出数组的最大值下标及最大值
void max_element(int a[], int n) {
    int max_index = 0;
    for (int i = 1; i < n; i++) {
        if (a[i] > a[max_index]) {
            max_index = i;
        }
    }
    printf("%d %d\n", max_index, a[max_index]);
}

// 定义sum_array函数,用于输出数组所有n个数的和
void sum_array(int a[], int n) {
    int sum = 0;
    for (int i = 0; i < n; i++) {
        sum += a[i];
    }
    printf("%d\n", sum);
}

int main() {
    int n;
    scanf("%d", &n);

    int a[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }

    // 打印数组所有n个单元的值
    print_array(a, n);

    // 倒排数组a
    reverse_array(a, n);

    // 查找左起第一个在数组中出现的x的位置
    int x;
    scanf("%d", &x);
    find_element(a, n, x);

    // 输出数组的最大值下标及最大值
    max_element(a, n);

    // 输出数组所有n个数的和
    sum_array(a, n);
return 0;}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7488388
  • 以下回答来自chatgpt:

    初步思路:

    1.定义int类型数组,从键盘输入n,再输入n个不超过2000的整数到该数组中; 2.定义五个函数: (1)打印数组 print(int n,int a[]) ; (2)倒排数组 void reverse(int a[], int n) ; (3)查找数组中第一个出现的指定整数的位置 int search(int x, int n, int a[]) ; (4)找到数组的最大值 int find_max(int n, int a[]); (5)计算数组中所有元素的和int sum(int n,int a[]); 3.实现5种操作组合。

    代码和注释:


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