| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 25086 人关注过本帖
标题:嵌套的for循环 想半天不明白 帮忙解释下 谢谢
只看楼主 加入收藏
ad456aaa
Rank: 2
等 级:论坛游民
帖 子:8
专家分:29
注 册:2011-11-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
嵌套的for循环 想半天不明白 帮忙解释下 谢谢
# include <stdio.h>
# define no 0
# define yes 1
int main(void)
{
    long num;  //要检查的数
    long div;  //潜在的除数
    long lim;  //限制的值
    int prime;  //质数 素数

    printf("Please enter limit to values to be checked:");
    printf("Enter q t quit.\n");
   
    while (scanf("%ld",&lim) == 1 && lim > 0)
    {
        for (num = 2;num <= lim;num++)
        {
            for (div = 2,prime = yes;(div * div) <= num;div++)
                if (num % div == 0)
                    prime = no;
                if (prime == yes)
                    printf("%ld is prime.\n",num);
        }
        printf("Please enter another limit;");
        printf("Enter q to quit.\n");
    }
    return 0;
}

求素数的

搜索更多相关主题的帖子: 检查 checked include values 
2011-11-03 15:19
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:4 
循环嵌套很好理解,先判断第一个循环判断条件是否成立,不成立就跳过循环,执行循环后面的语句,成立就执行循环里的第一个语句,执行到内嵌的循环语句时,就判断第二个循环条件是否成立,成立就执行里面的语句,直到条件不成立。不成立就执行内嵌循环下面的语句,直到外循环条件不成立结束。
也就是说外循环执行一次,内循环就要执行到条件不成立退出,然后第二次外循环执行,内循环又从头执行到条件不成立,以此类推直到循环条件都不成立。
2011-11-03 15:50
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:0 
有点想不明白,为什么输入的是字符就退出,while (scanf("%ld",&lim) == 1 && lim > 0),这句到底隐藏着什么功能,还请高手指点。
2011-11-03 16:01
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:4 
简单说 外面的循环1次 里面循环一整个FOR循环,外面+1 里面就得重新赋值重新再循环直到外面FOR循环完毕就行了

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-11-03 16:01
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:4 
回复 3楼 heroinearth
scanf("%ld",&lim) == 1 && lim > 0
输入为长整型数的时候scanf("%ld",&lim) = 1;用于判断输入的是否是长整型数。
2011-11-03 16:11
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:0 
回复 5楼 laznrbfe
谢谢你!
2011-11-03 16:16
ad456aaa
Rank: 2
等 级:论坛游民
帖 子:8
专家分:29
注 册:2011-11-2
收藏
得分:0 
回复 2楼 heroinearth
嗯 谢谢你的回答  我可能没有说明白问题 我是想知道这道题是判断素数的 为什么定义了四个变量 而却在输入的时候只读取了一个,关键最不理解的是for循环的执行哪里 它到底是起什么作用 如何求出的素数 呵呵 不知道我说明白了没
2011-11-03 16:29
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:4 
# include <stdio.h>
# define no 0
# define yes 1
int main(void)
{
    long num;  //要检查的数
    long div;  //潜在的除数
    long lim;  //限制的值
    int prime;  //质数 素数

    printf("Please enter limit to values to be checked:");
    printf("Enter q t quit.\n");
   
    while (scanf("%ld",&lim) == 1 && lim > 0)
    {
       for (num = 2;num <= lim;num++)
        {
            for (div = 2,prime = yes;(div * div) <= num;div++)
                if (num % div == 0)
                    prime = no;
                if (prime == yes)
                    printf("%ld is prime.\n",num);
        }

        printf("Please enter another limit;");
        printf("Enter q to quit.\n");
    }
    return 0;
}
一开始输入一个数,就是要判断这个数是否素数。赋值给num。然后while语句是判断你输入的内容是否为数字,scanf("%ld",&lim) == 1 && lim > 0   如果不是整数或者是小于0的,则不继续执行。
如果输入的数是正整数,则继续执行while循环里的语句。
一开始给div赋值2,prime赋值yes,然后执行循环语句,这时div是2,如果num % div==0,则说明不是素数,则prime赋值为no,而如果num % div!=0,则div加1,这时div变成了3,继续执行判断num % div是否为0,直到(div * div) <= num这个条件不成立,则结束for循环。然后判断这个num为素数。然后执行printf("%ld is prime.\n",num);输出xx数 is prime.则本次判断结束。(yes和no已经在头文件定义了)
然后继续执行printf("Please enter another limit;");
        printf("Enter q to quit.\n");
如果是q,则结束。
2011-11-03 18:50
Y_Jo_1
Rank: 4
等 级:业余侠客
帖 子:59
专家分:215
注 册:2011-10-20
收藏
得分:4 
学习了
2011-11-03 23:30
快速回复:嵌套的for循环 想半天不明白 帮忙解释下 谢谢
数据加载中...
 
   



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

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