问题描述:
由键盘输入读取整型数据,数据数量不超过100个,当读取到数据-1
时,停止读取数据,并计算这些数据的均值(不包含-1
),将大于均值的数据输出。
问题分析:
给定了数据数量不超过100,若将每个输入数据分别赋值给变量(a1,a2,a3,a4,a5...)会比较繁琐,因此可用数组来存储读入的数据。因此需要累加和变量sum
, 以及计数变量cnt
, 最后由变量sum
、cnt
来求均值。遍历数组元素,输出大于均值的数据。
S1 : 初始化变量 `sum`、 `cnt` ,定义数组
S2 : 读取数据`x`:
当数据`x`不等于`-1`时:
执行`sum = sum + x`
执行`cnt = cnt + 1`
执行`读取数据`
当数据`x` 等于 `-1` 时 :
终止,跳出循环体
S3 :计算均值:
计算均值
遍历数组元素,判断数组元素和均值的大小关系
C
代码:
#include <stdio.h>
int main()
{
int x;
double sum = 0;
int cnt = 0; //初始化计算变量 cnt
int number[100]; //定义数组 number ,包含 100个 元素
scanf("%d",&x); //读取键盘数据输入
while ( x!=-1 ){ //当 停止读取数据标志 -1 未出现时,执行循环体
number[cnt]=x; //索引为 cnt , 数组对应 元素值 为 x ;
sum += x;
cnt ++;
scanf("%d", &x);
}
if ( cnt > 0 ) { // 若第一个数据为 -1 ,则终止读取数据,while 循环体不执行,cnt = 0 ;
printf("%f\n", sum/cnt);
}
int i; //遍历数组;执行数组元素与均值大小判断
for ( i=0; i<cnt; i++) {
if (number[i]>sum/cnt){
printf("%d\n",number[i]);
}
}
return 0;
}