c语言笔记(8.1.1数组

发布于:2022-10-17 ⋅ 阅读:(395) ⋅ 点赞:(0)

8.1.1

数组

int munber=[100]

scanf("%d",&number[i]);

定义数组

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

int grades[100];

double weight[20];

元素数量必须是整数

c99之前:元素数量必须是编译时刻确定的字面量

8.1.2

数组

是一种容器(放东西的东西),特点是:

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

一旦创立,不能改变大小

数组中的元素在内存中是紧密连续依次排列的

数组 int a[10]

一个int的数组

10个单元:a[0],a[1]....a[9]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

每个单元都是一个int类型的变量

可以出现在赋值号的左边和右边;

a[2]=a[1]+6

在赋值号左边的叫做左值

数组的单元

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

使用数组时放在[]中的数字叫做下标或索引,下标从0开始计数:grades[0]......

有效的下标范围

编译器和运行环境都不会检查下标是否越界,无论是对数组单元做读还是写

一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃

segmentation fault可能是数组越界了

但可能运气好,没造成严重的后果

正确下标范围:[0,数组的大小-1]

    int a[0];可以存在,但无用。

8.1.3

数组的例子

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

#include<stdio.h>
int main(void)
{
    const int number=10;    //数组大小c99
    int x;
    int count[number];       //定义数组
    int i;

    for(i=0;i< number;i++){
       count[i]=0;           //初始化数组(循环给每一个数组赋值)
}

    scanf("%d",&X);
    while(x!=-1){
         if(x>=0 && x<=9){
         count[x]++;         //数组参与运算:求平均数时我们要把数纪录下来
         }                                  记数时用读到的数做下标,让某一个计数器加一
         scanf("%d",&x);
}
for(i=0;i<number;i++){
    printf("%d:%d\n,i,count[i]);
    }                        //遍历数组做输出
    return 0;
}

8.2.1数组运算

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

数组的集成初始化

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

inta[10]={[0]=2,[2]=3,6,};

·用[n]在初始化数据中定位

·没有定位的数据接在前面的位置后面

·其他位置的值补零

·也可以不给出数据大小,让编译器算

·特别合适初始数据稀疏的数组

数组大小

sizeof给出整个数组所占据的内容大小,单位是字节

sizeof(a)/sizeof(a[0])

sizeof(a[0])给出数组中单个元素的大小,于是相除就得到了数组的单元个数

这样的代码,一旦修改数组中初始的数据,不需要修改历的代码

数组的赋值

数组不可以直接赋值

数组本身不可以赋值

要把一个数组的所有元素交给另一个数组,必须采用遍历     for(i=0;i<length;i++){b[i]=a[i];}

遍历数组

通常都是用for循环,让循环变量i从0到<数组的长度,这样循环体内最大的i正好是数组最大的有效下标

常见错误:

循环条件是<=数组长度,或者是;

离开循环后,继续使用i的值来做数组元素的下标!

数组作为函数参数时,往往必需在用另一个参数来传入数组的大小

8.2.2数组的例子

素数

#include <stdio.h>
int isPrime(int x);

int main(viod)
{
    int x;
    scanf("%d',&x);
    if (isPrime(x)){
       printf("%d是素数\n",x);
    }else{
       printf("%d不是素数\n",x);
    }
    return 0;
}

fdc8a8e26a4640d79167b314dfa6fbd4.jpg

 

 

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到