程序填空:输入10个互不相同的整数并保存在数组中,找到该最大元素并删除它,输出删除后的数组#include<stdio.h> int main() { int a[10]; /Begin/ /End*/ return 0; }
时间: 2024-12-08 08:20:21 浏览: 12
为了实现这个功能,我们可以先填充数组`a`,然后找到最大元素的下标,最后删除它并重新打印数组。这是完整的程序:
```c
#include <stdio.h>
#include <stdlib.h>
void fill_array(int a[], int size) {
int i, x;
for (i = 0; i < size; i++) {
x = rand() % size; // 生成一个0到size-1之间的随机数
while (i != x) { // 确保元素不重复
x = rand() % size;
}
a[i] = x;
}
}
// 找到最大元素的下标
int findmax(int *s, int size, int *k) {
int p;
for (p = 0, *k = 0; p < size; p++) {
if (s[p] > s[*k]) {
*k = p;
}
}
return *k;
}
void remove_max(int *arr, int size) {
int max_index = findmax(arr, size, &max_index);
arr[max_index] = arr[size - 1] = 0; // 清除最后一个元素
size--;
}
int main() {
int a[10];
fill_array(a, 10); // 填充数组
printf("Original array: \n");
for (int i = 0; i < 10; i++) {
printf("%4d", a[i]);
if ((i + 1) % 5 == 0) {
printf("\n");
}
}
int max_index;
remove_max(a, 10); // 删除最大元素
printf("\nArray after removing the maximum: \n");
for (int i = 0; i < 9; i++) { // 注意这里是9,因为数组长度减1
printf("%4d", a[i]);
if ((i + 1) % 5 == 0) {
printf("\n");
}
}
return 0;
}
```
阅读全文