C语言菜鸟问题,求知者讲解一下!
#include<stdio.h>voidmain(){inta,b;for(a=2;a<=100;a++)//取100以内所有的数{for(b=2;b<a;b++)//...
#include <stdio.h>
void main()
{
int a,b;
for(a=2;a<=100;a++) //取100以内所有的数
{
for(b=2;b<a;b++) //穷举法判断是否有因子
if(a%b==0) //有则非质数
break; //跳出本次循环
if(b==a) //当条件为真则为质数
printf("%5d",a);
}
}
~~~~~~~~~~~~~~~~~~~
主要是有两个问题;
一;第二个for循环没有大括号,其意思是不是说不管b<a的条件是否成立,都往下执行?
二;a和b的初始都是0;a/b余数等于0,条件为真,因此执行break跳出循环,然后a+1,a就变成3了,此时b还是2;然后a下来a/b,3/2后余1,条件为假,然后执行下面的b==a,可是条件又不成立,为什么把2和3给输出了!非常不懂!望知者解释一下! 展开
void main()
{
int a,b;
for(a=2;a<=100;a++) //取100以内所有的数
{
for(b=2;b<a;b++) //穷举法判断是否有因子
if(a%b==0) //有则非质数
break; //跳出本次循环
if(b==a) //当条件为真则为质数
printf("%5d",a);
}
}
~~~~~~~~~~~~~~~~~~~
主要是有两个问题;
一;第二个for循环没有大括号,其意思是不是说不管b<a的条件是否成立,都往下执行?
二;a和b的初始都是0;a/b余数等于0,条件为真,因此执行break跳出循环,然后a+1,a就变成3了,此时b还是2;然后a下来a/b,3/2后余1,条件为假,然后执行下面的b==a,可是条件又不成立,为什么把2和3给输出了!非常不懂!望知者解释一下! 展开
2个回答
2010-01-11
展开全部
一.
for循环(以及其它循环)中,如果执行体只有一条语句,那么可以省略大括号.
第二个for循环中只有一条if语句,所以可以省略大括号.
二.
首先,a和b的初始值(在for开始之前)都不一定是0,它们是一个随机值.
....3/2后余1,所以并没有执行if后面的break;而是会跳过它去执行b++,而执行了b++后b的值就是3,不满足循环继续执行的条件了,所以退出,于是就造成了这个错觉.
for循环(以及其它循环)中,如果执行体只有一条语句,那么可以省略大括号.
第二个for循环中只有一条if语句,所以可以省略大括号.
二.
首先,a和b的初始值(在for开始之前)都不一定是0,它们是一个随机值.
....3/2后余1,所以并没有执行if后面的break;而是会跳过它去执行b++,而执行了b++后b的值就是3,不满足循环继续执行的条件了,所以退出,于是就造成了这个错觉.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询