读书人

这个为什么删除不了呢?该怎么处理

发布时间: 2012-02-06 15:52:44 作者: rapoo

这个为什么删除不了呢?
#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");
}
}


[解决办法]
保存选定数组下标的i后面让你改变了
[解决办法]
i 是指向要删除的元素位置的,输出循环的时候又改变了i的值
[解决办法]
if(i!=N)
{
printf("\n 已知的数组为:");
for(i=0;i<N;i++) ////你在这里把i重置了,前面找到的num【i】失效了
{
printf("%.2f ", num[i]);
}


[解决办法]

探讨
if(i!=N)
{
printf("\n 已知的数组为:");
for(i=0;i<N;i++) ////你在这里把i重置了,前面找到的num【i】失效了
{
printf("%.2f ", num[i]);
}

[解决办法]
#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");
}
}

可以得到你想要的结果
[解决办法]
[code=C/C++][/code]#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");
}
}
[解决办法]
晕, 这没什么不明白的吧,i是一个标志,后面你又当做循环控制变量,对其进行复制,怎么能正常输出呢

读书人网 >C语言

热点推荐