1215787625 发表于 2023-10-30 10:30:34

运行不了

#include <stdio.h>
#include <math.h>
int main()
{
   int a;
   do{
   scanf("%d ",&a);
   int sum = 0;
   if(a>0&&a%2==0)
   sum += a;
   int b = 0;
   b = ++b;
   }while(b<6);
   printf("%d",sum);
   

   return 0;
}

isdkz 发表于 2023-10-30 10:30:59

问题在于变量b的作用域问题。在do-while循环中,变量b的定义和初始化在循环体内部,而循环条件判断的时候,变量b已经超出了作用域。因此,编译器会报错,提示变量b未定义。

要解决这个问题,可以将变量b的定义和初始化放在循环体外部,这样就可以在循环条件判断的时候使用变量b了。修改后的代码如下所示:

#include <stdio.h>
#include <math.h>

int main() {
    int a;
    int b = 0; // 将变量b的定义和初始化放在循环体外部
    int sum = 0; // 将变量sum的定义和初始化放在循环体外部

    do {
      scanf("%d", &a);

      if (a > 0 && a % 2 == 0) {
            sum += a;
      }

      b = ++b;
    } while (b < 6);

    printf("%d", sum);

    return 0;
}


这样修改之后,代码就可以正确运行了。
页: [1]
查看完整版本: 运行不了