题目
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。
解答
代码语言:javascript复制#include <stdio.h>
void deleteNumber(int arr[], int n, int num)
{
int i, j;
for (i = 0; i < n; i ) {
if (arr[i] == num) {
for (j = i; j < n - 1; j )
{
arr[j] = arr[j 1];
}
n--; // 更新数组长度
i--; // 因为删除了一个数字,需要将索引i回退一步
}
}
for (i = 0; i < n; i ) {
printf("%d ", arr[i]);
}
}
int main()
{
int arr[] = {1, 2, 3, 4, 5, 3, 6, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int num = 3;
printf("Original sequence: ");
for (int i = 0; i < n; i ) {
printf("%d ", arr[i]);
}
printf("nSequence after deleting %d: ", num);
deleteNumber(arr, n, num);
return 0;
}
在这个程序中,我们首先定义了一个函数deleteNumber
,该函数接受一个整数数组、数组长度和要删除的数字作为参数。然后我们在main
函数中定义了一个整数数组arr
,并输出原始序列。接着调用deleteNumber
函数删除指定的数字,并输出删除指定数字后的序列。
在函数deleteNumber
中,我们使用两个循环来遍历整数数组。第一个循环用来找到要删除的数字,并将其后面的数字向前移动一个位置。第二个循环用来输出删除指定数字后的序列。