C语言数组与函数——第六周数组


初试数组

如何写一个程序计算用户输入的数字的平均数?

方法一:不需要记录输入的每一个数

#include 

int main(int argc, char **argv) {
    int x;
    double sum = 0;
    int count=0;
    double avg = 0;
    scanf("%d",&x);
    while(x!=-1){
        sum += x;
        count++;
        scanf("%d",&x);
    }
    if(count>0){
        printf("%f\n",avg=sum/count);
    }
    return 0;
}

如何写一个程序计算用户输入的数字的平均数,并输出所有大于平均数的数?

问题:如何记录很多数? 数组

#include 

int main(int argc, char **argv) {
    int x;
    double sum = 0;
    int count=0;
    double avg = 0;
    int number[100];//定义数组 
    scanf("%d",&x);
    while(x!=-1){
        number[count] = x;//对数组中的元素赋值 
        sum += x;
        count++;
        scanf("%d",&x);
    }
    if(count>0){
        printf("平均数:%f\n",avg=sum/count);
        int i;
        for(i=0;i){
            if(number[i] > avg){//使用数组中的元素 
                printf("%d\n",number[i]);
            }
        }//遍历数组 
    }
    return 0;
}

不足:count会不会超过number可以使用的最大下标

定义数组

方法

<类型> 变量名称[元素数量];

int grades[100];

double weight[20];

元素数量必须是整数

特点

其中所有的元素具有相同的数据类型

一旦创建,不能改变大小

数组中的元素在内存中是连续依次排序的

单元

数组的每个单元就是数组类型的一个变量

使用数组时放在[]中的数字叫做下标或索引,下标从0开始计数,有效下标[0,数组的大小-1]

segmentation fault数组越界

数组例子:统计个数

写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束

#include 

int main(int argc, char **argv) {
    int x;
    int count[10];
    int i;
    
    for(i=0;i<10;i++){
        count[i] = 0; 
    }//数组初始化
    scanf("%d",&x);
    while(x!=-1){
        if(x>=0 && x<=9){
            count[x]++;
        }
        scanf("%d",&x);
    } 
    for(i=0;i<10;i++){
        printf("%d:出现了%d\n",i,count[i]);
    }
    return 0;
}

优化

#include 

int main(int argc, char **argv) {
    const int number = 10;//数组的大小 
    int x;
    int count[number];//定义数组 
    int i;
    
    for(i=0;i){
        count[i] = 0; 
    }//数组初始化
    scanf("%d",&x);
    while(x!=-1){
        if(x>=0 && x<=9){
            count[x]++;//数组参与运算 
        }
        scanf("%d",&x);
    } 
    for(i=0;i){
        printf("%d:出现了%d\n",i,count[i]);
    }//遍历数组输出 
    return 0;
}

相关