C语言基础-循环与数组

news2024/10/6 20:26:21

目录

循环

while 循环:

for 循环:

do while 循环:

中断循环:

break

continue:

数组

数组:用来装一组数的类型。声明形式如下:

定义数组类型变量:

下标:即各元素的编号,编号从 0 开始

二维数组

二维数组初始化:

二维数组元素遍历:

对二维数组元素赋值


循环

循环就是重复的执行一段代码

循环结构有三种:while 循环,for 循环,do while 循环

while 循环:

形式:
while(条件)
{
         code;
         //条件为真就重复执行
}
例题:
输出 1,2,3,4,5
        int i = 1;
        while (i <= 5)
        {
          printf("%d ", i);
          i++;
        }

注意点:
1.不要在小括号后面加分号
2.只有一条语句的时候可以不加大括号
3.条件恒为真的时候就是死循环

for 循环:

循环形式:
for (int i = 1; i<10; i++)
{
   code;
}

三要素:
要素 1、循环控制变量有初始值,即 i=1,初始值不一定是 1,根据需要来设置
要素 2、循环控制变量参与条件,即 i<10
要素 3、循环控制变量规律变化,比如 i++,i+=3,i--等等,按照规律变化,乱变不行
小括号内被两个分号分成三部分,分别是要素 1,要素 2,要素 3
举例:输出 1,2,3,4,5
int i;
for (i = 1; i <= 5; i++)
{
    printf("%d ", i);
}

do while 循环:

形式如下
int i = 1;
do
{
        printf("%d ", i);        
        i++;
}while(i <= 5);

//有分号
执行过程:先执行,后判断条件
用得比较少
对比:
while for 叫入口条件循环,二者用谁都行,习惯哪个用哪个,没有好坏。
do while 叫出口条件循环,该循环至少执行一次
初始循环条件为真时,三者用谁都行。初始循环条件为假时,for,while 一次都不执行,do while
执行 1 次。

中断循环:

break

举例如下:
int i = 1;
while (i <= 5)
{
        if (i==3)  //i==3 时中断跳出循环
        break;
        printf("%d ", i);
        i++;
}

执行过程:
1、i==1,i<=5 为真,执行循环,3 == i 为假,输出 i 即 1,然后 i++,i 变为 2
2、i==2,i<=5 为真,执行循环,3 == i 为假,输出 i 即 2,然后 i++,i 变为 3
3、i==3,i<=5 为真,执行循环,3 == i 为真,break 跳出循环

continue:

结束本次循环,跳到循环头,进行下一轮循环

如下:
int i;
for (i = 1; i <= 5; i++)
{
        if (i == 2 || i == 5)
        continue;
        printf("%d ", i);
}

执行过程:
0、i=1,i==1,部分 1 只执行一次
1、i==1,i<=5 为真,执行循环,if 条件为假,继续执行,输出 i 即 1
2、i++,i 变为 2,i<=5 为真,执行循环,if 条件为真,跳到循环头
3、i++,i 变为 3,i<=5 为真,执行循环,if 条件为假,继续执行,输出 i 即 3
4、i++,i 变为 4,i<=5 为真,执行循环,if 条件为假,继续执行,输出 i 即 4
5、i++,i 变为 5,i<=5 为真,执行循环,if 条件为真,跳到循环头
6、i++,i 变为 6,i<=5 为假,结束循环

数组

数组:用来装一组数的类型。声明形式如下:

int a[10]; //声明数组 a
int 表示该数组用来装 int 类型的元素,其他类型就写其他的,比如 double b[10];
a 是数组名字,是合法的 C 语言标识符即可(比如不能取scanf)
[ ]是指示的作用,表示变量 a 是数组变量,没有[ ]即 int a,就是普通的整形变量
10 表示该数组最多装 10 个 int 类型数据,个数自定。

定义数组类型变量:

int a[10] = {6,4,7,3,8,3,2,8,1,0}; //初始化形式,最多初始化 10 个元素
int a[10] = {6,4,7,3,8}; //初始化部分元素,其他元素默认初始化成 0
int a[10] = {0}; //10 个元素全部初始化 0
int a[ ] = {6,4,7,3}; //初始化时可不写元素个数,系统根据元素多少自定

下标:即各元素的编号,编号从 0 开始

int a[5] = {4,2,7,8,4};
5 个元素的标号依次是:0,1,2,3,4 最大下标是元素个数-1,即 5-1
元素访问:数组名[下标]
5 个元素依次是:a[0],a[1],a[2],a[3],a[4]
相当于 5 个变量,即变量名字,跟 int c = 9;的 c 的用法一模一样

