这个为什么删除不了呢?#include stdio.h#define N 5void main(){int i,jdouble num[N] {23, 42, 67,
这个为什么删除不了呢?
#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]);
}
[解决办法]
[解决办法]#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是一个标志,后面你又当做循环控制变量,对其进行复制,怎么能正常输出呢