C语言总结(一维数组、二维数组、字符数组和字符串)

C语言总结(一维数组、二维数组、字符数组和字符串)C 语言总结第七章 数组一维数组一维数组的定义一维数组的引用一维数组的初始化程序举例二维数组及多维数组二维数组的定义二维数组元素的引用二维数组元素的初始化程序举例字符数组和字符串字符数组第七章 数组数组是构造数据类型之一数组 有序数据的集合 用数组名标识元素 属同一数据类型 用数组名和下标确定一维数组一维数组的定义定义方式 例 inta 6 一维数组的引用 1 数组

第七章、数组

数组是构造数据类型之一

  • 数组: 有序数据的集合,用数组名标识
  • 元素: 属同一数据类型,用数组名和下标确定

一维数组

一维数组的定义

定义方式:
在这里插入图片描述
例: int a[6]
在这里插入图片描述






一维数组的引用

1、数组必须先定义,后使用。
2、只能逐个引用数组元素,不能一次引用整个数组。
3、数组元素表示形式: 数组名[下标] ,下标可以是常量或整型表达式





一维数组的初始化

初始化方式:
在这里插入图片描述

说明:
1、数组不初始化,其元素值为随机数。
2、对static数组元素不赋初值,系统会自动赋以0值。
在这里插入图片描述
3、只给部分数组元素赋初值。
在这里插入图片描述
4、当全部数组元素赋初值时,可不指定数组长度。
在这里插入图片描述














程序举例

例1: 读10个整数存入数组,找出其中最大值和最小值
在这里插入图片描述

/*示例1*/ #include  
     #define SIZE 10 main() { 
    int x[SIZE],i,max,min; printf("Enter 10 integers:\n"); for(i=0;i<SIZE;i++) { 
    printf("%d:",i+1); scanf("%d",&x[i]); } max=min=x[0]; for(i=1;i<SIZE;i++) { 
    if(max<x[i]) max=x[i]; if(min>x[i]) min=x[i]; } printf("Maximum value is %d\n",max); printf("Minimum value is %d\n",min); } 

例2: 用数组求Fibonacci数列前20个数
在这里插入图片描述

/*示例2*/ #include  
     main() { 
    int i; int f[20]={ 
   1,1}; for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) { 
    if(i%5==0) printf("\n"); printf("%12d",f[i]); } } 

例3: 用冒泡法对10个数排序
在这里插入图片描述
在这里插入图片描述




/*示例3*/ #include  
     main() { 
    int a[11],i,j,t; printf("Input 10 numbers:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(j=1;j<=9;j++) for(i=1;i<=10-j;i++) if(a[i]>a[i+1]) { 
   t=a[i]; a[i]=a[i+1]; a[i+1]=t;} printf("The sorted numbers:\n"); for(i=1;i<11;i++) printf("%d ",a[i]); } 

例4: 用简单选择法对10个数排序

在这里插入图片描述

在这里插入图片描述

 /*示例4*/ #include  
      main() { 
    int a[11],i,j,k,x; printf("Input 10 numbers:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(i=1;i<10;i++) { 
    k=i; for(j=i+1;j<=10;j++) if(a[j]<a[k]) k=j; if(i!=k) { 
    x=a[i]; a[i]=a[k]; a[k]=x;} } printf("The sorted numbers:\n"); for(i=1;i<11;i++) printf("%d ",a[i]); } 

二维数组及多维数组

二维数组的定义

定义方式: 
在这里插入图片描述
在这里插入图片描述
数组元素的存放顺序
1、原因: 内存是一维的
2、二维数组: 按行序优先
3、多维数组: 最右下标变化最快












在这里插入图片描述
数组a[m][n],m行n列,共m*n个元素
在这里插入图片描述




任意元素a[i][j]在数组中的位置计算公式为:

i×n+j (从0开始)

a——数组的起始地址;a[0]——0行0列元素的地址。

二维数组元素的引用

形式: 数组名[下标][下标]

二维数组元素的初始化

程序举例

例1:将二维数组行列元素互换,存到另一个数组中
在这里插入图片描述

/*示例1*/ #include  
     main() { 
    int a[2][3]={ 
   { 
   1,2,3},{ 
   4,5,6}}; int b[3][2],i,j; printf("array a:\n"); for(i=0;i<=1;i++) { 
    for(j=0;j<=2;j++) { 
    printf("%5d",a[i][j]); b[j][i]=a[i][j]; } printf("\n"); } printf("array b:\n"); for(i=0;i<=2;i++) { 
    for(j=0;j<=1;j++) printf("%5d",b[i][j]); printf("\n"); } } 

例2:求二维数组中最大元素值及其行列号
在这里插入图片描述

