在 C 中将 while 转换为 for
Transform while to for in C
我从 C 开始
我想把 while 改成 for
int test(int nb){
int rv = 0;
if(nb=1)
return (1)
while(rv < nb) { // change this line
if(rv * rv == nb)
return (rv)
rv++;
}
return (0);
}
我能做吗:
for (int rv=0; rv<nb.length; rv++)
感谢您的帮助
for(int rv = 0;rv < nb;rv++) {
并删除 rv++;
所以 for
循环的基本语法是这样的:-
for(initialization; condition; increment){
// your code
}
因此您可以将 while
循环重写为 for
,如下所示:-
for (int rv=0; rv<nb; rv++){
//rest of code
}
您的代码存在的问题是:-
for (int rv=0; rv<nb.length; nb++)
// ^^ nb is integer type so nb.length doesn't make sense
在你的循环中递增 nb
将使你的循环永远迭代。
注意:- if(nb=1)
这里,在 C 中,=
是赋值运算符。要进行比较,您需要使用 ==
.
你可能想要这个:
int test(int nb)
{
if (nb == 1) // << changed = to ==
return (1); // << added missing ;
for (int rv = 0; rv < nb; rv++;) // << modified
{
if(rv * rv == nb)
return (rv); // << added missing ;
}
return (0);
}
但我不确定你的原始代码是否正确。
对于初学者来说,就使用 rv
.
的冗余值而言,while 循环中的条件是多余的
while(rv < nb) { // change this line
if(rv * rv == nb)
return (rv)
rv++;
}
您可以像这样重写循环
while ( rv < nb / rv ) ++rv;
之后
return rv * rv == nb ? rv : 0;
而且当函数参数为无符号整数类型时逻辑上更一致。
可以通过以下方式将上面显示的 while 循环更改为 for 循环
int test( unsigned int n )
{
unsigned int i = 1;
for ( ; i < n / i; i++ );
return i * i == n ? i : 0;
}
我从 C 开始
我想把 while 改成 for
int test(int nb){
int rv = 0;
if(nb=1)
return (1)
while(rv < nb) { // change this line
if(rv * rv == nb)
return (rv)
rv++;
}
return (0);
}
我能做吗:
for (int rv=0; rv<nb.length; rv++)
感谢您的帮助
for(int rv = 0;rv < nb;rv++) {
并删除 rv++;
所以 for
循环的基本语法是这样的:-
for(initialization; condition; increment){
// your code
}
因此您可以将 while
循环重写为 for
,如下所示:-
for (int rv=0; rv<nb; rv++){
//rest of code
}
您的代码存在的问题是:-
for (int rv=0; rv<nb.length; nb++)
// ^^ nb is integer type so nb.length doesn't make sense
在你的循环中递增 nb
将使你的循环永远迭代。
注意:- if(nb=1)
这里,在 C 中,=
是赋值运算符。要进行比较,您需要使用 ==
.
你可能想要这个:
int test(int nb)
{
if (nb == 1) // << changed = to ==
return (1); // << added missing ;
for (int rv = 0; rv < nb; rv++;) // << modified
{
if(rv * rv == nb)
return (rv); // << added missing ;
}
return (0);
}
但我不确定你的原始代码是否正确。
对于初学者来说,就使用 rv
.
while(rv < nb) { // change this line
if(rv * rv == nb)
return (rv)
rv++;
}
您可以像这样重写循环
while ( rv < nb / rv ) ++rv;
之后
return rv * rv == nb ? rv : 0;
而且当函数参数为无符号整数类型时逻辑上更一致。
可以通过以下方式将上面显示的 while 循环更改为 for 循环
int test( unsigned int n )
{
unsigned int i = 1;
for ( ; i < n / i; i++ );
return i * i == n ? i : 0;
}