C FOR 条件

C FOR Condition

我需要创建一个简单的程序,向用户请求 10 个数字,然后显示这些数字的总和,或者,如果用户输入 0,则停止并立即显示这些数字的总和,我需要仅通过使用 "for" 条件来创建它。这是代码:

#include <stdio.h>
int main(){
int num = 0;
for(num = 0; num < 10; num++){
    printf("Input a number: \n");
    scanf("%d", &num);
    if(num == 0){
        printf("Sum: %d\n", num);
    }
}
printf("Sum: %d\n", num);
getchar();
getchar();
}

只有当数字大于“10”时才会停止。怎么了?

您的代码中的问题是,您使用相同的变量 num 作为计数器和获取用户输入,这破坏了 for 循环中的逻辑。

使用另一个变量来获取用户输入。

此外,您必须有一个 break 语句来在您达到中断条件后停止 for 循环。

注意:正如我在评论中提到的,Sum没有逻辑。


检查下面的代码。

#include <stdio.h>
int main(){
        int num = 0;
        int sum = 0;    //to hold the sum
        int input = 0;
        for(num = 0; num < 10; num++){
                printf("Input a number: \n");
                scanf("%d", &input);
                sum += input;                  // yoo-hoo, time to add-up
                if(input == 0){
                        printf("Sum: %d\n", sum);
                        break;               // time to say bye-bye to for loop
                }
        }
        if (num == 10)              //only print if not printed previously
        printf("Sum: %d\n", sum);
        return 0;
}

我想你想用你的代码做这种工作。

#include <stdio.h>
int main(){
int num = 0;
int sum=0;
for(num = 0; num < 10; num++){
   int i;
   printf("Input a number: \n");
   scanf("%d", &i);
   sum = sum+i;
   if(i == 0){
      printf("Sum: %d\n", sum);
      getchar();
      return 0;
   }
}
printf("Sum: %d\n", sum);
getchar();
return 0;
}

您正在更改 for 循环内的计数器值。这就是为什么当你读取一个大于或等于 10 的值时,它会放弃 for 循环,因为你有条件 num < 10.

让我为您调整代码:

#include <stdio.h>
int main(){
    int sum = 0;
    int i;
    int num;
    for(i = 0; i < 10; i++){
        printf("Input a number: \n");
        scanf("%d", &num);
        sum += num;
        if(num == 0){
            break; //means leave the loop
        }
    }
    printf("Sum: %d\n", sum);
    getchar();
    return 0;
}

我使用了 3 个变量:

  1. sum,用于存放总和
  2. i,用作 for loop 计数器。
  3. num,用于存放用户当前给定的号码

首先,我在等待输入:

printf("Input a number: \n");
scanf("%d", &num);

现在,输入存储在 num 中,所以我要升级总和,以添加新值:

sum += num; 

I检查当前数字是否为零;在那种情况下,我将离开循环:

if(num == 0){
   break;
}