canon sdk:C语言循环问题.

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 07:39:48
#include <math.h>
main()
{
int a ,b,c;
a=sqrt(b);
for(c=2;c<=a;c++)
if(b%c==0)break;
if(c>=a+1)printf("b是素数”);
else if printf("b不好似素数”);

这里有一步看不懂,就是if(c>=a+1),在for循环中不是已经说明了c<=a吗?怎么还要用c>=a+1.

你的for循环没有加{}
就是说这个循环只包括到if(b%c==0)break;这一句
如果是
for(c=2;c<=a;c++)
{
if(b%c==0)break;
if(c>=a+1)printf("b是素数”);
else if printf("b不好似素数”);
}
就有问题了
看清楚了吗?

如果这个数是素数
~当跑到循环的结尾即满足c=a;时循环并没有结束哦~这段程序还会走循环中的第三个语句c++;
他会使c变量中的值自加1
你再来看
if(c>=a+1)printf("b是素数”);
那不就对了吗?

希望你先把程序写对了再来问问题.
你的程序里有很多错误.
1.变量b没有初始化.
2.循环体没有用花括号.

如果你连程序都写不对,我们根本不可能教懂你这个程序的意思.
麻烦你先仔细学习一下C再来问!

我把它弄清楚一点你再看:
#include <math.h>
main()
{
int a ,b,c;
a=sqrt(b);

for(c=2;c<=a;c++)
{
if(b%c==0)break;
}/*循环结束,如if一直不成立,最后就C的值就是a+1*/

if(c>=a+1)printf("b是素数”);
else if printf("b不好似素数”);

因为里面有一个if(b%c==0)break;如果执行,就跳出了。

如果这条命令没有执行,c才有可能到a+1,否则一定小于a,所以不是素数。

太简单的一个问题了哦
循环和判断不一样哦