| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 696 人关注过本帖
标题:还是求助,遇到if语句的特殊情况,不知如何理解
只看楼主 加入收藏
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:16 
还是求助,遇到if语句的特殊情况,不知如何理解
本人在网上找到这样一题:
“判断101-200之间有多少个素数,并输出所有素数。程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。”自己没做出来。答案是这样给的
#include "math.h"
main()
{
  int m,i,k,h=0,leap=1;
  printf("\n");
  for(m=101;m<=200;m++)
   { k=sqrt(m+1);
    for(i=2;i<=k;i++)
      if(m%i==0)
       {leap=0;break;}
    if(leap) {printf("%-4d",m);h++;
         if(h%10==0)
         printf("\n");
        }
    leap=1;
   }
  printf("\nThe total is %d",h);
}
我运行了一下 ,确实是对的,其中大部分能看懂,只是带下划线的if(leap)处百思不得其解,括弧内怎么不是判断式,而且那个leap不能变,一变就出错,遍翻书籍也没找到是怎么回事,请指教啊。
搜索更多相关主题的帖子: 如何 include 
2012-10-25 16:51
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:0 
#include <stdio.h>
int main (void)
{
    int i,j;
    int sum=0;
    for(i=101;i<=200;i+=2)
    {
        for(j=2;j<=i/2;j++)
        {
            if(i%j==0)
                break;
        }
        if(j==i/2+1)
        {
            sum++;
            printf("%d ",i);
        }
    }
    printf("\n\n");
    printf("101--200之间共有%d个素数\n",sum);    return 0;
}
重写了一个 分享一下

马马虎虎 不吝赐教 我是路过蹭分滴
2012-10-25 17:25
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:5 
#include "math.h"
main()
{
  int m,i,k,h=0,leap=1;
  printf("\n");
  for(m=101;m<=200;m++)
   { k=sqrt(m+1);
    for(i=2;i<=k;i++)
      if(m%i==0)
       {leap=0;break;}//leap是一个标记
        if(leap)   //判断leap是否为0
             {printf("%-4d",m);//按格式输出
                     h++;
         if(h%10==0) //每行10个
         printf("\n");
        }
    leap=1;//初始值为1
   }
  printf("\nThe total is %d",h);
}

马马虎虎 不吝赐教 我是路过蹭分滴
2012-10-25 17:32
张朝成
Rank: 4
等 级:业余侠客
帖 子:149
专家分:265
注 册:2012-3-22
收藏
得分:0 
if语句中,也是判断。if(leap)//如果值为非0,即为真。
2012-10-25 18:30
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
           {leap=0;break;}//leap是一个标记  是不是说这里的leap=0没有实际意义呀
        if(leap)   //判断leap是否为0     这个leap是不是相当于leap=1呀,这是一种巧合还是C本身允许这样写?
             {printf("%-4d",m);//按格式输出
                     h++;
         if(h%10==0) //每行10个
         printf("\n");
        }
    leap=1;//初始值为

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-10-25 18:35
龙航四海
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:102
注 册:2012-10-17
收藏
得分:0 
#include<stdio.h>
main()
{
     int num,a,i,leap=0;
     printf("输入一个数:");
     scanf("%d",&num);
     if(num==0)
            printf("%d是素数",num);
     if(num==1)
            printf("%d不是素数",num);
        else
            {
             a=num/2;
            for(i=2;i<=a;i++)
                 if(num%i==0)
                  leap=1;   
                if(leap==1)
                     printf("%d不是素数",num);
                else
                     printf("%d是素数",num);
        }
        printf("\n");
}
我试了,编译没问题
2012-10-25 18:44
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
我也试了 ,没问题的,可是我不明白if(leap)是什么用法,翻遍了手头现有的资料都没有这种用法

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-10-25 18:54
龙航四海
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:102
注 册:2012-10-17
收藏
得分:0 
这个相当于if(leap==1)
2012-10-25 19:10
神之右手
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:79
注 册:2012-10-16
收藏
得分:5 
不管是if还是while,只有当它括号里的条件表达式值为真时(即表达式值非零),才能够满足条件执行该语句下的语句体;
简单地说,在这个程序中if(leap)等价于if(leap != 0)。

As I do,as you know!
2012-10-25 19:11
龙航四海
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:102
注 册:2012-10-17
收藏
得分:0 
嘿嘿,看来我说的也不太对!
2012-10-25 19:12
快速回复:还是求助,遇到if语句的特殊情况,不知如何理解
数据加载中...
 
   



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

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