数组的简单认识

目录

一、一维数组

二、二维数组

三、字符数组


一、一维数组

1、一维数组定义格式

类型说明符  数组名  [常量表达式]

  • 类型说明符:数组的类型
  • 数组命名规则和变量名相同,遵循标识符命名规则
  • 常量表达式可以包括常量和符号常量,但不能包含变量
  • 常量表达式指明数组中元素的个数
  • 数组名后用方括号

2、一维数组初始化

在数组定义时为数组元素赋初值称为数组初始化。

  • 在定义数组时对数组元素赋以初值(将数组元素的初值一次放在一对花括号内)
  • 可以只给一部分元素赋值,其他按0处理

3、一维数组的引用

c语言规定,只能引用单个数组元素,不能一次引用整个数组

数组元素的引用形式

数组名[下标]

  • 下标是指在数组中的几个元素
  • 下标可以是整型常量、整型变量和整型表达式
  • 下标的值是数组元素的序号,从0到n-1
  • 注意区分数组定义和数组元素引用(数组定义时有类型说明符)

4、一维数组的输入输出

数组的输入

#include<stdio.h>
int main()
{
    int a[n],i;
    for(i=0;i<n;i++)
       scanf("%d",&a[i]);
    ......
    return 0;
}

数组的输出

#include<stdio.h>
int main()
{
    int a[n],i;
    for(i=0;i<n;i++)
       printf("%d",a[i]);
    ......
    return 0;
}

5、程序举例

用数组求斐波那契数列问题(前三十个)

#include<stdio.h>
void main()
{
    int i;
    int f[30]={1,1};              //对最前面的两个元素f[0]和f[1]赋初值1
    for(i=2;i<30;i++)
       f[i]=f[i-2]+f[i-1];        //从前两个元素值推出当前元素的值
    for(i=0;i,30;i++)
    {
    if(i%5==0)printf("\n");      //控制每输入五个数后换行
    printf("%12d",f[i]);          //输出斐波那契数列各项的值
    }
    printf("\n");
}

二、二维数组

1、二维数组一般格式

类型说明符  数组名  【常量表达式1】 【常量表达式2】;

其中常量表达式1为行数,常量表达式二为列数。

  • 一对方括号内不能写两个下标
  • 数组元素必须是常量表达式,不能使用变量
  • 用于定义数组长度的变量表达式必须为大于0的正整数

2,、二维数组的初始化

  • 分行给二维数组赋初值(最直观清楚)
  • 可以将所有数据写在同一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值
  • 可以对部分元素赋初值
  • 如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省

3,、二维数组的引用

二维数组与一维数组的引用一样要采用下标法。

引用形式:

数组名【下标1】【下标2】

下标可以是整型常量、整型变量和整形表达式。其编号从0开始。

例如:int a[2*4][3*3],i=10;

数组名a代表的是数组a在内存中的首地址,数组名是常量,不可对它赋值。

4、二维数组的输入输出(采用双重循环方式进行)

二维数组的输入:

#include<stdio.h>
int main()
{
    int a[2][3],i,j;
    for(i=0;i<2;i++)
       for(j=0;j<3;j++)
          scanf("%d",&a[i][j]);
    ......
    return 0;
}

二维数组的输出:

#include<stdio.h>
int main()
{
    int a[2][3],i,j;
    for(i=0;i<2;i++)
       for(j=0;j<3;j++)
          printf("%5d",a[i][j]);
    ......
    return 0;
}

5、二维数组程序举例

#include<stdio.h>
void main()
{
    int a[2][3] = { {1,2,3},{4'5'6} }, b[3][2], i, j;
    printf("array a:\n");
    for (i = 0; i < 2; i++)      //处理a数组中某一行中各元素
    {
        for (j = 0; j < 3; j++)      //处理a数组中某一列中各元素
        {
            printf("%5d", a[i][j]) ;  //输出a数组中i行j列元素
            b[j][i] = a[i][j];        //将a数组元素的值赋给b数组相应元素
        }
        printf("\n");
    }
    printf("array b:\n");             //输出b数组各元素
    for (i = 0; i < 3; i++)           //处理b数组中一行中各元素
    {
        for (j = 0; j < 2; j++)       //处理b数组中一列中各元素
            printf("%5d", b[i][j] );  //输出b数组元素
        printf("\n");
    }
}

三、字符数组

用来存放字符数据的数组是字符数组

c语言用字符数组存放字符串,字符数组中的各元素依次存放字符串的各字符。

1、字符数组的定义格式

char  数组名【常量表达式】

  • 字符串实际占有单元的数量等于字符串长度+1
  • 定义时注意考虑元素总个数应比实际长度多1

2、字符数组初始化

用单个字符对字符数组初始化

  • 如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。
  • 如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误;
  • 如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。
  • 如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即‘\0’)。

用字符串常量对字符数组初始化

3、字符数组的输入输出

单个字符输入输出(用格式符%c或字符输入函数)

#include<stdio.h>
int main()
{
    char c[5];
    int i;
    for(i=0;i<5;i++)
       scanf("%c",c[i]);
    for(i=0;i<5;i++)
       printf("%c",c[i]);
    printf("\n");
    return 0;
}

字符串整体或部分输入输出(用格式符%s)

char str[6];

scanf("%s",str);

  • 输入输出项必须是以字符串的地址形式出现;
  • 也可以是字符串常量:printf("%s\n","book");
  • 只能输入不包括空格、\t和\n的字符串;
  • 若要输入空格,用gets函数;
  • 数组名前不加&符号。

5.字符串处理函数

C函数库中提供一些用来处理字符串的函数:
puts 输出字符串
gets输入字符串
(使用时注意程序前边加:#include<stdio.h>)
strcat·字符串连接

strcpy字符串复制

strcmp 字符串比较

strlen 字符串长度

strlwr将字符串中大写字母换成小写字母

strupr将字符串中小写字母换成大写字母

(使用时注意程序前边加:#include<string.h>)
 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值