在学校练习(纸上)我有这个问题:
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 */
}
但是,我实际上无法做到这一点..你能帮助我吗?谢谢:)
答案 0 :(得分:2)
可能不是你老师想要的,但这实际上是最简单的方法:
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 ..”
答案 1 :(得分:1)
for(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
答案 2 :(得分:0)
不会给你完整的代码,但是:
for
语句的子句中添加条件。 (提示:在那里移动破坏条件以终止循环)continue
实际上是否在您的示例中执行了任何操作?答案 3 :(得分:0)
在这种特定情况下,不需要做太多工作。由于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.
}
这不是一般解决方案,但在这种情况下应该给你正确的行为。