重写c表达式而不继续并中断

重写c表达式而不继续并中断,c,break,continue,C,Break,Continue,在一次学校练习(纸上)中,我有一个问题: 5) 在不使用“继续”和“中断”的情况下重写代码: for (i = 0; i < N; i++) { scanf("give me an int %d", & a); if (a < 0) { continue; } if (a == 0) { break; } /* elaborate positive int */ } (i=0;i

在一次学校练习(纸上)中,我有一个问题:

5) 在不使用“继续”和“中断”的情况下重写代码:

for (i = 0; i < N; i++) {
    scanf("give me an int %d", & a);
    if (a < 0) {
        continue;
    }
    if (a == 0) {
        break;
    }
    /* elaborate positive int */
}
(i=0;i{ scanf(“给我一个整数%d,&a); if(a<0){ 继续; } 如果(a==0){ 打破 } /*正整数*/ }
我在想:

for(i=0;i<N;i++){

 scanf("give me an int %d",&a");

 if(a==0){return -1; //??i dont know how to exit}
 if(a<0){
  do{
        scanf("give me an int %d",&a");
        if(a==0){return -1; //??i dont know how to exit}
    }while(!(a<0))
 }
 /* elaborate positive int */
}

for(i=0;i不会给出完整的代码,但是:

  • 请记住,您可以在
    for
    语句的
    子句中添加条件。(提示:将中断条件移到此处以终止循环)
  • 在您的示例中,
    是否继续

    • 可能不是老师想要的,但实际上这是最简单的方法:

      a = INT_MAX;
      for(i = 0; i < N && a != 0; i++) {
          scanf("give me an int %d", &a);
          if(a > 0) {
              /* elaborate positive int */
          }
      }
      
      a=INT\u MAX;
      对于(i=0;i0){
      /*正整数*/
      }
      }
      
      不使用
      return
      的原因是您只想退出/重新启动循环。该函数可能包含更多不应跳过的内容

      而且那个
      scanf
      调用看起来是错误的..你真的想每次都为(i=0;ifor(i = 0; i < N && a != 0; i++) { scanf("give me an int %d",&a"); if(a>0) { /*do stuff*/ } } if(a==0) i--; //As noted by Daniel Fischer
{ scanf(“给我一个整数%d,&a”); 如果(a>0) {/*做事*/} } 如果(a==0)i--;//如Daniel Fischer所述
在这种特定情况下,不需要做太多工作。由于
a<0
a==0
是相互排斥的条件,因此可以按如下方式使用if-else-if语句:

for (i = 0; i < N; i++)
{
    scanf("give me and int %d", &a);

    if (a < 0)
        // Do something or nothing here, but this skips the rest of the loop
        // body just like continue would.
    else if (a == 0)
        i = N; // This satisfies the loop condition, so it won't loop again
               // just like break would.
}
(i=0;i { scanf(“给我和int%d”和&a); if(a<0) //在这里做点什么或什么都不做,但这会跳过循环的其余部分 //身体就像你一样。 如果(a==0),则为else i=N;//这满足循环条件,因此不会再次循环 //就像休息一样。 }
这不是一个通用的解决方案,但在这种情况下,它应该给你正确的行为。

我不知道我的老师想要什么。但我认为这段代码应该可以!;)太好了。下次请尝试自己解决它,而不是让你自己做作业:)这不是真正的“作业”“,我正在准备C语言的工程考试,这是pastLucian的一道试题,我可以用其中的条件作为参数。。谢谢不完全一样,随着
中断
i
的增量会减少一次。这个答案应该是CW,我实施的建议比我实际想到的要多!continue用于保持在循环内,直到输入非负数。