二维数组

上面学习的叫一维数组,此时就是二维数组,对比定义如下:

int a[5];

//一维数组

int c[3][4]; //二维数组

一维数组:元素是数据类型的的数组

二维数组:元素是一维数组的数组,本质还是一维数组

c 是 3 个元素的一维数组,每个元素是 含有4个 元素的一维数组。

二维数组一般理解为行列,对初学者比较友好,int a[行][列],即 3 行 4 列,可抽象如下

二维数组初始化:

int a[3][2] = {{3,2},{6,5},{8,7}}; //内部大括号对应每个小一维数组
3 2
6 5
8 7
int a[3][2] = {{3},{9},{8,7}};
//初始化部分元素,其他默认 0
3 0
9 0
8 7
int a[3][2] = {3,9,8 };
//没有内部大括号,就依次初始化各元素,其他为 0
3 9
8 0
0 0
int a[ ][2] = {3,9,8};
//初始化时,可不写行,系统根据数据个数计算行,2 行
3 9
8 0
下标:行下标与列下标,都是从 0 开始
另一个角度
a[0]是第 1 个小数组的数组名字
a[1]是第 2 个小数组的数组名字
a[2]是第 3 个小数组的数组名字
第一个小数组的第一个元素就是 a[0][0]

二维数组元素遍历:

int i, j, a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };

for (i = 0; i < 3; i++)
    for (j = 0; j < 4; j++)
    {
       printf("%d ", a[i][j]);
    }
  
}

对二维数组元素赋值

scanf( "%d" , &a[2][2]);

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

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

相关文章

初出茅庐的小李博客之ESP8266获取自己B站粉丝数据

获取方式 ESP8266发起HTTP请求解析json数据 获取粉丝API: https://api.bilibili.com/x/relation/stat?vmid349513188API浏览器测试返回结果 {"code": 0,"message": "0","ttl": 1,"data": {"mid": 349513188, …

Python+Appium实现自动化测试

一、环境准备 1.脚本语言&#xff1a;Python3.x IDE&#xff1a;安装Pycharm 2.安装Java JDK 、Android SDK 3.adb环境&#xff0c;path添加E:\Software\Android_SDK\platform-tools 4.安装Appium for windows&#xff0c;官网地址 Redirecting 点击下载按钮会到GitHub的…

【safetensor】介绍和基础代码

Hugging Face, EleutherAI, StabilityAI 用的多 介绍 文件形式 header&#xff0c;体现其特性。如果强行将pickle或者空软连接 打开&#xff0c;会出现报错。解决详见&#xff1a;debug 连接到其他教程结构和参数 安装 with pip:Copied pip install safetensors with con…

阶段六-Day05-MyBatis3

一、多表查询&#xff08;面试题&#xff09; 1. 介绍 多表查询是在企业中必不可少的&#xff0c;无论多么简单的项目里通常会出现多表查询的操作。因为只要是关系型数据库&#xff0c;在设计表时都需要按照范式进行设计&#xff0c;为了减少数据冗余&#xff0c;都会拆成多个…

String、StringBuffer、StringBuilder 适合的应用场景

文章目录 String适用场景示例代码 StringBuffer适用场景示例代码 StringBuilder适用场景示例代码 性能比较总结 &#x1f389;欢迎来到Java学习路线专栏~String、StringBuffer、StringBuilder 适合的应用场景 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff…

《视觉SLAM十四讲》公式推导(二)

CH3-5 四元数表示旋转 三维空间中任意点均可用一个纯虚四元数表示即 p [ 0 , v ] T \boldsymbol{p}[0,\boldsymbol{v}]^T p[0,v]T&#xff0c;经一个单位四元数 q \boldsymbol{q} q的旋转后&#xff0c;得到 p ′ \boldsymbol{p} p′&#xff0c;则 p ′ q p q − 1 (3-5-1)…

STM32F4_中英文显示

目录 1. 液晶显示逻辑 2. 汉字显示原理 3. 实验程序 3.1 main.c 3.2 text.c 3.3 text.h 3.4 fontupd.c 3.5 fontupd.h 1. 液晶显示逻辑 字符编码&#xff1a; 由于计算机只能识别 0 和 1&#xff0c;文字也只能以 0 和 1 的形式在计算机里存储&#xff0c;所以我们需要…

算法通过村第十六关-滑动窗口|青铜笔记|滑动很简单

