| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 685 人关注过本帖
标题:刚入门,没看懂,请会的人指教一下,谢谢
只看楼主 加入收藏
whibla
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2012-8-1
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:10 
刚入门,没看懂,请会的人指教一下,谢谢
/*有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,
现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。
编程输出该平均值序列。*/

#include<stdio.h>
int main()
{
    int m,n,i,line[104],s,j,h;
    int aver1,aver2;
    while( scanf( "%d%d",&n,&m ) != EOF )
    {
        line[0]=2;
        for( i = 1; i < n; i++ )
            line[i]=line[i-1]+2;
        h = n % m;//这是什么
        for( j = 0; j < n / m; j++ )//为什么要是n/m
        {
            s = 0;
            for( i = j * m; i < (j+1) * m; i++ )//好复杂,没看懂
                s = line[i] + s;
            aver1 = s / m;
            if( j == 0 )
                printf( "%d",aver1 );
            else printf( " %d",aver1 );
        }
        if( h != 0 )
        {
            s = 0;
            for( i = n - h; i < n;i++ )
                s = s + line[i];
            aver2 = s / h;
            printf( " %d",aver2 );
        }
        printf( "\n" );
    }
    return 0;
}
搜索更多相关主题的帖子: include 平均值 
2012-08-03 09:16
天剑山
Rank: 4
等 级:业余侠客
威 望:3
帖 子:119
专家分:266
注 册:2012-8-3
收藏
得分:10 
好的...............n/m表示看看有多少个需要求解得部分
for( i = j * m; i < (j+1) * m; i++ ) 表示从数组的第j*m位开始到下一数段之前结束,如果j为0,m为5,则遍历数组0~4位,之后j自增1,然后计算5~9位...以此类推,刚好满足题目要求!


[ 本帖最后由 天剑山 于 2012-8-3 09:35 编辑 ]
2012-08-03 09:26
天剑山
Rank: 4
等 级:业余侠客
威 望:3
帖 子:119
专家分:266
注 册:2012-8-3
收藏
得分:0 
好的...............n/m表示看看有多少个需要求解得部分
for( i = j * m; i < (j+1) * m; i++ ) 表示从数组的第j*m位开始到下一数段之前结束,如果j为0,m为5,则遍历数组0~4位,之后j自增1,然后计算5~9位...以此类推,刚好满足题目要求!

[ 本帖最后由 天剑山 于 2012-8-3 09:35 编辑 ]
2012-08-03 09:32
whibla
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2012-8-1
收藏
得分:0 
谢谢,刚才看到这程序感到心烦,你一说关键的地方,剩下的看懂了,
2012-08-03 10:09
whibla
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2012-8-1
收藏
得分:0 
还有一个问题,假如输入的数据 n<m,那怎么办呢
2012-08-03 10:13
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:5 
回复 5楼 whibla
n 就是不足m的实际个数吧。也就是求这n个数的平均值。

梅尚程荀
马谭杨奚







                                                       
2012-08-03 10:25
ly2222
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:217
专家分:618
注 册:2012-6-15
收藏
得分:0 
学习了
2012-08-03 10:29
q215236213
Rank: 4
等 级:业余侠客
威 望:1
帖 子:148
专家分:276
注 册:2012-7-24
收藏
得分:5 
如果 n<m ,那么 n/m = 0,那么这个for循环就不会执行了!~ 也就是花括号 里面的都不会被执行!
for( j = 0; j < n / m; j++ )//为什么要是n/m
        {
            s = 0;
            for( i = j * m; i < (j+1) * m; i++ )//好复杂,没看懂
                s = line[i] + s;
            aver1 = s / m;
            if( j == 0 )
                printf( "%d",aver1 );
            else printf( " %d",aver1 );
        }
2012-08-03 11:53
whibla
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2012-8-1
收藏
得分:0 
   if( h != 0 )
        {
            s = 0;
            for( i = n - h; i < n;i++ )
                s = s + line[i];
            aver2 = s / h;
            printf( " %d",aver2 );这个地方输出的时候会先有一个空格,严格来讲这是不允许的吧
        }
2012-08-03 14:26
whibla
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2012-8-1
收藏
得分:0 
结果是通过了,
2012-08-03 16:25
快速回复:刚入门,没看懂,请会的人指教一下,谢谢
数据加载中...
 
   



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

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