使用指针设计程序:遍历一维数组,查找输入的一个数,找到次数首次出现的位置后删除此数,然后输出数组;否则输出“查无此数”
代码参考如下:
#include<stdio.h>
int main()
{
int n;
printf("Input n:");
scanf("%d", &n);
printf("Input %d numbers:", n);
int *p, a[n], i;
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
p = a;
printf("\nBefore:");
for (int i = 0; i < n; i++) {
printf("%4d", *(p + i));
}
int m;
printf("\nInput search number:");
scanf("%d", &m);
for (i= 0; i < n; i++) {
if (m == *(p + i))
break;
}
if (i == n)
{
printf("查无此数\n");
}
else
{
int j;
for (j = i; j < n - 1; j++) {
*(p + j) = *(p + j + 1);
}
printf("After:");
for (i = 0; i < n - 1; i++) {
printf("%4d", *(p + i));
}
}
return 0;
}
如有帮助,欢迎采纳哈!
循环搜索就好了啊,找到后,就把后续元素全部向前移动一个位置
#include<stdio.h>
int main()
{
int a[10],t,*p;
printf("请输入数组:");
for(p=a;p<a+10;p++)
scanf("%d",p);
for(p=a;p<a+10;p++)
printf("%d ",*p);
printf("请输入待查找的数:");
scanf("%d",&t);
for(p=a;p<a+10;p++)
{
if(*p == t)
{
for(;p<a+9;p++)
*p = *(p+1);
break;
}
}
if(p==a+10)
printf("没有这个数");
else
{
for(p=a;p<a+9;p++)
printf("%d ",*p);
}
return 0;
}