C小程序的简单题
#include <stdio.h>
int fun3(int m)
{ int i;if(m==2||m==3) return 1;
if(m<2||m%2==0) return 0;
for(i=3;i<m;i=i+2)
if(m%i==0) return 0;return 1;}
void
main()
{ int n;for(n=1;n<10;n++)
if(fun3(n)==1) printf("%d",n);
结果=?
原因请稍加解释。
参考答案:结果是
2357
if(m==2||m==3) return 1; //1
if(m<2||m%2==0) return 0; //2
for(i=3;i<m;i=i+2) if(m%i==0) return 0;//3
return 1;//4
主函数中循环了9次,执行情况如下:
n=1:属于第2种情况,fun3(1)=0,无输出
n=2:属于第1种情况,fun3(2)=1,输出2
n=3:属于第1种情况,fun3(3)=1,输出3
n=4:属于第2种情况,fun3(4)=0,无输出
n=5:属于第2种情况,fun3(5)=0,输出5
n=6:属于第2种情况,fun3(6)=0,无输出
n=7:属于第2种情况,fun3(7)=0,输出7
n=8:属于第2种情况,fun3(8)=0,无输出
n=9:属于第3种情况,fun3(9)=0,无输出
跳出for循环的条件是n=10,也就是说,第9次循环之后,
n++,
n=10,
不满足循环条件,
跳出循环,
此时n=10