C语言基础——数组与字符串

news2024/11/15 13:32:57

文章目录

  • 一、数组
    • 1.数组的意义
    • 2.数组类型如何表示
    • 3.数组变量的定义
      • 3.1求数组类型大小
      • 3.2数组的长度
    • 4.数组中成员的使用
      • 4.1数组的下标
      • 4.2如何表示数组成员
    • 5.常见问题
    • 6.冒泡排序
    • 7.字符数组 字符类型数组
      • 7.1定义
      • 7.2物联网 -- 服务器/web -- 上层使用大多是字符串。
      • 7.3定义1个字符型数组
      • 7.4元素表示
      • 7.5对字符型数组初始化
  • 二、字符串(函数)及使用FunctionSelector查找其函数
    • 1.字符串操作函数--字符串复制、连接、比较
      • 1.1格式化输出字符串:
    • 2.字符串函数
      • 2.1strlen()--求字符串长度
      • 2.2strcpy() -- 字符串拷贝函数
      • 2.3strcat() -- 字符串连接函数
      • 2.4strcmp() -- 字符串比较函数
      • 2.5strstr() -- 字符串查找字符串函数(了解)
      • 2.6相关函数查找
        • 2.6.1Linux系统提供了man手册 -- 所有函数解释
        • 2.6.2函数查找器--FunctionSelector
  • 三、二维数组
    • 1.数组的类型怎么表示?类型 []
    • 2.特殊使用:
      • 2.1给二维数组初始化
      • 2.2数组在定义时,长度必须初始化。
      • 2.3数组的类型:类型 [数组的长度] -- 构造类型:代表相同类型数据的集合。
      • 2.4数组中的元素如何表示?
      • 2.5数组中的元素操作

一、数组

1.数组的意义

数组 – 类型 – 构造类型
数组是相同类型数据的集合。

2.数组类型如何表示

类型 [数组长度];//类型 [] char [] int [] float [] double []
类型:4大基本类型 – char int float double 数组 指针 结构体
[] – 一定不可以省略
数组长度 – 定义变量时,告诉编译器,该数组要开辟多大空间。

3.数组变量的定义

类型 标识符=初始化;
标识符:1.数字字母和下划线组成
2.数字不可以放开头
3.不能与关键字相同
4.区分大小写

3.1求数组类型大小

sizeof(变量名);单位:字节。

3.2数组的长度

3.2.1数组的长度是常量。
不写长度会报错,提示:不清楚数组变量开辟的空间大小。
3.2.2求一个数组的长度:
sizeof(数组名)/sizeof(数组名[0]);
sizeof(数组类型[数组长度])/sizeof(数组类型);
如:在这里插入图片描述
3.2.3数组的变量如何初始化
如果1个数组没有定义长度,但是有初始化,长度 == 初始化长度。
在这里插入图片描述

4.数组中成员的使用

4.1数组的下标

0~数组长度-1

4.2如何表示数组成员

数组名[下标];
ps:有第0个存在,即0、1、、、、n

5.常见问题

5.1
high_all – 类型是什么? 数组 == int [5]
high_all[0] – 类型是什么? int
5.2
数组的元素和普通变量一样使用。
5.2.1给一个元素赋值? – high_all 的第3个元素赋值为180

		int  high_all[5];
		high_all[3]=180;

5.2.2如何通过scanf给1个元素赋值? 给第2个元素赋值?

		int high_all[5];
		scanf("%d",&high_all[2]);

5.2.3如何通过printf打印1个成员值? 打印第2个元素的值?

		printf("%d\n",high_all[2]);

5.3
给一个数组整体赋值
5.3.1在定义时,整体赋值
int high_all[5]={160,170,180,190,200};
其他时候,不可以整体赋值,通过for循环来赋值。
在这里插入图片描述
扩展:数组开辟的空间是连续的。

int high_all[5]={120,130,140};

数组长度还是5。

6.冒泡排序

int num[5]={88,68,98,78,18}; – 从小到大排列。

#include "stdio.h"

