输入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;}
不知道你这个问题是否已经解决, 如果还没有解决的话:初步思路:
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种操作组合。
代码和注释: