continue语句的问题
#include "stdio.h"#include <iostream>
int main(void)
{
double pi=3.14159;
int r;
double area;
for(r=1;r<=10;r++)
{
area=pi*r*r;
if(area>100.0)
{
continue;
}
}
printf("r=%d,area=%g\n",r,area);
system("pause");
return 0;
}
这个程序我使用单步调试的时候,执行到 area=pi*r*r;之后就会跳转到for(r=1;r<=10;r++)了,不检查下面的if语句了,这是什么原因
continue语句的作用是跳过本轮循环,直接进行下一轮循环,你注意看一下area的值。 aswyamato1989 发表于 2015-2-1 20:44
continue语句的作用是跳过本轮循环,直接进行下一轮循环,你注意看一下area的值。
压根没比较,值也是没有比较的结果 #include <stdio.h>
#include <iostream>
int main(void)
{
int m,n;
printf("please in put m:\n");
scanf("%d",&m);
for(n=2;n<=m-1;n++)
{
if(m%n==0)
{
printf("this is not a zhishu.\n");
break;
}
else if(m%n!=0)
{
continue;
}
}
if(m%n!=0)
{
printf("this is a zhishu.\n");
}
system("pause");
return 0;
}
这个程序也不能判断质数,当输入时质数如11时,程序直接退出了 你程序的意图应该是area>100.0时终止循环吧?continue的作用是跳过本次循环进入下一个循环,所以你的if语句相当于是没用的,改成break;就行了,实际上if语句是有在进行的 本帖最后由 曾经的肆无忌惮 于 2015-2-1 22:01 编辑
#include <stdio.h>
#include <iostream>
int main(void)
{
int m,n;
printf("please in put m:\n");
scanf("%d",&m);
for(n=2;n<=m-1;n++)
{
if(m%n==0)
{
printf("this is not a zhishu.\n");
return 0;
}
}
printf("this isa zhishu.\n");
system("pause");
return 0;
}
刚刚说错了,其实程序只要这样写就可以,判断出不是质数的时候直接结束这个程序,如果循环结束了,就代表这是个质数
曾经的肆无忌惮 发表于 2015-2-1 21:45
你程序的意图应该是area>100.0时终止循环吧?continue的作用是跳过本次循环进入下一个循环,所以你的if语句 ...
但是他会先判断if(area>100)是吧,现在的问题,没有进行if的判断 ybyc 发表于 2015-2-1 21:53
但是他会先判断if(area>100)是吧,现在的问题,没有进行if的判断
有、你单步调试的时候指针指在if语句的时候就是在判断了 你的编译器的结果和我的一样吗?
我的是r=11,area=314.159 本帖最后由 曾经的肆无忌惮 于 2015-2-1 22:07 编辑
你自己写的那个判断质数的方法因为n一直在累加,累加到m-1的时候结束循环,此时n的值为m,所以m%n!肯定等于0。循环的时候也不用循环到m-1,因为从m/2后面的数用来除m的时候肯定是有余数的了,最优的是直接判断到m开根号就行 ybyc 发表于 2015-2-1 22:01
你的编译器的结果和我的一样吗?
我的是r=11,area=314.159
vc6.0 ,本来我没改之前和你是一样的答案,你的循环里面if语句写错了,不是没进行判断、要记得continue是结束本次循环进入下一次循环,break;才是跳出循环 你看一下当area = 113.09723999999999就已经进入if语句内了 曾经的肆无忌惮 发表于 2015-2-1 22:12
你看一下当area = 113.09723999999999就已经进入if语句内了
可能是编译器的原因吧,还是谢谢
页:
[1]