int main()
{
	int num[5]={88,68,98,78,18};//18 68 78 88 98
	
	int i=0,j=0;
	int temp = 0;
	for(i=0;i<5;i++)//5个位置
	{
		for(j=0;j<4-i;j++)//从[0]~[4-i]个元素进行比较和换位
		{
			if(num[j] > num[j+1])//前面的数,大于后面的数,进行交换
			{
				temp = num[j];
				num[j] = num[j+1];
				num[j+1] = temp;
			}
		}
	}
	for(i=0;i<5;i++)
	{
		printf("%d\t",num[i]);
	}
	printf("\n");
}

7.字符数组 字符类型数组

7.1定义

char 标识符[数组的长度];
标识符:1.数字 字母和下划线组成
2.数字不可以放开头
3.区分大小写
4.不可以与关键字相同
意义:1.字符型在显示的使用,使用比较多。

7.2物联网 – 服务器/web – 上层使用大多是字符串。

7.2.1.字符串 – 常量 = 如何表示?”china” “1234567890”
字符串长度:china ---- 长度=5 大小=6 (‘c’ ‘h’ ‘i’ ‘n’ ‘a’ ‘\0’) – 字符串结束标志:’\0’
7.2.2.字符串数组:字符数组中包含1个字符串。

7.3定义1个字符型数组

char str[1024];//长度是1024

7.4元素表示

数组名[下标];
str[0]~str[1023];

7.5对字符型数组初始化

如:china
在这里插入图片描述
7.5.1字符串数组初始化(用字符串常量初始化)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7.5.2用%s就可以操作字符串 – 字符串有结束标志’\0’
在这里插入图片描述
打印上述两个字符串的内容:
printf(“%s\n”,str1);
printf(“%s\n”,str2);
结果未知:
在这里插入图片描述
7.5.3把上述字符串数组str1中的 c 变为 C
在这里插入图片描述

二、字符串(函数)及使用FunctionSelector查找其函数

1.字符串操作函数–字符串复制、连接、比较

1.1格式化输出字符串:

printf(“%s\n”,”china”);
printf(“%s\n”,存放字符串数组的数组名);
在这里插入图片描述
从屏幕上获取字符串:
1.定义1个字符型数组:保存获取到的字符串
2.scanf(“%s”,数组名);
在这里插入图片描述
— scanf – 获取字符串时,遇到空格会停止输入。
gets()函数 – 从屏幕上获取字符串
puts() – 输出字符串

2.字符串函数

2.1strlen()–求字符串长度

函数的功能:求一个字符串长度,结果不包含’\0’.
在FunctionSelector中查找该函数:
在这里插入图片描述
使用方式:
在这里插入图片描述

2.2strcpy() – 字符串拷贝函数

函数的功能:复制粘贴的一个字符串。
在FunctionSelector中查找该函数:
在这里插入图片描述
使用方式:
在这里插入图片描述

2.3strcat() – 字符串连接函数

函数的功能:将一个字符串连接到另一个字符串后面并打印。
在FunctionSelector中查找该函数:
在这里插入图片描述
使用方法:
在这里插入图片描述

2.4strcmp() – 字符串比较函数

函数功能: 用于判断两个字符串是否相等 == 0 != 0不相等
使用方法:
在这里插入图片描述
结果: str1[下标] - str2[下标]

2.5strstr() – 字符串查找字符串函数(了解)

使用方法:

在这里插入图片描述

2.6相关函数查找

2.6.1Linux系统提供了man手册 – 所有函数解释

例如: man gets(Linux命令)
退出:输入q

2.6.2函数查找器–FunctionSelector

在这里插入图片描述

三、二维数组

1.数组的类型怎么表示?类型 []

数组的数组:类型 [][]
例如:
int num[3][4]
1.1总结:二维数组类型的表示:类型 [行的长度][列的长度];(理解)
1.2二维数组的变量如何定义? x+y轴 – 表述更多的数据
类型 标识符[行的长度][列的长度];
例如:描述咱们班级的成绩?
使用一维数组:int score[32];
使用二维数组:int score[5][10]; – 更好的定位
例如:GPS数据 东经(西经)、北纬(南纬) – 二维数组表述更好。
1.3二维数组中的元素如何调用?
数组名[行下标][列下标];
行下标:0~行的长度-1
列下标:0~列的长度-1

        int num[3][4];
        
        num[0][0] num[0][1] num[0][2] num[0][3]
        num[1][0] num[1][1] num[1][2] num[1][3]
        num[2][0] num[2][1] num[2][2] num[2][3]

