C语言(一维数组)

如果对你有帮助,请点个免费的赞吧,谢谢汪。(点个关注也可以!)\n\n如果以下内容需要补充和修改,请大家在评论区交流~

思维导图

1.数组

由一个或多个相同的数据类型组成的集合

特点

数据类型相同

内存连续

1 . 1 一维数组

格式

存储类型 数据类型 数组名[元素个数]

int arr[5];

n\]n:只有在定义时,表示元素个数;其他任何情况下都表示索引 #### **访问** **:** 数组名\[索引\]索引从0开始 a\[0\] 第一个元素 a\[4\] 第五个元素 int a\[5\]={5,6,7,8,9}; printf("%d %d %d\\n",a\[0\],a\[2\],a\[4\]); char b\[5\]={'h','e','l','l','o'};//数据类型保持一致 #### **数组名** **:** 数组名也是数组的首地址,是一个地址常量,不能为左值(=左边),不能被修改 int a\[5\]={5,6,7,8,9}; printf("%p %p\\n",a,\&a\[0\]); //地址编号一样 #### **数组大小** **:** int a\[5\]={5,6}; 数据类型\*元素个数 4\*5=20 sizeof printf("%ld\\n",sizeof(a)); 元素个数:决定数组最多存储数据个数 #### 初始化: 1. 全部初始化 int a\[5\]={5,6,7,8,9}; 2. 部分初始化 int a\[5\]={5,6};//56000 未赋值的部分,值默认为0 int a\[5\]={}; //00000 3. 未初始化 inta\[5\]; 值为随机值 a\[0\]=5; a\[1\]=6; #### **循环遍历** **:** int a\[5\]={}; for(int i=0;i\<5;i++) scanf("%d",\&a\[i\]); for(int i=0;i\<5;i++) printf("%d\\n",a\[i\]); 打印出输入的这五个数中的最大值 思路:输入完五个数后,假设第一个数最大,暂时为max 把max和剩下的四个依次比较 比较过程中遇见了更大值,对max重新赋值 比较结束,打印max ![426f5eb5c249704f42d007f51059913c.png](https://img-blog.csdnimg.cn/img_convert/426f5eb5c249704f42d007f51059913c.png) 问题:打印出输入的这五个数中的最大值,及位置,亲们可以试试 #### **内存分配** **:** 内存连续,地址编号差值取决于数据类型的大小 char 地址差1 int 地址差4 #### 清0函数: 1.bzero #include \ void bzero(void \*s, size_t n); 功能:数组元素清零 参数:s:要清零的数组的首地址 n:字节大小 返回值:无 2.memset #include \ void \*memset(void \*s, int c, size_t n); 功能:数组元素清零 参数:s:要清零的数组的首地址 n:字节大小c:要设置的值,设置为0 返回值:清零的数组的首地址 ### **1.2字符数组** 用来存储字符串,用" "包裹,以'\\0'为结束标志 #### **输入输出** **:** 1. for for(int i=0;i\<5;i++) scanf("%c",\&b\[i\]); for(int i=0;i\<5;i++) printf("%c",b\[i\]); 2. %s char b[6]={}; scanf("%s",b); printf("b:%s\n",b); //输入helloworld时,只有hello赋值成功 //scanf默认遇到空格或回车认为赋值结束 // scanf("%[^\n]",b); 3. gets puts get: char \*gets(char \*s); 功能:终端输入字符串 参数:数组首地址 返回值:数组首地址 puts: int puts(const char \*s); 功能:终端输出字符串 参数:数组首地址 返回值:输出字符个数 char b\[33\]={}; gets(b); puts(b); 特别的输入输出 #include int main(int argc, char const *argv[]) { char b[33] = {}; int i = 0,num = 0; scanf("%[^\n]",b); while (b[i] != '\0') { // printf("%c ",b[i]); if (b[i] == 'y') { num++; } i++; } printf("%d\n",num); return 0; } ## 题目: ### 3.输出数组中的最大值 #### 1. #include int main(int argc, char const *argv[]) { int a[5] = {}; for (int i = 0; i < 5; i++) { scanf("%d", &a[i]); } int max = a[0], min = a[0]; for (int i = 1; i < 5; i++) { max = max > a[i] ? max : a[i]; min = min < a[i] ? min : a[i]; } printf("%d\n", max); return 0; } ### 7.打印斐波那契数列前10位: #### 1.先赋值再打印 #include int main(int argc, char const *argv[]) { int a[10] = {1, 1}; for (int i = 2; i < 10; i++) { a[i] = a[i - 1] + a[i - 2]; } for (int i = 0; i < 10; i++) { printf("%d ", a[i]); } printf("\n"); return 0; } #### 2.一边赋值一边打印 ![d4443fe0d32641c67b31c922325bfb1c.png](https://img-blog.csdnimg.cn/img_convert/d4443fe0d32641c67b31c922325bfb1c.png) 优化版: #include int main(int argc, char const *argv[]) { int a[10] = {1, 1}; for (int i = 0; i < 10; i++) { if (i>=2) { a[i] = a[i - 1] + a[i - 2]; } printf("%d ", a[i]); } printf("\n"); return 0; } #### 启发: 如果遍历同一个数组遍历2次范围是包含关系,可以内嵌if条件,if内条件为交集的反集 ### 8.bzero(清0的运用) #include #include int main(int argc, char const *argv[]) { int a[5] = {99,88}; for (int i = 0; i < 5; i++) { printf("%d\n",a[i]); } putchar(10); bzero(a,sizeof(a));//bzero清0 for (int i = 0; i < 5; i++) { printf("%d\n",a[i]); } return 0; } ### 9.memset #include #include int main(int argc, char const *argv[]) { int a[5] = {22,33}; memset(a,0,sizeof(a)); for (int i = 0; i < 5; i++) { printf("%d",a[i]); } putchar(10); memset(a,'c',sizeof(a)); for (int i = 0; i < 5; i++) { printf("%c",a[i]); } putchar(10); memset(a,'1',sizeof(a)); for (int i = 0; i < 5; i++) { printf("%c",a[i]); } putchar(10); return 0; } ### 11。判断如果定义字符串错过后,以下定义方法是否正确 例:判断以下三种赋值方式是否正确 char a[10]; 1)a[10]="hello"; 2)a="hello"; 3)strcpy(a,"hello"); ### 12.练习: 终端输入一个字符串,打印其中'a'出现的次数 #include int main(int argc, char const *argv[]) { char b[33] = {}; int i = 0,num = 0; scanf("%[^\n]",b); while (b[i] != '\0') { // printf("%c ",b[i]); if (b[i] == 'y') { num++; } i++; } printf("%d\n",num); return 0; }

相关推荐
(❁´◡`❁)Jimmy(❁´◡`❁)30 分钟前
CF2188 C. Restricted Sorting
c语言·开发语言·算法
想放学的刺客44 分钟前
单片机嵌入式试题(第27期)设计可移植、可配置的外设驱动框架的关键要点
c语言·stm32·单片机·嵌入式硬件·物联网
Yana.nice1 小时前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月1 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
BackCatK Chen1 小时前
第 1 篇:软件视角扫盲|TMC2240 软件核心特性 + 学习路径(附工具清单)
c语言·stm32·单片机·学习·电机驱动·保姆级教程·tmc2240
小白跃升坊1 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey2 小时前
【Linux】线程同步与互斥
linux·笔记
舰长1152 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng2 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.2 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居