| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2426 人关注过本帖
标题:用C语言编写的1~1000内的完数,看不懂,希望有人来看一下
只看楼主 加入收藏
main丶
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2017-11-17
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
用C语言编写的1~1000内的完数,看不懂,希望有人来看一下
#include<stdio.h>
int main()
{
    int a,c,d;
    for(a=2;a<=1000;a++)
    {
        for(c=1,d=0;c<a;c++)
        {
            if(a%c==0)
                d=d+c;   
        }
        if(d==a)
        {
            printf("%d的因数(除去本身)有",a);
            for(c=1,d=0;c<a;c++)
            {
                if(a%c==0)
                {
                    printf("%d ",c);
                }
            }
            printf("\n%d是完数\n",a);        
        }
    }
}
请教各位大佬们,红色代码中的  a  和 c  的初始值为2  1,然后是if语句判断a%c==0;
这个地方我的问题是:a,c都在每次循环中递增1,这样判断不就是表示2%1==0,3%2==0,4%3==0.这就没有真的时候。
我知道我循环理解错了,请各位大佬讲解一下,小弟一直在努力学c语言,谢谢啦!!!!
搜索更多相关主题的帖子: C语言 编写 完数 for printf 
2017-11-17 12:13
main丶
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2017-11-17
收藏
得分:0 
帮帮我,各位,我会失眠的!!!!在线等呀
2017-11-17 12:25
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:20 
a和c各属于不同的for循环,
你可以看看下面的输出
程序代码:
#include<stdio.h>
int main()
{
    int a,c,d;
    for(a=2;a<=1000;a++)
    {
        for(c=1,d=0;c<a;c++)
        {
            printf("a=%d   c=%d\n",a,c);
             
        }
     }
}

早知做人那么辛苦!  当初不应该下凡
2017-11-17 12:40
main丶
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2017-11-17
收藏
得分:0 
回复 3楼 炎天
哦~,看到输出了,就是说第一个for是一个大循环,  再执行以第二个for  和if(d==a),然后第一个for就循环一次,我理解的对么,小哥?     
2017-11-17 12:58
main丶
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2017-11-17
收藏
得分:0 
回复 3楼 炎天
那for中的c<a,能举个循环例子么,还是被第一个for中a 影响,麻烦你举个数字循环一下这个例子好么,还是没搞明白,现在我正在学循环结构!
2017-11-17 13:25
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 5楼 main丶
for(单次表达式;条件表达式;末尾循环体)

第一次外层循环 a=2
  a-1=1次内层循环开始  第一次  c=1   a=2(a自加运算是在外循环中,外循环循环一次才会自加一次)    c自加1-->c=2  (c不小于a退出) 至此内层循环结束,第一次外层循环也结束



第二次外层循环开始  a=3
  a-1=2次内层循环开始  第一次  c=1   a=3(同上)    c自加1-->c=2  (c<a) 条件表达式为真,循环继续
                       第二次  c=2   a=3(同上)    c自加1-->c=3   (c不小于a) 条件表达式为假,  内层循环结束, 第二次外层循环也结束




早知做人那么辛苦!  当初不应该下凡
2017-11-17 16:54
main丶
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2017-11-17
收藏
得分:0 
回复 6楼 炎天
谢谢您,终于搞明白了,非常感谢!!!!!
2017-11-17 18:04
快速回复:用C语言编写的1~1000内的完数,看不懂,希望有人来看一下
数据加载中...
 
   



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

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