数组
Suzhou 547 0

计算用户输入正整数的平均数,需要每次都读入正整数x:

int x;
scanf("%d",&x);
int sum = 0;
int cnt = 0;
while(x > -1){
    sum += x;
    cnt++;
    scanf("%d",&x);
}
if(cnt > 0){
    printf("平均数为%f",sum * 1.0 / cnt);
}

::: tip 上述程序判断cnt>0目的是保证确有数字输入。 上述程序不需要记录输入的每一个数字。 :::


题目变为需要计算输入数字的平均数且要输出输入数字中所有大于平均数的数字,此时需要记录每一个输入的数字以便于计算出平均数后判断数字是否要输出。 如果按照int num1、num2...来记录,需要的变量数目和程序长度都未知,需要引入数组int number[?],定义的number变量是一个数组,数组中的每一个单元都是int格式的,括号中的数字表示该数组最大可以存放?个int。

#include <stdio.h>

int main()
{
    int x;
    scanf("%d",&x);
    int sum = 0;
    int cnt = 0;
    int number[100];
    while(x > -1){
        number[cnt] = x;
        sum += x;
        cnt++;
        scanf("%d",&x);
    }
    if(cnt > 0){
        printf("平均数为%f\n",sum * 1.0 / cnt);
    }
    int i = 0;
    for(i;i < cnt;i++){
        if (number[i] > sum * 1.0 / cnt)
        printf("%d ",number[i]);
    }
    return 0;
}
5
4
3
2
1
0
-1
平均数为2.500000
5 4 3
--------------------------------
Process exited after 3.95 seconds with return value 0

数组 ::: warning 上述程序存在安全隐患,原因是没有判断输入数字的数量是否会超出数组number[100]中规定的最大数量100。 :::

评论区