文章目录 前言滑动窗口的基本思想入门题目练习子数组最大平均数最长连续递增序列 总结 前言 提示&#xff1a;我宁愿做自己&#xff0c;做卑微的自己&#xff0c;也不愿做别人&#xff0c;无论那会多么快乐。 --《美丽新世界》 我们在数组和链表的部分就已经接触到了双指针的思…

IMX6ULL开发——第一个驱动程序

实现第一个应用程序&#xff1a;在IMX6ULL开发板上运行驱动程序hello_drv_test hello_drv_test #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <string.h>/** ./hel…

生产者消费者模式(c++实现)

生产者消费者模式思路就是&#xff1a;一批专门生产资源的线程 和一批专门处理资源的线程以及一个线程安全的任务队列组成的 。并且当任务队列满的时候阻塞生产线程&#xff0c;任务队列为空的时候阻塞消费线程。 要实现一个生产者消费者队列 1。需要实现线程同步&#xff0c;…

react的setState做了什么

1、为什么需要setState setState的作用是帮助我们更改数据的同时并且通知视图进行渲染。因为React并不会绑定视图和state&#xff0c;需要我们手动去更新视图。 2、setState什么时候是同步的&#xff0c;什么时候是异步的 setState这个方法在调用的时候是同步的&#xff0c;…

如果面试问到你redis的常用数据类型,你怎么和面试官聊上十分钟?

最近组长把一些简历推到我这边让我帮他面试几份&#xff0c;问到这种基础题目时收到的回答总是不太理想 1、最简单的回答&#xff1a; Redis存储的是key-value结构的数据&#xff0c;其中key是字符串类型&#xff0c;value有5种常用的数据类型&#xff1a; 字符串 string哈希 …

为什么spring默认采用单例bean

概 述 熟悉 Spring开发的朋友都知道 Spring 提供了 5种 scope&#xff0c;分别是&#xff1a; singleton: 单例模式&#xff0c;当spring创建applicationContext容器的时候&#xff0c;spring会欲初始化所有的该作用域实例&#xff0c;加上lazy-init就可以避免预处理&#xf…

磁盘分区如何分? 电脑磁盘分区免费软件指南!

列出并比较顶级免费磁盘分区管理器软件&#xff0c;以选择适用于 Windows 的最佳分区软件&#xff1a; 系统分区在现代计算机设备中起着非常重要的作用。它们可以存储数据&#xff0c;使系统文件远离用户数据&#xff0c;并在同一台设备上安装多个操作系统。但是&#xff0c;这…

MyBatis-Plus 实战教程一

这里写目录标题 简介快速上手数据库建立创建实体类修改参数引入依赖测试常见注解介绍TableNameTableIdTableField 常见配置仓库地址 简介 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;…

qt-C++笔记之信号与槽

qt-C笔记之信号与槽 code review! 本文抄自公众号&#xff1a;嵌入式小生 文章目录 qt-C笔记之信号与槽一.信号2.1.信号的发出2.2.信号的处理 二.槽函数2.1.带有默认参数的信号和槽函数2.2.使用QObject::connect()将信号连接到槽函数的三种方法2.2.1.第一种方法&#xff1a;使…

整理MongoDB文档:身份验证

整理MongoDB文档:身份验证 个人博客&#xff0c;求关注。 文章概叙 本文主要讲MongoDB在单机状态下的账户配置。理解了MongoDB的语法&#xff0c;对于如何配置用户权限会知道怎么配置&#xff0c;但是请注意给谁配置什么权限才是最重要的。 最小权限原则 系统的每个程序或者…

【C++编程语言】STL常用算法 算术生成和集合算法

1.算术生成算法概念 算法简介&#xff1a; accumlate 计算容器元素累计总和fill 向容器中添加元素 注意&#xff1a;算术生成算法属于小型算法 使用时包含头文件为#include<numeric> 2.accumulate /*函数原型&#xff1a;int accumulate(iterator beg ,iterator end…

热点不热!如何修复笔记本电脑未连接到移动热点的问题

当你远离常规Wi-Fi时,移动热点是让你的笔记本电脑上网的关键,但当它没有按计划运行时,你会怎么办?以下是Windows笔记本电脑无法连接到移动热点时的几种修复方法。 为什么我的笔记本电脑没有连接到我的热点 由于你的笔记本电脑正试图连接到另一个有限制和可能存在问题的设…

前端学成在线项目详细解析二

12-banner区域-课程表布局 HTML布局 <div class"right"><h3>我的课程表</h3><div class"content">1</div> </div> CSS样式 /* 课程表 */ .banner .right {margin-top: 60px;width: 218px;height: 305px;background-…