带有 for 循环的 Switch case 语句未按预期工作

Switch case statement with for loop not working as expected

这里的障碍是找到一个小数位数相同的数字并用它们做一些数学运算。

我在这里想要实现的只是让 switch/case 语句起作用。

我刚开始编程(ಥ_ಥ)

我这里做错了什么?

我找不到逻辑问题...

#include <bits/stdc++.h>

using namespace std;


int main() {

    int a, add[5]={0};
    for(int i=1; i<=10000; i++){
  switch(i)
        case 1:
            add[0]+=i;
            break;
        case 10:
            add[1]+=i;
            break;
        case 100:
            add[2]+=i;
            break;
        case 1000:
            add[3]+=i;
            break;
        case 10000:
            add[4]+=i;
            break;
    }
    cout<<add[0]<<"\n"<<add[1]<<"\n"<<add[2]<<"\n"<<add[3]<<"\n"<<add[4]<<"\n";
    return 0;
}

如前所述,您缺少两个大括号 {}

只需快速 运行 了解您的代码:您创建了一个从 1 到 10,000 的循环,添加数组以 {1, 10, 100, 1000, 10000} 结束。不知道这是不是设计使然。

int main() {

  int a, add[5] = {0};
  for (int i = 1; i <= 10000; i++) {
    switch (i) // Missing a {
      case 1:
        add[0] += i;
        break;
      case 10:
        add[1] += i;
        break;
      case 100:
        add[2] += i;
        break;
      case 1000:
        add[3] += i;
        break;
      case 10000:
        add[4] += i;
        break;
    // Missing a }
  }
  cout << add[0] << "\n" << add[1] << "\n" << add[2] << "\n" << add[3] << "\n" << add[4] << "\n";
  return 0;
}

If 语句按预期工作。 谢谢你帮助我。

#include <bits/stdc++.h>
int arr[10001]={0};
int main() {
    for(int i=1; i<10000; i++){
        if(i<10)
            arr[i+i]=1;
        else if(i<100)
            arr[i+i/10+i%10]=1;
        else if(i<1000)
            arr[i+i/100+(i%100)/10+i%10]=1;
        else if(i<10000)
            arr[i+i/1000+(i%1000)/100+(i%100)/10+i%10]=1;
        if(arr[i]==0)
            std::cout<<i<<"\n";
    }
    return 0;
}