C语言中的数组使用方法及案例分享

1. 一维数组

1.1 一维数组的定义和初始化
1.1.1一维数组的定义

语法:
数据类型 数组名[数组长度]
解释说明:

  • 数组的数据类型就是数组元素的数据类型
  • 数组长度是数组能够包含的数组元素个数,为常量表达式

例子:
int a[10];

1.1.2 数值型一维数组的初始化

数组的初始化分为两种,一种为全部元素初始化,一种为部分元素初始化。详见下图:
1.1.2.1

1.1.3 字符串一维数组的初始化

字符型数组是:据类型为字符型的数组,可用于存储字符串,每一个元素存放一个字符常量。
对字符数组初始化时,可使用"\0"作为末尾元素值,存储字符串

char str[4]={'s','i','x','\0'};

也可以使用一个字符串常量为字符数组进行初始化,系统自动在字符串尾部增加一个结束标志’\0’

char str[4]='six';

如上,数组str的长度为4,内部占用5个字节空间。

1.2 一维数组的引用

数组元素的下标从0开始,当数组长度为n时,最末元素的下标是-1。
char str[4]的全部元素:str[0]、str[1]、str[2]、str[3]。
数组的输入和输出代码如下:

char str[4];
// 对第一个数组元素进行赋值
scanf("%c", &str[0]);
// 取第一个数组元素的值
printf("%c", str[0]);

2. 字符串

2.1 字符串拼接与复制

strcat(s1,s2):字符串拼接
strcpy(s1,s2) : 字符串复制
两个函数使用案例如下:

#include<stdio.h>
#include<string.h>
void main(){
    char s1[20] = "include", s2[10] = "stdio", s3[5] = "hi";
    printf(" The origin s1: %s\n", s1);
    printf(" The origin s2: %s\n", s2);
    printf(" The origin s3: %s\n", s3);
    printf(" The s2 and s3 : %s\n", strcat(s2, s3));
    // 进行拷贝
    strcpy(s1, s3);
    printf(" The s1: %s\n", s1);
    printf(" The s2: %s\n", s2);
    printf(" The s3: %s\n", s3);
    for (int i = 0; i < 20; i++){
        printf("%c ", s1[i]);
        if (i == 19) printf("\n");
    }
}

代码运行截图如下:
2.1

2.2 字符串比较函数

strcmp(s1,s2) :比较字符串s1和字符串s2的大小。
会自左至右逐个字符串比较字符串中个字符的ASCII码,遇到不同字符或’\0’时比较过程结束,此时,ASCII码值大的字符所在的字符串大。
该函数会返回一个数值.

  • s1与s2相同:值为0
  • s1大于s2:值为正数
  • s1小于s2:值为负数
2.3 大小写转换与字符长度

strlwr(s):将大写转为小写
strupr(s):将小写转为大写
strlen(s): 求字符串的长度

3.二维数组

3.1 二维数组的定义

语法:
数据类型 数组名[表达式1][表达式2]:

以下形式都是正确的定义:

int a[3][5];
int b[][3];
3.2 二维数组的初始化
3.2.1 按行初始化
int a[2][3]={{1,2,3},{4,5,6}};
int a[2][3]={{1,2,3},{4}}; //实际为1,2,3    4,0,0
3.2.2 按列初始化
int a[2][3]={1,2,3,4,5,6};
int a[2][3]={1,2,3}; //实际为1,2,3    0,0,0
3.2.3 省略行数的初始化
 int a[][4]={{1},{2,3}}; //实际为1,0,0,0    2,3,0,0
 int a[][3]={1,2,3,4,5,6,7} //实际为1,2,3   4,5,6   7,0,0

4.相关应用案例

4.1 输出斐波那契序列

将Fibonacci数列的前20项存储于一维数组,并输出

#include<stdio.h>
#define N 20
void main(){
    long int fib[N];
    int i;
    fib[0] = fib[1] = 1;
    for(i = 2; i < N; i++){
        fib[i] = fib[i - 1] + fib[i - 2];
    }
    for(i = 0; i < N; i++){
        printf("%-10ld", fib[i]);
        if ((i + 1) % 5 == 0) printf("\n");
    }
}
4.2 字符串拼接
#include<stdio.h>
#include<string.h>
void main(){
    char s1[20] = "include", s2[10] = "stdio", s3[5] = "hi";
    printf(" The origin s1: %s\n", s1);
    printf(" The origin s2: %s\n", s2);
    printf(" The origin s3: %s\n", s3);
    printf(" The s2 and s3 : %s\n", strcat(s2, s3));
    // 进行拷贝
    strcpy(s1, s3);
    printf(" The s1: %s\n", s1);
    printf(" The s2: %s\n", s2);
    printf(" The s3: %s\n", s3);
    for (int i = 0; i < 20; i++){
        printf("%c ", s1[i]);
        if (i == 19) printf("\n");
    }
}

4.3 杨辉三角

打印出杨辉三角,如下图所示
4.3

实现完整C代码如下:

#include<stdio.h>
# define N 6
void main(){
    int yh[N][N], i, j;
    for (i = 0; i < N; i++){
        yh[i][0] = 1; 
        yh[i][i] = 1;
    };
    for (i = 2; i < N; i++){
        for (j = 1; j < i ; j++){
            yh[i][j] = yh[i - 1][j - 1] + yh[i - 1][j];
        }
    }
    for (i = 0; i < N; i++){
        for (j = 0; j <= i; j++){
            printf("%5d", yh[i][j]);
        }
        printf("\n");
    }
}

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C语言程序设计教案数组是针对学生学习C语言编程而编写的一份教学计划。这份教案主要围绕着数组这一主题展开,旨在帮助学生掌握C语言数组的概念、用法和基本操作。 首先,教案会引导学生了解数组的概念,即一组相同数据类型的元素组成的有序集合。教案会通过实际的例子和图示来解释数组的结构和特点,让学生对数组有一个直观的认识。 接着,教案会教导学生如何声明和初始化数组,包括数组的命名规则、数组元素类型的选择和数组长度的定义。教案也会提供一些练习和案例,让学生动手实践,加深对数组的理解。 教案还会详细讲解如何使用数组进行元素的读取、修改和赋值操作。学生将学会使用数组下标来定位和访问数组的元素,并且了解数组下标从0开始的原因。教案会通过多个示例和练习,让学生熟练掌握这些操作。 此外,教案也会介绍一些常见的数组操作和技巧,如数组的遍历、数组元素的查找和数组的排序等。学生将会学习使用循环结构和条件判断来实现这些功能,提高对数组操作的熟练度。 最后,教案还会提供一些综合性的习题和项目,让学生进行实践和巩固所学知识。通过实际的编程练习,学生将能够独立编写基于数组的程序,提升解决问题的能力和编程水平。 总之,C语言程序设计教案数组是一份系统化、全面的教学材料,通过详细的讲解和练习,帮助学生深入理解和掌握C语言数组的应用和编程技巧,为后续学习打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

theskylife

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值