题目
描述
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。
数据范围:序列长度和序列中的值都满足 1≤�≤501≤n≤50
输入描述:
第一行输入一个整数(0≤N≤50)。
第二行输入N个整数,输入用空格分隔的N个整数。
第三行输入想要进行删除的一个整数。
输出描述:
输出为一行,删除指定数字之后的序列。
1. 输入序列信息
首先,我们需要获取用户提供的整数序列及其长度。为此,我们可以定义一个整型变量来存储序列长度,并使用C语言的scanf()
函数读取用户输入。
int length;
scanf("%d", &length); // 输入序列长度
int sequence[MAX]; // 定义一个足够大的数组来存储整数序列
接着,按照给定的长度length
,利用scanf()
逐个读取用户输入的整数,存入数组sequence
中。
for (int i = 0; i < length; i++) {
scanf("%d", &sequence[i]); // 输入序列中的整数,用空格分隔
}
至此,我们已经成功地将用户提供的整数序列存储在数组sequence
中。
2. 接收待删除整数
接下来,我们要接收用户指定要从序列中删除的整数。同样使用scanf()
函数完成这一任务。
int target;
scanf("%d", &target); // 输入待删除的整数
现在,变量target
中存储了用户希望从序列中移除的整数值。
3. 遍历序列并删除指定整数
为了实现删除操作,我们并不需要真正地从数组中移除元素(这在C语言中通常较为复杂)。相反,我们可以创建一个新的循环,遍历整个序列,仅打印那些与待删除整数target
不同的元素。这样,输出的结果就像是删除了指定整数一样,而原序列中的元素位置关系并未改变。
for (int i = 0; i < length; i++) {
if (sequence[i] != target) { // 如果当前元素不是待删除整数
printf("%d ", sequence[i]); // 输出该元素
}
}
上述代码中,我们使用条件语句检查每个元素是否等于待删除整数target
。如果不是,则将其输出。这样一来,最终的输出结果就是删除指定整数后的序列。
4. 输出修改后的序列
在完成遍历和“删除”操作后,程序已通过printf()
函数将修改后的序列输出到了标准输出。由于我们在第3步的循环中已经完成了输出工作,此处无需额外编写代码。
综上所述,完整的C语言代码如下:
#include <stdio.h>
#define MAX 100
int main() {
int length;
scanf("%d", &length);
int sequence[MAX];
for (int i = 0; i < length; i++) {
scanf("%d", &sequence[i]);
}
int target;
scanf("%d", &target);
for (int i = 0; i < length; i++) {
if (sequence[i] != target) {
printf("%d ", sequence[i]);
}
}
return 0;
}