第六章 数组

本章主要内容

  • 一维数组
  • 二维和多维数组
  • 字符数组和字符串

6.1 一维数组

6.1.1 一维数组的定义和使用

  • 语法:

    元素类型 数组变量名[总元素个数];
    
  • 说明

    • 数组名的命名规则和变量名一致
    • 在定义数组的时候,可以直接指定数组的大小,即数组里面元素的个数,称为数组的长度
#include "stdio.h"
int main()
{
    int n,d1[5]={1,6,2}; //定义数组和初始化
    for(int i=0;i<5;i++){ //注意下标从0开始,到n-1
        printf("%d,", d1[i]);//使用数组
    }
    //数组和数组元素占内存的实际字节数
    printf("%lu,%lu\n", sizeof(d1), sizeof(d1[0]));
    return 0;
}

输出:

1,6,2,0,0

6.1.2 一维数组的初始化

  • 数组的初始化
    • 在定义数组的时候,给数组元素赋予初值
int a[4]={1,2,3,4,5]; //完全赋予每个元素初始值
double b[3]={3.14, 1.618}; //部分元素赋初值,其他的都被设置为0
float c[] = { 0.1, 0.4, 0.7} ; //没有设置数组长度,其长度由初始值个数决定
int n = sizeof(c)/sizeof(float); //获得数组c的长度(元素个数)

6.1.3 一维数组的应用实例

例6.1 遍历查找数据

如下表所示的对数表,编写程序进行查找。

x 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0
y 0.0000 0.0414 0.0792 0.1139 0.1461 0.1761 0.2041 0.2304 0.2553 0.2788 0.3010

#include "stdio.h"
#include "math.h"
#define DELTA 1e-6
int main()
{  double data_x[]={1.0, 1.1, 1.2, 1.3, 1.4, 
             1.50, 1.6, 1.7, 1.8, 1.9, 2.0};
   double data_y[]={0, 0.0414, 0.0792, 0.1139, 
             0.1461, 0.1761, 0.2041, 0.2304, 
             0.2553, 0.2788, 0.3010};
    double x;  int i, flag = 0, n;
    char *str="1.4";
    n=sizeof(data_x)/sizeof(double);
    puts("input x:"); sscanf(str, "%lf", &x);
    for(i=0; i<n && flag==0; )
        if( fabs(data_x[i] - x) < DELTA)flag = 1;
        else i++;
    if(flag == 1)
      printf("%i, log(%.2lf)=%.4lf\n", i, 
               data_x[i], data_y[i]);
    else printf("not found.\n");
    return 0;
}