重写c表达式而不继续并中断
在一次学校练习(纸上)中,我有一个问题: 5) 在不使用“继续”和“中断”的情况下重写代码:重写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
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用于保持在循环内,直到输入非负数。