我的增量不起作用(c)

时间:2017-06-06 10:42:38

标签: c increment

所以,我有这个代码,最后我有一个退出的增量,当它达到4(输入错误值的4倍),但它不起作用:

int main() {
  int nej;
  printf("1-Triangulo \n");
  printf("2-Division \n");
  printf("3-Menu \n");
  printf("4-Bosque \n");
  printf("0-Salir \n");
  scanf("%d", &nej);
  if (nej == 1) {
    // Ejercicio 1-Triangulo:

    triangulo();
  }

  if (nej == 2) {
    // Ejercicio 2-Division:

    division();
  }

  if (nej == 3) {
    menu();
  }

  if (nej == 4) {
    arboles();
  }

  if (nej == 0) {
    // Salida
    exit(1);
  }

  int nerr = 0;

  while (nej < 0 || nej > 4) {
    nerr++;
    // Contador de error
    if (nerr == 4) {
      exit(1);
    }
  }
}

如何解决此问题?

4 个答案:

答案 0 :(得分:0)

我相信你在while条件下有一个拼写错误

while (nej < 0 || nej > 4) {
...

应该是:

while (nerr < 0 || nerr > 4) {
..

答案 1 :(得分:0)

如果您每次阅读时都初始化int nerr = 0;,则流量永远不会达到退出条件

 int main()
 {
int nej;

int nerr = 0; // Keep the counter outside the loop

while (true){//Start a infinite loop here

printf("1-Triangulo \n");
printf("2-Division \n");
printf("3-Menu \n");
printf("4-Bosque \n");
printf("0-Salir \n");
scanf("%d", &nej);


if (nej == 1) {
  // Ejercicio 1-Triangulo:

  triangulo();
}

if (nej == 2) {
  // Ejercicio 2-Division:

  division();
}

if (nej == 3) {
  menu();
}

if (nej == 4) {
  arboles();
}

if (nej == 0) {
  // Salida
  exit(1);
}



while (nej < 0 || nej > 4) {
  nerr++;
  // Contador de error
  if (nerr == 4) {
    exit(1);
  }
}
}

答案 2 :(得分:0)

nej作为输入,如果输入小于0或大于4,则输入无效,正确的语句为:

if (nej < 0 || nej > 4) {

(而不是whilenej代码块中未更改private function checkIfExsistOffer($offerUrl) { $res = $this->getDoctrine()->getRepository('FactoryMainBundle:Offers') ->createQueryBuilder('o') ->select('o.id') ->where("o.id=:offer") ->setParameter('offer', 1) ->getQuery() ->getSingleResult(); //return single result var_dump($res);die; //test }

答案 3 :(得分:0)

它有以下错误:

  • 代码应位于while循环
  • 应声明变量nerr并在while循环
  • 之外进行初始化
  • 变量nerr应控制while循环

注意:使用多个if即可。但使用switch非常方便和可取。

更正后的代码如下:

 int main() {
   int nej;
   int nerr = 0;
   while (nerr < 4) {
   printf("1-Triangulo \n");
   printf("2-Division \n");
   printf("3-Menu \n");
   printf("4-Bosque \n");
   printf("0-Salir \n");
   scanf("%d", &nej);

   switch(nej){
   case 1:// Ejercicio 1-Triangulo:
     triangulo();
   break;
   case 2:// Ejercicio 2-Division:
     division();
   break;
   case 3:
     menu();
   break;
   case 4:
     arboles();
   break;
   case 0:// Salida
     exit(1);
   break;
   default: 
     nerr++;
   }
     // Reset 'nerr' if any valid vaue is entered by user
     if ((nej >= 0) && (nej <= 4)) {
       nerr = 0;
     }
   }
 }