| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 668 人关注过本帖
标题:求问结果为何为=0.
只看楼主 加入收藏
lml0863
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2015-8-25
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
求问结果为何为=0.
#include<stdio.h>
void main()
{
    int n=2;
    int result=0;
    int sum=0;
    while(n<=1000)
        {
            int a=1;
      while(a<n)
        {
            if(n%a==0)
            sum=sum+a;
            else ;
            a++;
        }
    if(sum==n)
        {printf("%d+",sum);
         result=result+sum;}
    else  ;
        n++;
    }
        printf("=%d",result);
    }
搜索更多相关主题的帖子: result 
2015-08-30 19:57
未来大仙
Rank: 6Rank: 6
来 自:黑窟窿
等 级:侠之大者
威 望:4
帖 子:263
专家分:491
注 册:2015-6-20
收藏
得分:1 
回复 楼主 lml0863
大哥,你在第二个while循环都已经卡死了。。退不出while循环,所以result的值一直都是0,输出当然是0啦。。

好好学习,天天向上!
2015-08-30 20:08
lml0863
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2015-8-25
收藏
得分:0 
回复 2楼 未来大仙
不好意思,我还是不太明白,a不是会每次加一吗?
2015-08-30 21:22
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:1 
int a=1;//改为 int a=2; sum=0;素数测试对1测试没有意义,并且任何数除1余数都为0,那么1每次都被sum累加,造成sum永远不能等于n.
      while(a<n)//改为 while(a<=n)
        {
            if(n%a==0)
            sum=sum+a;//由于前边有(a<n)这个条件,所以n不会被累加
           // else ;没用
            a++;
        }
    if(sum==n)//n没有被累加到sum中,所以(sum==n)不会成立
        {printf("%d+",sum);
         result=result+sum;}
    else  ;
        n++;


这是个找素数的程序,修改一下看是否能运行。

[ 本帖最后由 jklqwe111 于 2015-8-31 21:36 编辑 ]
2015-08-30 22:08
未来大仙
Rank: 6Rank: 6
来 自:黑窟窿
等 级:侠之大者
威 望:4
帖 子:263
专家分:491
注 册:2015-6-20
收藏
得分:0 
回复 2楼 未来大仙
不会在第二个while循环中,会一直执行第二个while循环,直到条件不符合的时候就退出循环..然而,第二个while循环的条件是a<n  在这里a=1  n=2 条件成立就执行while里面的if语句因为n%a 永远等于0所以不会执行else..a也就不会增加 所以一直都在执行第二个while循环..最后一个printf语句不在第一个while循环。。所以输出的result就是初始的值。。否则..什么都不会输出...- -

好好学习,天天向上!
2015-08-31 12:22
yz912498286
Rank: 1
等 级:新手上路
帖 子:49
专家分:3
注 册:2015-8-24
收藏
得分:0 
回复 5楼 未来大仙
怎么result会输出呀 不是会一直卡在第二个循环码?一直在第二个循环运行
2015-08-31 14:01
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:3 
逻辑上看不明白楼主要做什么?希望以后能表达清楚.

建议如果else部分不做处理的话,就不要添加else.

猜测楼主要实现的是完数求和吧.
程序代码:
#include <stdio.h>

int main(int argc, char *argv[])
{
    int a      = 1;
    int n      = 2;
    int sum    = 0;
    int result = 0;

    while (n <= 1000)
    {
        a = 1, sum = 0; //这个地方对
        while (a < n)
        {
            if (n % a == 0)
            {
                sum = sum + a;
            }
            a++;
        }
        if (sum == n)
        {
            printf("%d + ", sum);
            result = result + sum;
        }
        n++;
    }
    printf("0 = %d\n", result);
}


[fly]存在即是合理[/fly]
2015-08-31 14:22
q215236213
Rank: 4
等 级:业余侠客
威 望:1
帖 子:148
专家分:276
注 册:2012-7-24
收藏
得分:2 
if(sum==n)
        {printf("%d+",sum);
         result=result+sum;}
这个条件永远都不会成立,你的rusult 就是0


上面有人说
 while(a<n)
        {
            if(n%a==0)
            sum=sum+a;
            else ;
            a++;
        }
这个循环是死循环,请看仔细了,这里这个a++ 是必执行的,因为else后面有个分号,表示else后面执行的是空语句,所以这里死循环是不可能的

这个程序 可能楼主对于分号还没有深入的理解
2015-08-31 17:30
未来大仙
Rank: 6Rank: 6
来 自:黑窟窿
等 级:侠之大者
威 望:4
帖 子:263
专家分:491
注 册:2015-6-20
收藏
得分:1 
回复 6楼 yz912498286
最后那个printf语句并没有在第一个while循环体内。。当然会输出。。只是while循环作废了而已。。第二个while循环之前正常进行。。之后不进行了。。

好好学习,天天向上!
2015-08-31 21:01
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:2 
7楼看的很准,应该是个找完数的程序,楼主的代码中,外层循环时sum没有归0是个错误。
2015-08-31 21:35
快速回复:求问结果为何为=0.
数据加载中...
 
   



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

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