随机输入20个整数:1)删除第五个和第十个位置的整数后输出整数集合。2)输出排序后的整数集合。3)将数值10插入到排序后整数集中的合适位置。用c语言代码实现
时间: 2024-09-18 21:01:49 浏览: 43
以下是使用 C 语言实现随机输入20个整数并满足您所描述需求的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 函数声明
void delete_numbers(int arr[], int n, int pos1, int pos2);
void sort_array(int arr[], int n);
int find_insertion_index(int arr[], int n, int val);
int main() {
srand(time(0)); // 初始化随机数生成器
// 生成并存储20个随机整数
int arr[20];
for (int i = 0; i < 20; ++i) {
arr[i] = rand() % 100; // 生成0到99之间的随机数
printf("%d ", arr[i]);
}
printf("\n");
// 删除第五个和第十个位置的整数
delete_numbers(arr, 20, 4, 9);
printf("删除第5和第10位后: ");
for (int i = 0; i < 16; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
// 排序数组
sort_array(arr, 16);
printf("排序后: ");
for (int i = 0; i < 16; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
// 将数值10插入到排序后的合适位置
int new_val = 10;
int insert_pos = find_insertion_index(arr, 16, new_val);
arr[insert_pos] = new_val;
printf("插入10后: ");
for (int i = 0; i < 17; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
// 删除指定位置的整数
void delete_numbers(int arr[], int n, int pos1, int pos2) {
if (pos1 >= 0 && pos1 < n && pos2 >= 0 && pos2 < n) {
memmove(&arr[pos1], &arr[pos1 + 1], sizeof(int) * (n - pos1));
n--;
}
}
// 冒泡排序函数
void sort_array(int arr[], int n) {
for (int i = 0; i < n - i; ++j) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 插入排序查找位置的辅助函数
int find_insertion_index(int arr[], int n, int val) {
for (int i = 0; i < n; ++i) {
if (arr[i] > val) {
return i;
}
}
return n;
}
```
这个程序首先创建一个包含20个随机整数的数组,然后按照您的要求删除第5个和第10个元素,接着对剩余的数组进行排序,并在排序后的数组中找到并插入值10。
阅读全文