| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 676 人关注过本帖
标题:新人求教练习题,关于循环穷举
只看楼主 加入收藏
kakasi3
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
新人求教练习题,关于循环穷举
C语言新新人,好多简单问题都不会,求教几道练习题:
哪些连续自然数的和为1000?
#include <stdio.h>
#inclide <stdlib.h>
int main (void)
{
 int i,m,he,c; //内循环,外循环,累加和,计数
 for(m=1;m<1000;m++)  //感觉循环次数还可以更少点
 {
  he=0; //每次循环开始,累加和与计数清零
  c=0;  
  //从1开始累加,当和=1000,结束输出;当和>1000也结束。然后再从2开始累加,如此循环
  for(i=m;i<1000;i++) //同外循环
  {
   he+=i;
   c+=1;
   if(he==1000)
    {
     printf("%d至%d",i-c,i);break;
      }
   if(he>1000)
    {
     break;
      }
    }
  }
  system("PAUSE");
  return(0);
 }

先这些了,望前辈们指点一下。3Q

[ 本帖最后由 kakasi3 于 2012-11-25 14:03 编辑 ]
搜索更多相关主题的帖子: 计数 include 练习题 自然数 
2012-11-25 09:05
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:20 
第2题  28--52  编程算出来的不是用笔计算的   代码不贴了 哈哈

DO IT YOURSELF !
2012-11-25 09:24
kakasi3
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-25
收藏
得分:0 
回复 2楼 wp231957
思路是怎样的?我是这样想的:从1开始累加,当和=1000,结束输出;当和>1000也结束。然后再从2开始累加,如此循环。你看有问题没?
2012-11-25 09:50
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
比较容易想到的代码应该是这样的
程序代码:
#include <stdio.h>

int main(int argc,char*argv[])

{
    int i,j,sum=0;
    for(i=1;i<1000;i++)
    {
        for(j=i;j<1000;j++)
        {
            sum+=j;
            if(sum==1000) goto _exit;
        }
        sum=0;
    }
_exit:
        printf("begin=%d end=%d sum=1000",i,j);

    return 0;

}
当然 肯定还可以进一步优化

DO IT YOURSELF !
2012-11-25 21:48
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
int main(int argc,char*argv[])

{
    int i=1,j=1,sum=0;
    while(1)
    {
        for(j=i;j<1000;j++)
        {
            sum+=j;
            if(sum==1000) goto _exit;
            if(sum>1000) break;
        }
        i++;
        sum=0;
    }
_exit:
        printf("begin=%d end=%d sum=1000",i,j);

    return 0;

}
也许这样能少循环几次 所谓增加一些效率吧

DO IT YOURSELF !
2012-11-25 21:56
kakasi3
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-25
收藏
得分:0 
回复 4楼 wp231957
才刚开始学,好多关键字,字符还不知道是什么含义
2012-11-26 10:32
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用kakasi3在2012-11-26 10:32:28的发言:

才刚开始学,好多关键字,字符还不知道是什么含义
那个不懂 可以问

DO IT YOURSELF !
2012-11-26 11:02
快速回复:新人求教练习题,关于循环穷举
数据加载中...
 
   



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

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