| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3262 人关注过本帖, 1 人收藏
标题:请教for和while的区别·······
只看楼主 加入收藏
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:3 
r是一个标志。n%i==0成立,n就不是素数,然后break,令标志r改为1.
2012-01-17 15:14
weipeng1217
Rank: 5Rank: 5
等 级:职业侠客
帖 子:175
专家分:386
注 册:2012-1-12
收藏
得分:3 
你的第一个问题和第三个问题得联系到一起,
“!r”是逻辑非,如果r为假(0),其结果就为真(1),如果r为真(非0),其结果就为假(0)。所以一开始给r赋值0,是为了下面做铺垫。。
    if(n%i==0)  //判断是否为素数
     {
         r=1;  //如果n%i==0为真,则给r赋值1
         break;//终止循环
     }


for和while基本可以互换,但要注意用法,下面是for改while,区别自己参悟吧。。
程序代码:
#include<stdio.h>

 int main(void)

 {
     int n,i,r=0;
     printf("请输入大于3一个正整数:");
     scanf("%d",&n);
     i=2while(i<n)
     {if(n%i==0)
     {
         r=1;
         break;
      }
    i++;
      }
      if(!r)
      printf("%d是素数。\n",n);
      else
      printf("%d不是素数。\n",n);

 }


[ 本帖最后由 weipeng1217 于 2012-1-17 16:16 编辑 ]

C坛友交流群 群号:161091913 ,欢迎经常在线的朋友加入,一起学习,一起进步。。
2012-01-17 16:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果把r寫成不是素數,那麼!r其實就是!不是素數,是不是很容易理解?編程語言不支持中文作變量名,可以用英文、拉丁文,素數是prime,把r改成NotPrime,0、1用真假,這樣寫代碼,還需要注釋嗎?其實,不寫NotPrime,寫IsPrime就好。

注意下面的IsPrime就是原來代碼的!r,即r==1:

程序代码:
#include<stdio.h>

 int main(void)

 {
     int n,i;
     bool IsPrime=true;
     printf("请输入大于3一个正整数:");
     scanf("%d",&n);
     for(i=2;i<n;i++)
     {
         if(n%i==0)
         {
             IsPrime=false;
             break;
          }
     }
     if(IsPrime)
         printf("%d是素数。\n",n);
     else
         printf("%d不是素数。\n",n);

 }

“起有意義的變量名”,這是所有語言教科書都應該提到的。沒有這種教誨,或者自己寫的代碼都沒有這種風格的書籍,馬上扔了,不用可惜。

[ 本帖最后由 TonyDeng 于 2012-1-17 16:27 编辑 ]

授人以渔,不授人以鱼。
2012-01-17 16:21
隐君子
Rank: 1
等 级:新手上路
帖 子:46
专家分:1
注 册:2011-12-7
收藏
得分:0 
谢谢大家!这帖子需要点时间思考,结帖先,看看能不能不用假定写出来,谢谢大家!
2012-01-17 17:09
riialwihc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-8-29
收藏
得分:0 
不知道楼主还活着不?我写了一个,你可能更容易懂\n
#include<stdio.h>

int main(void)
{
     int n,i,k=1,r;


     
     printf("                         判断一个正整数是不是素数\n\n  请输入一个正整数:");
     
     scanf("%d", &n);

     if (n > 1)
     {
        for(i=2;i<n;i++)
        {
           if(n%i == 0)
           {
               r=1;
           }
        }
        if (k==r)
        {
            printf("\n  NO\n\n");
        }
         else
        {
            printf("\n  YES\n\n");
        }
    }

     else
     {
         printf("请输入大于1的正整数数!\n");
     }
   
    return 0;
}

[ 本帖最后由 riialwihc 于 2015-8-29 14:31 编辑 ]
2015-08-29 14:26
快速回复:请教for和while的区别·······
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033032 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved