C语言(一维数组)

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

思维导图

 

927e3db32e822b21209177080085e9d8.jpeg

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

问题:打印出输入的这五个数中的最大值,及位置,亲们可以试试

 

 

内存分配

内存连续,地址编号差值取决于数据类型的大小

char 地址差1

int 地址差4

 

清0函数:

1.bzero

#include <strings.h>

void bzero(void *s, size_t n);

功能:数组元素清零

参数:s:要清零的数组的首地址 n:字节大小

返回值:无

2.memset

#include <string.h>

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<stdio.h>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 <stdio.h>
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 <stdio.h>
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

优化版:

#include <stdio.h>
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<stdio.h>
#include<strings.h>
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清0for (int i = 0; i < 5; i++){printf("%d\n",a[i]);}return 0;
}

9.memset

#include<stdio.h>
#include<string.h>
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<stdio.h>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;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mount Image Pro,在取证安全的环境中挂载和访问镜像文件内容

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务&#xff0c;并针对企业面临的数据安全风险&#xff0c;提供专业的相关数据安全培训。 天津鸿萌科贸发展有限公司是 GetData 公司数据恢复与取证工…

上市公司企业数字金融认知数据集(2001-2023年)

一、测算方式&#xff1a;参考C刊《经济学家》王诗卉&#xff08;2021&#xff09;老师的做法&#xff0c;数字金融认知使用每万字年报描述中包含的对数字金融相关关键词的提及次数&#xff0c;关键词为&#xff1a;互联网、数字化、智能、大数据、电子银行、金融科技、科技金融…

【Mybatis】动态SQL+配置文件+数据库连接池+企业规范(10)

本系列共涉及4个框架&#xff1a;Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点&#xff0c;根据序号学习即可。 目录 本系列共涉及4个框架&#xff1a;Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点&#xff0c;根据序号学习即可。 …

Web3的去中心化社交网络:区块链技术如何改变互动方式

随着互联网技术的不断进步&#xff0c;社交网络正在经历一场深刻的变革。Web3&#xff0c;作为新一代互联网技术的代表&#xff0c;正通过区块链和去中心化理念改变着我们与他人互动的方式。传统的社交网络通常由大型公司控制&#xff0c;用户数据的集中化管理和隐私问题备受关…

大数据-191 Elasticsearch - ES 集群模式 配置启动 规划调优

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

短信登录的实现-redis和session的比较

目录 短信登录功能的实现一&#xff1a;基于session进行短信登录1&#xff1a;发送验证码2&#xff1a;登录3&#xff1a;登录验证拦截器4&#xff1a;隐藏用户敏感信息二&#xff1a;session的集群共享问题三&#xff1a;基于redis实现短信登录登录的刷新问题 短信登录功能的实…

中欧科学家论坛暨第六届人工智能与先进制造国际会议(AIAM 2024)在德国法兰克福成功举办,两百余名中外科学家共襄盛举

2024年10月20至21日&#xff0c;首届中欧科学家论坛在德国法兰克福的SAALBAU Titus Forum国际会议中心成功举行。中国驻法兰克福总领事馆伍鹏飞副总领事、德国兰斯巴赫-鲍姆巴赫市市长Michael Merz亲自出席并致辞。2004年诺贝尔化学奖得主Aaron Ciechanover教授和法国国家科学院…

直接删除Github上的文件

直接删除Github上的文件 说明&#xff1a;此操作只删除Github上的文件&#xff0c;本地仓库文件不受影响 1.确定要删除哪个分支文件,以删除main为例&#xff0c; 1.找到本地仓库位置以StudyNote为例&#xff0c;右键 bash here 2.打开命令窗口&#xff0c;将Github的StudyN…

SpringBoot篇(运维实用篇 - 日志)

目录 一、简介 二、代码中使用日志工具记录日志 1. 操作步骤 步骤1&#xff1a;添加日志记录操作 步骤2&#xff1a;设置日志输出级别 步骤3&#xff1a;设置日志组 2. 知识小结 三、优化日志对象创建代码 1. 实例 2. 总结 四、日志输出格式控制 1. 实例 2. 总结 …

Java多线程编程基础

目录 编写第一个多线程程序 1. 方式一 : 继承Thread类, 重写run方法 2. 方式二: 实现Runnable接口, 重写run方法 3. 方式三: 使用Lambda表达式 [匿名内部类] [Lambda表达式] 在上个文章中, 我们了解了进程和线程的相关概念. 那么, 在Java中, 我们如何进行多线程编程呢? …

postman的脚本设置接口关联

pm常用的对象 变量基础知识 postman获取响应结果的脚本的编写 下面是购物场景存在接口信息的关联 登录进入---搜索商品---进入商品详情---加入购物车 资源在附件中&#xff0c;可以私聊单独发送 postman的SHA256加密 var CryptoJS require(crypto-js);// 需要加密的字符串 …

ip地址分为几大类-IP和子网掩码对照表

一、IP地址的基本概念与分类 IP地址是用于在网络中标识每个设备的逻辑地址。互联网协议将IP地址分为A、B、C、D和E五类&#xff0c;其中A、B、C三类最常用&#xff0c;它们主要根据地址的首位位数以及用途进行划分。 A类地址&#xff1a; 范围&#xff1a;0.0.0.0 - 127.255.2…

docker占用磁盘过多问题

我在windows系统上用docker&#xff0c;安装在C盘环境下&#xff0c;我发现C盘占用了大量的空间&#xff0c;查找后发现是docker的映像文件占用的&#xff0c;于是开始清理&#xff0c;中间还踩个坑&#xff0c;记录一下&#xff0c;下次需要的时候方便找。 踩坑 我本想移动映…

Xss_less靶场攻略(1-18)

xss-lab-less1 ur特殊字符转义 存在url中 转义符为 %2B& 转义符为 %26空格 转义符为 或 %20/ 转义符为 %2F? 转义符为 %3F% 转义符为 %25#转义符为 %23 转义符为 %3Dimg 标签懒加载 在XSS攻击中&#xff0c;img标签的src属性是一个常见的攻击向量&#xff0c;因为它可以…

聊聊Web3D 发展趋势

随着 Web 技术的不断演进&#xff0c;Web3D 正逐渐成为各行业数字化的重要方向。Web3D 是指在网页中展示 3D 内容的技术集合。近年来&#xff0c;由于 WebGL、WebGPU 等技术的发展&#xff0c;3D 内容已经能够直接在浏览器中渲染&#xff0c;为用户提供更加沉浸、互动的体验。以…

【传知代码】图像处理解决种子计数方法

文章目录 一、背景及意义介绍研究背景农业考种需求传统计数方法的局限性人工计数仪器设备计数 研究意义提高育种效率提高计数准确性广泛的适用性数据存档与分析便利 二、概述三、材料与数据准备以及方法介绍整体流程图像采集图像预处理形态学操作腐蚀运算开运算 图像二值化种子…

uniapp开发【点击展示弹窗功能】

一、效果展示 二、代码 <template><view class="mini"><view class="block_item" @click="$refs.popup.op

centos7.X zabbix监控参数以及邮件报警和钉钉报警

1&#xff1a;zabbix安装 1.1 zabbix 环境要求 硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘&#xff08;最低&#xff09; 操作系统: Linux centos7.2 x86_64 Python 2.7.x Mariadb Server ≥ 5.5.56 httpd-2.4.6-93.el7.centos.x86_64 PHP 5.4.161.2 zabbix安装版本 [rootnod…

根据输入的详细地址解析经纬度

摘要&#xff1a; 今天遇到一个需求&#xff1a;就是做客户导入的时候因为导入的客户地址的时候没有经纬度的&#xff0c;但是同步的时候需要经纬度的&#xff0c;所以还是要根据客户提供的详细地址解析出来对应的经纬度&#xff01;回填到对应的经纬度的表单之中进行客户的同步…

upload-labs靶场Pass-21

upload-labs靶场Pass-21 本关上传方法众多&#xff0c;但是应该考察的是数组后缀绕过&#xff0c;所以我的上传围绕此展开 1.分析源码 $is_upload false; // 初始化上传状态为false $msg null; // 初始化消息变量为null// 检查是否有文件上传 if(!empty($_FILES[upload_fi…