如何将此while循环转换为for循环?

时间:2021-05-26 13:44:45

标签: c for-loop while-loop

#include <stdio.h>

int main ()
{ 
int num, sum=0;
printf("Please enter a number: ");
scanf("%d",&num);

while (num>0)
{
    sum += num;
    printf("Please enter a number: ");
    scanf("%d",&num);
}

printf ("Sum = %d ", sum);
return 0;
}

这是我做的。 我试图转换这个 while 循环,它添加数字直到用户输入 0 到 for 循环。我可以知道我的错误是什么吗?

    #include <stdio.h>
    int main ()

    {
    int num;

    printf("Enter a number: ");
    scanf("%d", &num);

    int sum=0;

    for (int i=num; i!=0; )
    {
        sum += num;
        printf("Enter a number: ");
        scanf("%d", &num);
    }

    return 0;
}

3 个答案:

答案 0 :(得分:2)

您只在循环中更新 "hits": [ { "_index": "67706115", "_type": "_doc", "_id": "1", "_score": 1.0, "_source": { "name": "multi grain bread" } }, { "_index": "67706115", "_type": "_doc", "_id": "2", "_score": 1.0, "_source": { "name": "breadsticks with soup" } } ] num。用作循环条件的 sum 不会更新。您应该删除未正确使用的变量 i,并修复循环条件。

i

答案 1 :(得分:1)

为什么您认为 for() 循环是必要的?最好不要重复调用 scanf(),而是使用 while 循环。例如:

int main(void) {
    int num, sum=0;

    while (1) {
        printf("Enter a number: ");
        if (scanf("%d", &num) != 1) break;  // exit if there is no more input
        if (num == 0) break;                // also exit if 0 is entered
        sum += num;
    }
    printf("Total = %d\n", sum);
    return 0;
}

答案 2 :(得分:0)

可以使用无限循环并插入跳转语句来终止循环。在这种情况下:-

#include <stdio.h>

int main ()
{ 
int num, sum=0;
printf("Please enter a number: ");
scanf("%d",&num);

for(;;)  // pretty common and casual way of running an infinite for-loop
{
    if (num <= 0)  // executes if num is less than or equals 0
    {
        break;     // when break is executed this 'for' loop is terminated
    }

    sum += num;
    printf("Please enter a number: ");
    scanf("%d",&num);
}

printf ("Sum = %d ", sum);
return 0;
}