再学C语言22:循环控制语句——循环嵌套和数组处理

news2024/11/15 10:06:33

嵌套循环(nested loop):在一个循环内使用另一个循环

一、循环嵌套

示例代码:

#include <stdio.h>
int main(void)
{
    int i;
    int j;

    for(i = 0; i < 10; i++)
    {
        for(j = 0; j < 9; j++)
        {
            printf("%5d", j); // 里面的循环负责累加并显示数字,j的值决定了显示的列数
        }
        printf("\n"); // 外面的循环负责换行,i的值决定了显示的行数
    }

    return 0;
}

运行结果:

在嵌套循环中,内部循环在外部循环的每次单独循环中都完全执行其所有循环(示例中,外部循环执行1次,内部循环执行9次)

示例代码:

#include <stdio.h>
int main(void)
{
    int i;
    int j;

    for(i = 0; i < 10; i++)
    {
        for(j = 0; j < 9; j++)
        {
            printf("%5d", i + j); // 外不循环的值影响内部循环的值
        }
        printf("\n");
    }

    return 0;
}

运行结果:

二、循环与数组

一个数组就是线性存储的一系列相同类型的值

int a[10];    // 定义一个整形数组
float b[6];   // 定义一个浮点型数组
char c[20];   // 定义一个字符型数组

用于表示数组元素的数字称为下标(subscript)、索引(index)或偏移量(offset),下标必须是整数,且从0开始

数组中的元素在内存中是顺序存储的

尤其需要明确数组的边界,否则会造成不可预知的问题;如上面的数组a包含20个元素,因此其元素值是从a[0]到a[19],对a[20]进行操作是错误的

示例代码:用for循环对数组进行处理

#include <stdio.h>
int main(void)
{
    int i;
    int num[10];
    int sum;
    int ave;
    printf("please enter 10 numbers: \n");
    for(i = 0; i < 10; i++) // 第一个for循环,用于读入数据
    {
        printf("number %d:", i + 1);
        scanf("%d", &num[i]); // 键盘输入整数
    }

    for(i = 0; i < 10; i++) // 第二个for循环,用于计算和
    {
        sum += num[i];
    }

    ave = sum / 10; // 计算平均值

    printf("sum of the numbers is %d \n", sum); // 显示求和结果
    printf("ave of the numbers is %d \n", ave); // 显示求平均结果

    return 0;
}

运行结果:


使用一个函数需要完成的3个步骤:

1)使用函数原型声明该函数(如果该函数在main函数中会被调用,则声明需要在main函数之前)

2)在程序中(如main函数中)调用该函数

3)定义函数(应为之前有函数声明,函数定义可以在调用点之后)

C本身包含的库函数已经在.h文件中进行了声明

现代编程习惯:将程序元素分为接口和实现部分,接口部分描述如何使用一个特性(原型部分的功能),实现部分说明采取的具体动作(定义部分的功能)


关于循环的重点:

1)明确定义循环结束的条件

2)确保在循环判断中使用的值在第一次使用之前已经初始化

3)确保在每个循环周期中更新判断值

以上3点只仅针对一般性的循环功能,显示中有个别例外,例如嵌入式平台中使用的while(1)循环,一般没有结束条件

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

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

相关文章

共享模型之管程(二)

1.Moniter对象 1.1.Java对象头 1>.以32位虚拟机为例 ①.普通对象 Klass Word表示对象的类型,它是一个指针,指向了对象所从属的class; ②.数组对象 在32位虚拟机中,integer包装类型的长度为12个字节,而int基本数据类型的长度为4个字节; 其中Mark Word结构为: 2>.64位…

shell第一天练习

题目&#xff1a; 1、在当前主机编写脚本文件history_max.sh显示主机中执行频率最高的前5个命令。 2、判断主机是否存在rhel用户&#xff0c;如果存在则设置密码为redhat,如果不存在则创建用户并设置密码。 3、通过设置变量HISTTIMEFORMAT&#xff0c;使得当执行history命令时…

16. BootStrap

文章目录一、Bootstrap1、概念2、快速入门二、响应式布局三、CSS样式和JS插件1、全局CSS样式2、组件1. 导航条2. 分页条3、插件1. 轮播图四、案例1、案例描述2、案例分析3、实现一、Bootstrap 1、概念 * 概念&#xff1a; 一个前端开发的框架&#xff0c;Bootstrap&#xff0…

Linux网络配置(如何设置静态IP?如何设置查看主机名?)

文章目录Linux网络配置一、网络地址配置1.1. 查看网络地址1.2. 测试两个地址是否连接1.3. Linux系统的网络配置二、主机名以及hosts映射2.1. 查看和设置主机名2.2. hosts映射2.3. DNSLinux网络配置 一、网络地址配置 如果在一台Windows电脑上安装了Linux虚拟机&#xff0c;那…

颤抖开篇,从php角度谈谈IO模型(BIO)

颤抖开篇&#xff0c;从php角度谈谈IO模型&#xff08;BIO&#xff09; IO 是什么? 在计算机系统中I/O就是输入&#xff08;input&#xff09;和输出&#xff08;Output&#xff09;的意思。针对不同的操作对象&#xff0c;可以划分为磁盘I/O模型&#xff0c;网络I/O模型&am…

开发神器VSCode配置C/C++编译环境

hi&#xff0c;小伙伴们大家好&#xff0c;今天给大家介绍一款程序员常用的开发神器VSCode&#xff0c;想必大家肯定有所了解&#xff0c;也有很多小伙伴在日常工作中经常使用。当木荣君初次见到VSCode时&#xff0c;真正的被它惊艳到了&#xff0c;可以说是一见钟情。从此就爱…

