这道题要求编写一个函数void str_insert (int p[], int x),完成将x按顺序插入到数组p中。然后需要在主函数中测试这个函数。
时间: 2024-02-28 16:53:51 浏览: 42
好的,我明白了。下面是一个示例的代码实现,你可以参考一下:
```c
#include <stdio.h>
#define MAX_SIZE 100
void str_insert(int p[], int x);
int main() {
int p[MAX_SIZE] = {3, 5, 8, 10, 15, 18, 20, 25, 30};
int x = 12;
printf("Before insertion: ");
for (int i = 0; i < 9; i++) {
printf("%d ", p[i]);
}
str_insert(p, x);
printf("\nAfter insertion: ");
for (int i = 0; i < 10; i++) {
printf("%d ", p[i]);
}
return 0;
}
void str_insert(int p[], int x) {
int i = 0;
while (p[i] < x && p[i] != 0) {
i++;
}
if (p[i] == 0) {
p[i] = x;
} else {
for (int j = MAX_SIZE - 2; j >= i; j--) {
p[j + 1] = p[j];
}
p[i] = x;
}
}
```
这个示例代码中,我们定义了一个名为 `str_insert` 的函数,这个函数接受两个参数:一个整型数组 `p` 和一个整数 `x`。在函数内部,我们使用了一个 `while` 循环和一个 `for` 循环来查找 `x` 应该插入到数组 `p` 的哪个位置。然后,我们使用 `for` 循环将数组 `p` 中的元素向后移动一个位置,为新的元素 `x` 腾出位置,并将 `x` 插入到正确的位置。最后,我们在主函数中测试了这个函数,打印出插入前和插入后的数组 `p`,以验证函数的正确性。
请注意,这只是一个示例代码,你可以根据需要进行修改和优化。同时,如果你有任何问题或疑问,请随时提出来,我会尽力帮助你。
阅读全文