![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
一道关于c语言代码的题目,求大佬指点迷津
定义一个可以保存10个元素的一维数组,从终端输入10个元素,实现一个函数可以删除数组中指定的元素,如果不存在,提示删除失败!要求有函数设计。输出删除后数组中元素的值。这题...
定义一个可以保存10个元素的一维数组,从终端输入10个元素,实现一个函数可以删除数组中指定的元素,如果不存在,提示删除失败!要求有函数设计。输出删除后数组中元素的值。这题的代码应该怎么写?
展开
1个回答
展开全部
#include <stdio.h>
/*如果用数组的话必须设置一个元素代表删除的数这里用"-1",链表的话就不用了删除直接释放内存就好*/
void CreatArray();
int FindNum();
void PrintNum();
int num[10] = { 0 };//初始化数组
int main()
{
CreatArray();
if (FindNum() == 1)
PrintNum();
else
printf("查找失败,没有这个元素!");
getchar();
return 0;
}
void CreatArray()
{
printf("输入10位数:");
for (int i = 0; i < 10; i++)
scanf("%d", &num[i]);
}
int FindNum()
{
int m = 0;//查找失败返回值
int x;
printf("输入你要查找的元素:");
scanf("%d", &x);
for (int i = 0; i < 10; i++)
{
if (num[i] == x)
{
for (; i < 9; i++) //删除的数之后的数往前移
num[i] = num[i + 1];
num[i] = -1;
m = 1;
}
}
return m;
}
void PrintNum()
{
printf("删除后的数为:");
for (int i = 0; i < 10; i++)
{
if (num[i] == -1)
break; //如果找到-1结束查找
else
printf("%d ", num[i]); //打印-1之前的元素
}
printf("\n");
}
/*如果用数组的话必须设置一个元素代表删除的数这里用"-1",链表的话就不用了删除直接释放内存就好*/
void CreatArray();
int FindNum();
void PrintNum();
int num[10] = { 0 };//初始化数组
int main()
{
CreatArray();
if (FindNum() == 1)
PrintNum();
else
printf("查找失败,没有这个元素!");
getchar();
return 0;
}
void CreatArray()
{
printf("输入10位数:");
for (int i = 0; i < 10; i++)
scanf("%d", &num[i]);
}
int FindNum()
{
int m = 0;//查找失败返回值
int x;
printf("输入你要查找的元素:");
scanf("%d", &x);
for (int i = 0; i < 10; i++)
{
if (num[i] == x)
{
for (; i < 9; i++) //删除的数之后的数往前移
num[i] = num[i + 1];
num[i] = -1;
m = 1;
}
}
return m;
}
void PrintNum()
{
printf("删除后的数为:");
for (int i = 0; i < 10; i++)
{
if (num[i] == -1)
break; //如果找到-1结束查找
else
printf("%d ", num[i]); //打印-1之前的元素
}
printf("\n");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询