【问题标题】:Convert a `while` loop to a `for` loop将 `while` 循环转换为 `for` 循环
【发布时间】:2016-02-08 17:58:18
【问题描述】:

我是 C 新手,不确定我的循环是否正确转换。

while(a<b--)
{
    do
    {
        d+=a++;
    }
    while(a!=c);
    c+=a&b;
 }

这是我的循环

for( ; a<b ; b--)
{
    d += a++;
    for( ; a != c ; a++)
    {
        c+= a&b
    }   
}

我知道这可能既简单又愚蠢,但我希望你能帮助我 :) 谢谢

【问题讨论】:

  • 不,b-- 时间不对。
  • 运行它,看看你是否仍然得到相同的答案......
  • @takendarkk:在像 C 这样有可能出现未定义行为的语言中,这是一个不好的建议。
  • 最好的建议是什么都不做,然后在这里发帖?
  • 那么……有人能写对吗?

标签: c loops while-loop


【解决方案1】:

我认为应该是这样的:

for(;a<b--;){ 
for(d += a++ ; a != c ; )
{
  d += a++; 
}    
c+= a&b
}

以上逻辑有效!

我运行两个程序如下,它们输出相同的结果:

Program1:[源自您的程序 1]

#include<stdio.h>
int main(){

int a=10,b=10,c=10,d=10;

while(a<b--)
{
do
{
    d+=a++;
}
while(a!=c);
c+=a&b;
}
printf("a=%d\tb=%d\tc=%d\td=%d",a,b,c,d);
}

它会输出这个:

a=10    b=9 c=10    d=10

同样改变 Program2 :[按要求]

#include<stdio.h>
int main(){

int a=10,b=10,c=10,d=10;

for(;a<b--;){
for(d += a++ ; a != c ; )
{
d += a++;
}
c+= a&b;
}
printf("a=%d\tb=%d\tc=%d\td=%d",a,b,c,d);
}

它的输出是一样的:

a=10    b=9 c=10    d=10

【讨论】:

  • 这篇文章首先增加了a++,然后在循环中增加了两次。问题的while 循环在循环中只增加一次a。
  • 条件a在哪里
  • 哎呀...忘了...等等
  • for (;a
  • @Krejw:查看帖子
猜你喜欢
  • 2018-02-22
  • 2017-04-26
  • 2018-08-19
  • 1970-01-01
  • 2022-12-04
  • 2020-06-20
  • 1970-01-01
相关资源
最近更新 更多