解题思路:
1.给数列2 4 6 8 10 12...限定一个长度n;
2.每m个数求出平均值且输出;
3.但是求到后面,剩余的数列长度不足m的以实际长度求和输出平均值;
转化为代码思路:
1.定义一个n1=0,表示求到数列中的哪一个数,当n1==n时结束循环;
(n1定义为从0开始,会很方便,具体得写了才能体会)
2.定义a=0,表示数列中的每一个数,(要让a从2开始也行,但是程序求和实现过程复杂麻烦)
3.定义sum,表示m个数的和;
4.当n-n1>=m(表示剩余的数列长度大于m,可以求出m个数的平均值)
在求m个数的和时,每加上一个数n1++,a+=2;
注意:
1.多组测试数据注意以文件末尾结束
2.最后的m个数(或小于m)的和的平均值,需要换行;
3.每次求和都要把sum置0
参考代码:
#include <stdio.h> int function( int n, int m ); int main() { int n, m; while ( (scanf( "%d%d", &n, &m ) ) != EOF )//以文件末尾结束 function( n, m ); return(0); } /*------------------------------------------------*/ int function( int n, int m ) { int n1 = 0, sum = 0; //定义n1表示加到第几个数(起始为0表示没开始加),sum表示和 int a = 0; //数列的第一个元素,以0开始,这样下面程序好写 while ( n1 < n ) { if ( (n - n1) >= m ) //看剩余的数列长度是否大于m { sum = 0; //把和置0 for ( int i = 0; i < m; i++ ) //求m个数的和 { a += 2; //依次加2,变为数列中的每一个数 sum += a; //求和 n1++; //记录加到第几个数 } printf( "%d ", sum / m ); //输出平均值 }else { //剩余数列长度不大于m,按实际长度求 sum = 0; int t = n - n1; //t表示剩余数列的长度 for ( int j = 0; j < t; j++ ) //循环求和 { a += 2; sum += a; n1++; //记录加到第几个数 } printf( "%d \n", sum / t ); //输出平均值,带换行 } } }
别忘点赞排-.-
0.0分
19 人评分
大佬们我这哪错了 #include <stdio.h> int main() { int n,m,temp; while(scanf("%d %d",&n,&m)!=EOF) { int a[n],i,j; a[0]=2; for (i=1;i<n;i++) { a[i]=a[i-1]+2; } if (n%m==0) { for (i=0;i<n;i+=m) { printf("%d",(a[i]+a[i+m-1])/2); if (i!=n-m) printf(" "); } } else { temp=n%m; for (i=0;i<n-temp;i+=m) { printf("%d ",(a[i]+a[i+m-1])/2); } printf("%d",(a[i]+a[n-1])/2); } } return 0; }
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:981 |
C语言训练-求素数问题 (C语言代码)浏览:1509 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:660 |
剪刀石头布 (C语言代码)浏览:802 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:701 |
矩阵加法 (C语言代码)浏览:1768 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:729 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:612 |
Hello, world! (C语言代码)浏览:916 |
筛排处理 (C语言代码)浏览:830 |