作业帮 > 综合 > 作业

搞不懂这个题,#include int isprime(int m) { int i; for(i=2;m%i!=0;i

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 15:35:42
搞不懂这个题,
#include
int isprime(int m)
{
int i;
for(i=2;m%i!=0;i++);
return i==m;
}
main()
{
int m=5;
while(isprime(m))
{
printf("yes!%d\n",m);
m++;
}
printf("not!%d\n",m);
getch();
}
这个题的for语句后为什么会有‘;’号,这是我第一次见到,有分号的时候结果是:yes!5 not!6,在没有‘;’的时候结果是:not!5,我是第一次遇到这种题,
还有那后面的return 如果for是个空循环只执行一次,那当m==5的时候在isprime是怎么取得返回值的?
楼上两位在说什么啊,简直是在误人子弟.
其实也没有什么,有‘;’号表示该循环没有循环体或者是循环体是空语句什么也不执行(c语言允许空语句),相当于只是i在自增,当m%i!=0为假时退出循环.
第一次调用int isprime(int m)时,m=5,循环for(i=2;m%i!=0;i++)退出时,i=5;则函数返回1(i==m值是1).while(isprime(m))条件为真执行输出yes!5.m++,m=6.
第二次调用int isprime(int m)时,m=6,循环for(i=2;m%i!=0;i++)退出时,i=2;则函数返回0(i==m值是0).while(isprime(m))条件为假则退出循环.执行输出not!6.
若没有分号,则:第一次调用int isprime(int m)时,m=5,执行循环体return i==m 时返回0(因为此时i=2),结束函数调用.while(isprime(m))条件为假则退出循环.执行输出not!5.