删除指定的数
题目:
先输⼊5个整数存放在数组中,再输⼊⼀个整数n,删除数组中所有等于n的数字,数组中剩余的数
组保证数组的最前⾯,打印剩余的数字。
思路:
使⽤两个指针 i 和 j 。
1. i 从前往后扫描整个数组, j 记录当前剩余的数字应该放在数组的哪个位置。
2. 如果当前数字不等于给定整数,就将该数字放在数组中的位置 j ,然后将 j ⾃增 1。
3. 这样, j 指向的位置就是数组中下⼀个剩余数字应该放置的位置。
4. 最后, j 的值为删除后的数组⻓度,将数组中前 j 个数输出即可。
代码实现:
#include<stdio.h>
int main() {
int arr[5] = { 0 };
int del = 0;
int i = 0;
for (i = 0; i < 5; i++) {
scanf("%d", &arr[i]);
}
scanf("%d", &del);
int j = 0;
for (i = 0; i < 5; i++) {
if (del != arr[i]) {
arr[j++] = arr[i];
}
}
for (i = 0; i < j; i++) {
printf("%d ", arr[i]);
}
return 0;
}
结果:
scanf()返回值:
scanf() 的返回值是⼀个整数,表⽰成功读取的变量个数。
如果没有读取任何项,或者匹配失败,则返回 0 。如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量 EOF。