vc 循环结构中退回上一步?

来源:百度知道 编辑:UC知道 时间:2024/05/19 01:57:16
例如在这个循环中我想要在获得-0.1时退回到上一个i,怎么做?
for(i=0;i<n;i++)
{
printf("输入‘%c’的权值,如需修改上个权值,输入‘-0.1’.\n",tree[i].data);
scanf("%f",&f);
if(f!=-0.1)
{
tree[i].weight=f;
}
else if
i=i-1;
}
高手帮帮忙啊

浮点数是不能进行等值(=)比较的,可以比大小(>,<)
要退回到上一个i,可以加代码:i--;

修改如下:
#define EPSILON 0.000001
for(i=0;i<n;i++)
{
printf("输入‘%c’的权值,如需修改上个权值,输入‘-0.1’.\n",tree[i].data);
scanf("%f",&f);
if(f+0.1<EPSILON && f+0.1>-EPSILON )//他跟-0.1差值很小,就认为他们是相等的
{
i--;
}
else
{
tree[i].weight=f;
}

for(i=0;i<n;i++)
{
printf("输入‘%c’的权值,如需修改上个权值,输入‘-0.1’.\n",tree[i].data);
scanf("%f",&f);
if(f != -0.1)
{
tree[i].weight=f;
}
else
{
i = i - 1;
}
}