这个为什么删除不了呢?

liang800518 2010-05-02 09:27:27
#include <stdio.h>
#define N 5

void main()
{
int i,j;
double num[N] = {23, 42, 67, 89, 91},search;
//num[N] ;

printf("\n 请您输入一个要从已知数组中删除的数:\n");
scanf("%lf", &search);
for(i=0;i<N;i++)
{
if(num[i]==search)
{
break;
}
}

if(i!=N)
{
printf("\n 已知的数组为:");
for(i=0;i<N;i++)
{
printf("%.2f ", num[i]);
}

for(j=(i+1);j<N;j++)
{
num[j-1] = num[j];
}
printf("\n 删除后的数组为:");
for(i=0;i<N;i++)
{
printf("%.2f ", num[i]);
}
printf("\n");
}
else
{
printf("\n 已知数组中没有这个数。\n");
}
}
...全文
92 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ericming200409 2010-05-02
  • 打赏
  • 举报
回复
晕, 这没什么不明白的吧,i是一个标志,后面你又当做循环控制变量,对其进行复制,怎么能正常输出呢
yirenyang 2010-05-02
  • 打赏
  • 举报
回复
#include <stdio.h>
#define N 5

void main()
{
int i;
int j; //记录要删除的数
double num[N] = {23, 42, 67, 89, 91};
double search;

printf("\n请您输入一个要从已知数组中删除的数:\n");
scanf("%lf", &search);

for (i=0; i<N; i++)
{
if (num[i] == search)
{
j = i;
break;
}
}

if (i != N)
{
printf("\n已知数组为:\n");
for (i=0; i<N; i++)
{
printf("%-6.2f", num[i]);
}
printf("\n");

printf("\n删除后的数组为:\n");
for (i=0; i<N; i++)
{
if (i != j)
{
printf("%-6.2f", num[i]);
}
}
printf("\n");
}

else
{
printf("已知数组中没有这个数:\n");
}
}
yirenyang 2010-05-02
  • 打赏
  • 举报
回复
#include <stdio.h>
#define N 5

void main()
{
int i;
int j; //记录要删除的数
double num[N] = {23, 42, 67, 89, 91};
double search;

printf("\n请您输入一个要从已知数组中删除的数:\n");
scanf("%lf", &search);

for (i=0; i<N; i++)
{
if (num[i] == search)
{
j = i;
break;
}
}

if (i != N)
{
printf("\n已知数组为:\n");
for (i=0; i<N; i++)
{
printf("%-6.2f", num[i]);
}
printf("\n");

printf("\n删除后的数组为:\n");
for (i=0; i<N; i++)
{
if (i != j)
{
printf("%-6.2f", num[i]);
}
}
printf("\n");
}

else
{
printf("已知数组中没有这个数:\n");
}
}

可以得到你想要的结果
aleyn 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 falcomavin 的回复:]
if(i!=N)
{
printf("\n 已知的数组为:");
for(i=0;i<N;i++) ////你在这里把i重置了,前面找到的num【i】失效了
{
printf("%.2f ", num[i]);
}
[/Quote]
把上面的第二处的i改为j
黑娃 2010-05-02
  • 打赏
  • 举报
回复
if(i!=N)
{
printf("\n 已知的数组为:");
for(i=0;i<N;i++) ////你在这里把i重置了,前面找到的num【i】失效了
{
printf("%.2f ", num[i]);
}

liang800518 2010-05-02
  • 打赏
  • 举报
回复
不明白啊
非兔子_Logic0 2010-05-02
  • 打赏
  • 举报
回复
i 是指向要删除的元素位置的,输出循环的时候又改变了i的值
昵称很不好取 2010-05-02
  • 打赏
  • 举报
回复
保存选定数组下标的i后面让你改变了
liang800518 2010-05-02
  • 打赏
  • 举报
回复
谢谢大家,我明白了

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