题目内容:
请使用指针的方法编写程序,程序的功能是先输入10个整数存储到数组a中,再输入一个指定的数x,把数组中的x数据删除掉,并保证数组中剩余的数还是连续存储的。
比如输入10个整数:3 2 8 6 5 8 7 9 8 5,存入数组,然后输入一个数8,把数组中的8全部删除。最后数组中剩下的数:3 2 6 5 7 9 5,在数组a中还是连续存储的。
要求定义函数实现删除功能:int del_num(int *p, int n, int x);其中函数的返回值为删除指定数后数组中剩余数据的个数。
输入格式:
输入10个整数,和1个指定数。
输出格式:
输出剩余数,以空格隔开,最后一个数后面没有空格。
输入样例:
3 2 8 6 5 8 7 9 8 5
8
输出样例:
3 2 6 5 7 9 5
#include <stdio.h>
int del_num(int *p, int n, int x)
{
int i, j = 0;
for (int i = 0; i < n; i++)
{
if (*(p + i) != x) //重点,指针的使用
{
*(p + j) = *(p + i);
j++;
}
}
return j;
}
int main()
{
int a[10];
int x, newsize;
for (int i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
scanf("%d",&x);
newsize = del_num(a, 10, x);
for (int i = 0; i < newsize; i++)
{
printf("%d", a[i]);
if (i < newsize - 1) printf(" ");
}
return 0;
}
**注意**
指针的计数方式