c - 重写 C 表达式,无需 continue 和 break

标签 c break continue

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

5)重写代码,不使用 continue 和 break:

for (i = 0; i < N; i++) {
    scanf("give me an int %d", & a);
    if (a < 0) {
        continue;
    }
    if (a == 0) {
        break;
    }
    /* elaborate positive int */
}
<小时/>

我正在考虑这个:

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 */
}

但是,我实际上无法做到这一点..你能帮助我吗?谢谢:)

最佳答案

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

a = INT_MAX;
for(i = 0; i < N && a != 0; i++) {
    scanf("give me an int %d", &a);
    if(a > 0) {
        /* elaborate positive int */
    }
}

不使用return的原因是您只想退出/重新启动循环。该函数可能包含更多不应跳过的内容。

那个 scanf 调用看起来是错误的..你真的想每次都输入“给我一个 int ..”吗?

关于c - 重写 C 表达式,无需 continue 和 break,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319198/

相关文章:

c - 在特定接收器传输了多少数据

javascript - 使用 for 循环、break 和 continue 查找字母 "x"在句子中出现的次数

Java - 在 for 循环中使用 "continue"时出现未处理的异常错误?

java - Java 中的分支和循环(break 和 continue)

模拟继续引发错误的 Lua goto 语句

c - 是否可以读取为 TCP 写入套接字缓冲的字节数?

c - DBUS 服务器崩溃

insert - Lua:防止二进制代码中的回车

arrays - OCaml 中的 "Break"for 循环

c - 如何查找 IPv6 套接字的scope_id