元素的使用和普通变量一样。

2.特殊使用:

2.1给二维数组初始化

在这里插入图片描述
在这里插入图片描述
没有初始化的位置自动补0:
在这里插入图片描述
在这里插入图片描述

2.2数组在定义时,长度必须初始化。

//可以省略行长度,不能省略列长度
省略行的长度:
在这里插入图片描述

2.3数组的类型:类型 [数组的长度] – 构造类型:代表相同类型数据的集合。

类型:char int float double 数组 指针 结构体

2.4数组中的元素如何表示?

数组名[下标]。
下标:0~数组的长度-1

2.5数组中的元素操作

– 和普通变量一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/410906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javaweb考研辅导网站交流

设计内容&#xff1a; 前台技术&#xff1a;html/css/javascript。 后台技术&#xff1a;java/jspServlet/struts2框架。 数据库技术&#xff1a;mysql。 具体功能模块主要包括&#xff1a; 1、考研浅谈&#xff1a;专业不同的热心的考研成功者能够发布不同科目的复习心得等。…

JavaScript 基础入门速成下篇

JavaScript 高级 数组及操作方法 数组&#xff0c;即一组数据的集合&#xff0c;JavaScript中&#xff0c;数组里面的数据可以时不同类型的&#xff1b; 定义数组的方法 1. 对象实例创建 new Array 2. 直接量创建 // 对象实例创建 var arr new Array(1,2,3)// 直接量…

4.11每日一题

翀某说&#xff1a;C语言快忘了&#xff0c;决定每日一练&#xff0c;周末超难度训练 当然了翀某说&#xff0c;python自学中&#xff0c;所以每道题除了C语言之外&#xff0c;看看python能不能写 题目给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组…

入门前端框架Layui

&#x1f3ed; 作者&#xff1a;哈桑c&#xff08;CSDN平台&#xff09; ⛺️ 专栏&#xff1a;前端自学记录 文章目录文章简介说在前面的话需要具备的基础1、Layui 的介绍2、Layui 的下载和使用3、Layui 示例4、Layuimini layui-vue结语文章简介 本文为大家介绍前端 UI 组件…

【Linux】进程概念二

文章目录进程概念二1. 进程状态2. 进程状态查看3. 僵尸进程3.1 僵尸进程的危害4. 孤儿进程5. 环境变量5.1 常见环境变量5.2 查看环境变量的方法5.3 测试PATH5.4 环境变量相关的命令5.5 环境变量的组织方式5.6 通过代码获取环境变量6. 程序地址空间7. 进程地址空间8. 扩展8.1 为…

前端学习路线(2023版)超详细

一&#xff1a;前端开发基本功 俗话说的好“不积跬步&#xff0c;无以至千里”&#xff0c;学习也是一样的从简单的基础的知识点开始慢慢积累&#xff0c;首先就是掌握前端语言的基础知识3大部分&#xff08;HTML、CSS、页面制作工具&#xff09;其中包含了元素和属性、表单和图…

Adobe 中国

Adobe中国是Adobe公司在中国设立的分支机构&#xff0c;其总部位于上海。 Adobe中国的主要业务包括销售Adobe公司的软件产品、提供技术支持和服务、开展市场推广和宣传等工作。 作为全球领先的创意设计软件提供商&#xff0c;Adobe中国向中国用户提供了一系列功能强大的软件产…

webpack配置本地TypeScript编译环境和开启本地服务

目录 1.创建一个文件夹 2.初始化一个package.json文件对我们安装包进行记录 3.安装webpack 4.配置webpack.config.js文件 1.创建一个文件夹 2.初始化一个package.json文件对我们安装包进行记录 执行npm init&#xff0c;文件命名为ts_demo&#xff0c;然后一直回车。 3.安装…

【Spring6】| Spring IoC注解式开发

