C语言自学笔记——数组

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

元素数量必须是整数

如果初始化为:int a[10] = {[1] = 2,[4] = 1,6};

初始化遍历输出结果为 0 2 0 0 1 6 0 0 0 0

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

#include <stdio.h>

int main(){
    int x;        //输入的数
    double sum;
    int cnt = 0;
    int number[100];    //定义数组
    scanf("%d",&x);
    while(x!=-1){
        number[cnt] = x;        //让当前cnt那个单元值等于x,对数组赋值
        sum += x;
        cnt ++;
        scanf("%d",&x);
    }

    if(cnt > 0){
        double avg = sum/cnt;
        printf("平均数是%f\n",avg);
        int i;
        for(i = 0;i < cnt;i++){        //遍历整个数组,把其中大于平均数的值找出来
            if(number[i] > avg){
                printf("%d\n",number[i]);
            }
        }
    }

    return 0;
}

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

int count[number] = {0};可以将count数组的值全部初始化为0

#include <stdio.h>

int main(){
    int x;
    scanf("%d",&x);

    int count[10];
    int i;
    
    for(i = 0;i < 10;i++){
        count[i] = 0;        //初始化数组,写循环遍历数组
    }


    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;
}

3、在一组给定的数据中,找出某个数据是否存在?

必须要用length来传入数组的大小,否则没法计算;在函数参数中不能使用sizeof来计算数组大小

ret返回的是x在数组a中的位置

#include <stdio.h>

int main(){
    int a[] = {2,4,6,7,1,3,5,9,11,13,23,14,32};
    

    return 0;
}

int a[] = {1,2,3,4,5,6};
printf("%lu\n",sizeof(a));     //结果是24
printf("%lu\n",sizeof(a[0]));    //结果是4

所以整个数组的number还可以用sizeof(a)/sizeof(a[0])计算得出 

判断素数

不用从1到x遍历除,只需判断能否被已知的素数整除,那么需要将已知的素数存到数组中

#include <stdio.h>

int main(){
    const int number = 100;
    int prime[number] = {2};    //构造素数表,初始化为2,因为2是已知的第一个素数
    int count = 1;        //已经有一个素数2,所以count为1
    int i = 3;        //从3开始判断是不是素数
    while(count < number){
        if(isPrime(i,prime,count)){
            prime[count++] = i;    //如果i是素数,就把i加到数组中去
        }
        i++;
    }

    for(i = 0;i <number;i++){
        printf("%d",prime[i]);
        if((i +1) % 5)
            printf("\t");
        else
            printf("\n");
    }
    
    return 0;
}

int isPrime(int x,int knownPrimes[],int numberOfKnownPrimes){
    int ret = 1;
    int i;
    for(i = 0;i < numberOfKnownPrimes;i++){
        if(x % knownPrimes[i] == 0){
            ret = 0;
            break;
        }
    }
}

方法二:先构造素数表,在数组中将素数标为1,不是素数标为0,再遍历数组,用if(isPrime[i] == 1)输出所有素数

二维数组

int a[3][5];三行五列的矩阵

外围遍历行号,内围遍历列号

定义二维数组时,列数必须给出!!int  a[ ][5] = {{0,1,2,3,4},{2,3,4,5,6},};

每一个{}必须用逗号隔开

 检查列的话把i和j交换

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值