13.6-14.8读书笔记

13.6 对象移动 13.6.1 右值引用 概念: 为了支持移动操作,新标准引入了的一种新的引用类型.所谓右值引用就是必须绑定到右值的引用. 通过&&来获得右值引用 int i 42;int &r i;int &&rr i; // 错误,不能将一个右值引用绑定到一个左值上int &r3 …

【python基础_05】面向对象

文章目录1. 类和对象1.1 使用对象组织数据的模版1.2 成员变量和成员方法1.3 实现代码2. 内置方法&#xff08;魔术方法&#xff09;2.1 构造方法&#xff1a;__init__&#xff08;&#xff09;1. 类和对象 1.1 使用对象组织数据的模版 1.2 成员变量和成员方法 1.3 实现代码 1…

jupyter notebook无法启动内核

jupyter notebook无法启动内核问题概述方法一使用Window PowerShell方法二更改文件路径重新启动内核参考问题概述 遇到的问题是在使用jupyter的时候无法正常运行,所以在这里尝试一些办法,在这里进行记录,希望能够帮助到大家 方法一 使用Window PowerShell 首先第一个方法就…

Java IO流 - 释放资源的方式

资源释放的方式 书接上文, 在上一篇文章我们做过一个文件拷贝的练习, 但是在联系中是有释放资源隐患的的, 例如在下面代码中, 在文件释放之前有许多行的逻辑代码; 如果这许多行的逻辑代码有报错, 导致程序不运行, 那么资源就得不到释放 public static void main(String[] args)…

Crack:ActiveReportsJS 3.2.2 EN:ActiveReportsJS

ActiveReportsJS - 高级 JavaScript 报告解决方案 ActiveReportsJS 是一种用于在前端应用程序中可视化数据的报告解决方案。Ω578867473自定义报告布局并将我们的报告设计器和查看器组件集成到 Web 应用程序中&#xff0c;以便在任何平台上预览、导出或打印报告。 使用我们的跨…

WPF+ASP.NET SignalR实现动态折线图

在实际业务中&#xff0c;当后台数据发生变化&#xff0c;客户端能够实时的收到通知&#xff0c;而不是由用户主动的进行页面刷新才能查看&#xff0c;这将是一个非常人性化的设计。有没有那么一种场景&#xff0c;后台数据明明已经发生变化了&#xff0c;前台却因为没有及时刷…

ElementUI——案例2用户管理(基于SpringBoot实现增删改)

1.ElementUI整合SpringBoot前后端分离实现用户增删改查 效果展示 2.前端核心代码 项目目录 main.js引入 import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import router from ./router import axios from axiosVue.prototype.$http ax…

SQL 存储过程

文章目录存储过程简介存储过程的创建及调用存储过程的删除 如何删除存储过程存储过程的优缺点现需要向学生表中插入新的学生数据。但在插入学生数据的时&#xff0c;需要同 时检查老师表里的数据。如果插入学生的老师不在老师表里&#xff0c;则先向老师表中插入一条老师数据&a…

高级IO-多路转接

高级IO 以前的都是拷贝接口。write什么的就是将字符串拷贝到发送缓冲区中。 应用层等待接收缓冲区填写数据的过程算是IO吗&#xff1f;算 IO等待拷贝数据&#xff1b; 真正的IO的过程就是拷贝的过程。比如等待鱼上钩的时候也算是钓鱼(adj)&#xff0c;当把鱼拿上来的时候也…

【Spring篇】代理模式

&#x1f353;个人主页&#xff1a;个人主页 &#x1f352;系列专栏&#xff1a;SSM框架 目录 一、场景模拟 二、提出问题 三、代理模式 1.静态代理 2.动态代理 一、场景模拟 ①声明接口 声明计算器接口Calculator&#xff0c;包含加减乘除的抽象方法 public interface…

hadoop基础搭建(hadoop+hive+hbase+zk)(一)

文章目录一、基础环境&插件安装&#xff08;root&#xff09;二、创建启动脚本&#xff0c;后续使用三、安装JDK&#xff08;root&#xff09;四、安装Hadoop五、安装 rsync&#xff08;root&#xff09;六、网络配置&#xff08;4台服务器&#xff0c;root&#xff09;七、…

使用html2canvas,将页面转换成图片的采坑记录(Web/Taro h5)

使用html2canvas将页面转换成图片的采坑记录 "html2canvas": "^1.4.1","tarojs/taro": "3.4.0-beta.0"问题: 1. 生成的图片很模糊 2. 生成的图片是空白 3. 生成的图片不完整 截图前是这样 截图后这样 截图后的图片图片缺省了一部分…

【消息中间件】1小时快速上手RabbitMQ

前 言 &#x1f349; 作者简介&#xff1a;半旧518&#xff0c;长跑型选手&#xff0c;立志坚持写10年博客&#xff0c;专注于java后端 ☕专栏简介&#xff1a;深入、全面、系统的介绍消息中间件 &#x1f330; 文章简介&#xff1a;本文将介绍RabbitMQ&#xff0c;一小时快速上…

Good Bye 2022: 2023 is NEAR D. Koxia and Game

原题链接&#xff1a;Problem - D - Codeforces 题面&#xff1a; 大概意思就是给你一个数组a和数组b&#xff0c;你自己设计一个数组c&#xff0c;Koxia可以从a[i]、b[i]和c[i]中选一个&#xff0c;而Mahiru只能从另外两个里选一个&#xff0c;问你有多少个数组c一定能使Mah…