用C语言解决软件工程班总计有不超过30个学生,最近又来了一名转专业的新同学(学号为x),老师希望把他插到学生名单里某同学(学号为y)的后面,如果找不到y同学就直接插到名单的最后面。现在请你编写程序,从键盘输入班级所有学生的学号(学号无顺序),再输入新同学的学号x以及某同学的学号y,然后输出插入学号x之后的最终学生名单。学号用int型变量表示。 输入包括两行,第一行是n,x和y 第二行是需要读入的数组元素 输出插入后的数组元素,以空格隔开
时间: 2024-04-02 09:35:46 浏览: 65
这道题可以使用数组来存储学生的学号,然后遍历数组找到要插入的位置,最后输出修改后的数组。
以下是实现这个功能的代码:
```c
#include <stdio.h>
#define MAX_NUM 30
int main() {
int n, x, y;
int a[MAX_NUM];
scanf("%d %d %d", &n, &x, &y);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int pos = n; // 要插入的位置
for (int i = 0; i < n; i++) {
if (a[i] == y) {
pos = i + 1;
break;
}
}
for (int i = n; i > pos; i--) {
a[i] = a[i - 1];
}
a[pos] = x;
for (int i = 0; i <= n; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
首先,我们定义了一个大小为 `MAX_NUM` 的数组 `a` 来存储学生的学号。然后,我们从输入中读取学生人数 `n`、新同学的学号 `x` 和某同学的学号 `y`。接着,我们循环读取每个学生的学号,并存储到数组 `a` 中。
然后,我们通过遍历数组 `a` 来找到要插入的位置 `pos`。如果在数组中找到了学号为 `y` 的同学,那么插入位置就是他的后面;否则,插入位置就是数组的最后一个位置。
接下来,我们需要将插入位置之后的所有元素都向后移动一位,以腾出插入位置。然后,我们将新同学的学号插入到插入位置的位置上,并输出修改后的数组。
阅读全文