/*示例2*/ #include  
     main() { 
    int a[3][4]={ 
   { 
   1,2,3,4}, { 
   9,8,7,6}, { 
   -10,10,-5,2}}; int i,j,row=0,colum=0,max; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) { 
    max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,\colum=%d\n",max,row,colum); } 

例3:分别求n阶方阵两条对角线上的元素之和

/*示例3*/ #define N 3 main() { 
    int i,j,a[N][N]; int sum1=0,sum2=0; for(i=0;i<N;i++) for(j=0;j<N;j++) scanf(%d”,&a[i][j]); for(i=0;i<N;i++) for(j=0;j<N;j++) if(i==j) sum1+=a[i][j]; for(i=0;i<N;i++) for(j=N-1;j>=0;j--) if((i+j)==N-1) sum2+=a[i][j]; printf(“sum1=%d,sum2=%d\n”,sum1,sum2); } 

字符数组和字符串

字符数组

定义 : 每个元素存一个字符,主要用来对字符串操作。
字符数组的初始化:

字符数组的引用:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述






在这里插入图片描述

字符串

字符串及其结束标志

在这里插入图片描述
字符串的输入输出
输入:




  • 用scanf函数
    (1).输入单个字符:%c 需用循环语句
    (2).输入字符串:%s scanf(“%s”,str);




  • 用gets函数:gets(str);

输出:

  • 用printf函数
    (1).输出单个字符:%c 需用循环语句
    (2).输出字符串:%s printf(“%s”,str);




  • 用puts函数:puts(str);

在这里插入图片描述

常用的字符串处理函数: 加粗样式包含在头文件 string.h

字符串输出函数puts

格式: puts(字符数组)
功能: 向显示器输出字符串(输出完,换行)
说明: 字符数组必须以‘\0’结束




字符串输入函数gets

格式: gets(字符数组)
功能: 从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’
说明: 输入串长度应小于字符数组维数




字符串连接函数strcat

格式: strcat(字符数组1,字符数组2)
功能: 把字符数组2连到字符数组1后面
返值: 返回字符数组1的首地址
说明:
1、字符数组1必须足够大
2、连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消, 新串最后加‘\0’










字符串拷贝函数strcpy

格式: strcpy(字符数组1,字符串2)
功能: 将字符串2,拷贝到字符数组1中去
返值: 返回字符数组1的首地址
说明:
1、字符数组1必须足够大
2、拷贝时‘\0’一同拷贝
3、不能使用赋值语句为一个字符数组赋值
在这里插入图片描述














字符串比较函数strcmp

格式: strcmp(字符串1,字符串2)
功能: 比较两个字符串
比较规则: 对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止
返值: 返回int型整数,
a. 若字符串1< 字符串2, 返回负整数
b. 若字符串1> 字符串2, 返回正整数
c. 若字符串1== 字符串2, 返回零
说明: 字符串比较不能用“==”,必须用strcmp














字符串比较函数strcmp

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198548.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:57
下一篇 2026年3月26日 下午2:58


相关推荐

  • ldapsearch命令详解_ldapsearch命令详解

    ldapsearch命令详解_ldapsearch命令详解参数用途-?打印关于使用ldapsearch的帮助。-aderef指定别名反向引用。请输入never、always、search或find。如果不使用此参数,缺省为never。-A只检索属性的名称,而不检索属性的值。-bbasedn指定用作搜索起始点的专有名称。使用引号来指定该值,例如:”ou=West,o=Acme,c=US”如果要搜索的服务器需要指定搜索…

    2025年6月16日
    4
  • 两个div在同一行,两个div不换行「建议收藏」

    两个div在同一行,两个div不换行

    2022年1月18日
    49
  • tomcat漏洞如何修复_tomcat升级步骤

    tomcat漏洞如何修复_tomcat升级步骤tomcat 安全漏洞处理,线上升级tomcat

    2022年4月20日
    167
  • sublime text3的激活码【中文破解版】

    (sublime text3的激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月2日
    99
  • cs架构和bs架构的区别举例子_bs和cs架构哪个安全

    cs架构和bs架构的区别举例子_bs和cs架构哪个安全最近发现自己基础非常薄弱,问起CS/BS的概念和区别竟然只知道个皮毛。赶快找了个文章仔细学习。C/S结构 即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。B/S结构 即Browser/Server(浏览器/服务…

    2025年10月23日
    4
  • STM32F4之SDIO接口

    STM32F4之SDIO接口一 SDIO 接口简介 SDIO 全称 SecureDigita 即安全数字输入输出接口 它是在 SD 卡接口的基础上发展而来 它可以兼容之前的 SD 卡 并可以连接 SDIO 接口设备 比如 蓝牙 WIFI 照相机等 SDIO 和 SD 卡规范间的一个重要区别是增加了低速标准 低速卡的目标应用是以最小的硬件开支支持低速 I O 能力 低速卡支持类似调制解调器 条码扫描仪和 GPS 接收器等应用 STM32 的 SDIO 控制器支持多媒体卡 MMC 卡 SD 存储卡 SDI O 卡和 CE ATA

    2026年3月17日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号