目录 一&#xff1a;Spring IoC注解式开发 1. 回顾注解 2. 声明Bean的四个注解 3. Spring注解的使用 4. 选择性实例化Bean 5. 负责注入的注解&#xff08;重点&#xff09; 5.1 Value 5.2 Autowired与Qualifier 5.3 Resource 6. 全注解式开发 一&#xff1a;Spring I…

开放式耳机的颠覆之作!南卡OE Pro新皇降临!佩戴和音质双重突破

千呼万唤的南卡OE Pro终于要在最近正式官宣上线&#xff0c;此消息一经放出&#xff0c;蓝牙耳机市场就已经沸腾。NANK南卡品牌作为国内的音频大牌&#xff0c;发展和潜力一直备受业内关注&#xff0c;这次要上线的南卡OE Pro更是南卡十余年来积累的声学技术结晶之一。 据透露…

ChatGPT惨遭围剿?多国封杀、近万人联名抵制……

最近&#xff0c;全世界燃起一股围剿ChatGPT的势头。由马斯克、图灵奖得主Bengio等千人联名的“暂停高级AI研发”的公开信&#xff0c;目前签名数量已上升至9000多人。除了业内大佬&#xff0c;欧盟各国和白宫也纷纷出手。 最早“动手”的是意大利&#xff0c;直接在全国上下封…

【Redis】Redis 是如何保证高可用的?(背诵版)

Redis 是如何保证高可用的&#xff1f;1. 说一下 Redis 是如何保证高可用的&#xff1f;2. 了解过主从复制么&#xff1f;2.1 Redis 主从复制主要的作用是什么?2.2 Redis 主从模式的拓扑结构&#xff1f;&#xff08;1&#xff09;一主一从结构&#xff08;2&#xff09;一主多…

客快物流大数据项目(一百一十一):Spring Boot项目部署

文章目录 Spring Boot项目部署 一、​​​​​​​​​​​​​​项目打包 二、运行 Spring Boot项目部署

Hadoop之Mapreduce序列化

目录 什么是序列化&#xff1a; 什么是反序列化&#xff1a; 为什么要序列化&#xff1a; Java的序列化&#xff1a; Hadoop序列化: 自定义序列化接口&#xff1a; 实现序列化的步骤&#xff1a; 先看源码进行简单分析&#xff1a; 序列化案例实操&#xff1a; 案例需…

【JavaEE】常见的锁策略都有哪些?

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶在Java多线程中&#xff0c;常见的锁策略都有哪些&#xff1f;这些锁策略应该怎么理解&#xff1f; &#xff08;乐观锁vs悲观锁&#xff0c;轻量级锁vs重量级锁&#xff0c;自旋锁vs挂起等待…

Day919.生产就绪 -SpringBoot与K8s云原生微服务实践

生产就绪 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于生产就绪的内容。 互联网软件交互阶段 如上&#xff0c;3个阶段中的“”生产就绪”是什么&#xff1f; 什么是生产就绪 生产就绪是指在生产过程中所需的一切准备工作已经完成&#xff0c;可以开始生产的状…

MySQL视图 视图的作用、视图常用语法

视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&#xff0c;视图只保存了查询的SQL逻辑&#xff0c;不保存查询结果。 常…

Qt音视频开发27-ffmpeg视频旋转显示

一、前言 用手机或者平板拍摄的视频文件,很可能是旋转的,比如分辨率是1280x720,确是垂直的,相当于分辨率变成了720x1280,如果不做旋转处理的话,那脑袋必须歪着看才行,这样看起来太难受,所以一定要想办法解析到视频的旋转角度,然后根据这个角度重新绘制。在窗体那边也…

SpringBoot使用Spring Validation案例

简单使用 Java API规范(JSR303)定义了Bean校验的标准validation-api&#xff0c;但没有提供实现。hibernate validation是对这个规范的实现&#xff0c;并增加了校验注解如Email、Length等。 Spring Validation是对hibernate validation的二次封装&#xff0c;用于支持spring m…

Machine Learning-Ex4(吴恩达课后习题)Neural Networks Learning

目录 1. Neural Networks 1.1 Visualizing the data 1.2 Model representation 1.3 Feedforward and cost function 1.4 Regularized cost function 2. Backpropagation 2.1 Sigmoid gradient 2.2 Random initialization 2.3 Backpropagation 2.4 Gradient Checking…