编程论坛
注册
登录
编程论坛
→
C语言论坛
数组分段求和
zzmx
发布于 2021-09-15 10:24, 1733 次点击
假设数组a有1152个数,我想按照顺序每100个数算一个和,求一个平均值,该如何实现?
3 回复
#2
不会游泳的虾
2021-09-15 11:19
供参考:
程序代码:
//
假设数组a有1152个数,我想按照顺序每100个数算一个和,求一个平均值,该如何实现?
//
假设数组a有1152个数,我想按照顺序每100个数算一个和,求一个平均值,该如何实现?
#include
<stdio.h>
#include
<time.h>
#include
<stdlib.h>
int
main()
{
int
a[
1152
], i, k, c, s[
13
] = {
0
};
srand((
unsigned
int
)time(NULL));
for
(i =
0
, k =
0
, c =
0
; i <
1152
; i++) {
a[i] = rand() %
150
+
1
;
s[k] += a[i];
c++;
if
(c ==
100
) {
k++;
c =
0
;
}
}
for
(i =
0
; i < k; i++){
printf(
"
%c %d
"
,i==
0
?
'
(
'
:
'
+
'
, s[i]);
s[
12
] += s[i];
}
printf(
"
) / %d = %d \n
"
,k, s[
12
] / k);
return
0
;
}
#3
自由而无用
2021-09-15 17:16
//online parser:
https://www.bccn.net/run/
程序代码:
#include
<stdio.h>
#include
<string.h>
int
main(
int
argc,
char
*argv[])
{
char
c[
12
][
100
];
int
i, j, sum;
memcpy(c, main,
1152
);
for
(i =
0
; i <
12
; i++) {
for
(j =
0
, sum =
0
; j <
sizeof
(c[i]); j++) sum += c[i][j];
printf(
"
%02d: sum = %d, avr = %d\n
"
, i +
1
, sum, sum /
100
);
}
return
0
;
}
[此贴子已经被作者于2021-9-15 17:34编辑过]
#4
我善治鬼
2021-09-17 14:13
程序代码:
#include
<stdio.h>
#define
N 1152
int
main()
{
int
sum =
0
;
for
(
int
i =
0
, j; i < N; i++) {
sum += i;
j = (i +
1
) %
100
;
if
(j ==
0
|| i == N -
1
) {
if
(j ==
0
) j =
100
;
printf(
"
%d / %d = %d\n\n
"
, i, j, sum / j);
sum =
0
;
}
else
printf(
"
%d +
"
, i);
}
return
0
;
}
#5
纯蓝之刃
2021-09-19 20:55
程序代码:
#include
<stdio.h>
#include
<stdlib.h>
#include
<time.h>
int
main()
{
unsigned
int
num_all,num_one,num_current,group,i,j;
float
*a,sum;
printf(
"
请输入总个数及每组个数:
"
);
scanf(
"
%u %u
"
,&num_all,&num_one);
a=malloc(num_all*
sizeof
(
float
));
srand((
unsigned
int
)time(NULL));
//
模拟数据
for
(i=
0
; i<num_all; i++)
*(a+i)=rand();
group=num_all/num_one;
if
(num_all%num_one!=
0
)
group+=
1
;
for
(j=
0
; j<group; j++)
{
sum=
0
;
if
(j+
1
==group)
{
if
(num_all%num_one!=
0
)
num_current=num_all%num_one;
}
else
{
num_current=num_one;
}
for
(i=
0
; i<num_current; i++)
{
sum+=*(a+j*num_one+i);
}
printf(
"
第%u组和为%.2f,平均值为%.2f\n
"
,j,sum,sum/num_current);
}
free(a);
return
0
;
}
1