全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之计数器与累加器(一)

学习背景:

在现实生活中一些需要计数的场景下我们会用到计数器,如空姐手里记录乘客的计数器,跳绳手柄上的计数器等。累加器是累加器求和,以得到最后的结果。计数器和累加器它们虽然是基础知识,但是应用广泛,接下来分别介绍计数器与累加器,本文章先介绍计数器。

(一)、计数器:i=i+1

语句"i=i+1;"每执行一次,i的值就增加1。这样变量i可以起到统计次数的作用,有计数的功能。赋值符号"="左右两边的变量“i”不能从数值的角度去理解,它是存储空间的概念,就好比向水盆中加水,然后“+1”就表示拿水瓢往水盆中加水,“=”右边的“i”表示拿水瓢加水前的状态,“=”左右的“i”表示拿水瓢加水之后的状态。该语句运行一次就表示往水盆里加了一瓢水,最后往水盆里加了多少瓢水,只要看i最后的取值就可以了。其执行过程如下:

程序语句

i的值

i=0;

0

i=i+1

i(1) <- 0+1

i=i+1

i(2) <- 1+1

i=i+1

i(3) <- 2+1

i=i+1

i(4) <- 3+1

i=i+1

i(5) <- 4+1

温馨提示:

1、计数器在计算前需要清零,即i要赋值为0。

2、计算机程序中,变量可以先定义,再赋值,也可以在定义的同时进行赋值,在定义变量的同时赋初值称为变量初始化。在程序设计中,涉及累加、计数等情况时需要将变量初始化,否则计算机会给变量随机赋一个值,对计算结果有一定影响。

"i=i+1"通常简写利用成"i++"与"++i"两种形式,可单独成句。

1)"i++"在赋值和参与运算的过程中,先运算再自增,如语句在"x=i++;"的执行顺序是先将i的值赋值给x,然后再执行"i++"自增运算。

2)"++i"在赋值和参与运算的过程中,先自增再运算,如语句"x=++i;"的执行顺序是先执行"++i"自增运算,再进行赋值。

其执行过程如下:

程序语句

x的值

i的值

i=1;

x=i++;

1

2

i=1;

x=++i;

2

2

与计数器类似,"i=i-1",也可以简写成"i--"或者"--i",表示自减运算,它们可以单独成句,其意义与"i=i-1"的含义是一样的。但是,涉及赋值时,就会不同,"x=i--;"是先赋值再运算。而"x=--i;"是先运算再赋值。

实战训练:

阅读以下程序,写出程序运行结果。         


#include<bits/stdc++.h>
using namespace std;
int main(){
	int x,y,a=50,b=50;//定义变量x、y、a、b,定义a和b时同时初始化,初始值均为50 
	x=a++;//先赋值再自增
	y=++b;//先自增再赋值 
	cout<<"x: "<<x<<",y:"<<y<<endl;
	cout<<"a: "<<a<<",b:"<<b<<endl;
	x=a--;//先赋值再自减 
	y=--b;//先自减再赋值 
	cout<<"x: "<<x<<",y:"<<y<<endl;
	cout<<"a: "<<a<<",b:"<<b<<endl;
	return 0; 
} 

程序分析:

题目中的整型变量a,b的初始值均为50,第5行将a的值赋值给x之后,a再进行自增运算,此时x的值为50,a的值为51;第6行b先进行自增运算,再赋值,此时b的值为51,y的值也为51。同理程序第9行先进行赋值再自减,x的值为51,a的值为50,第10行b的值先自减,再赋值给y,b的值为50,y的值也为50。

输出结果:

x: 50,y:51

a: 51,b:51

x: 51,y:50

a: 50,b:50

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计Python动物图像识别分类系统 机器学习 深度学习 数据可视化 爬虫 卷积神经网络CNN 预测算法 图像识别

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

ASP.NET Core API + MySql

环境 数据库&#xff1a; mysql8.0 后端&#xff1a; vs2022 ASP.NET Core API .net 8 前端&#xff1a; Hbuilderx bootstrap 5.3.0 jquery v3.7.1 bootstrap-table 1.23.5 创建项目 添加资源包 AutoMapper Microsoft.EntityFrameworkCore.Tools 8.0.0 Pomelo.EntityFramew…

vmware vsphere5---部署vCSA(VMware vCenter Server)附带第二阶段安装报错解决方案

声明 因为这份文档我是边做边写的&#xff0c;遇到问题重新装了好几次所以IP会很乱 ESXI主机为192.168.20.10 VCSA为192.168.20.7&#xff0c;后台为192.168.20.7:5480 后期请自行对应&#xff0c;后面的192.168.20.57请对应192.168.20.7&#xff0c;或根据自己的来 第一阶段…

【QT】:QT(介绍、下载安装、认识 QT Creator)

背景 &#x1f680; 在我们的互联网中的核心岗位主要有以下几种 开发&#xff08;程序员&#xff09;测试运维&#xff08;管理机器&#xff09;产品经理&#xff08;非技术岗位&#xff0c;提出需求&#xff09; 而我们这里主要关注的是开发方向&#xff0c;开发岗位又分很…

STM32 出租车计价器系统设计(一) 江科大源码改写

STM32 出租车计价器系统设计 功能目标 驱动步进电机模拟车轮旋转&#xff0c;并实现调速功能。 设置车轮周长和单价&#xff0c;检测车轮转速和运转时间。 计算并显示行驶里程和价格。 硬件材料 28BYJ48 五线四相步进电机和 ULN2003 驱动板模块 测速传感器模块 嵌入式小系统…

Datawhale AI冬令营(第一期)--零基础定制你的专属大模型

本文主要简述如何快速完成和一些小细节 第一步下载嬛嬛数据集 数据来源&#xff1a;self-llm/dataset/huanhuan.json at master datawhalechina/self-llm GitHub 注意:1.一定是数据集下载完成一定是.json结尾的 2.这个是github的网址&#xff0c;可能会遇到打不开的情况 …

Android 车载虚拟化底层技术-Kernel 5.10 -Android12(multi-cards)技术实现

详细代码实现见 Android Display Graphics系列文章-汇总​​​​​​Android Display Graphics系列文章-汇总 Android Display Graphics系列文章-汇总 Android Display Graphics系列文章-汇总 本文主要包括部分&#xff1a; 一、Android12的Kernel 5.10版本 1.1 Kernel 5…

qemu安装arm64架构银河麒麟

qemu虚拟化软件&#xff0c;可以在一个平台上模拟另一个硬件平台&#xff0c;可以支持多种处理器架构。 一、安装 安装教程&#xff1a;https://blog.csdn.net/qq_36035382/article/details/125308044 下载链接&#xff1a;https://qemu.weilnetz.de/w64/2024/ 我下载的是 …

前端入门之VUE--vue组件化编程

前言 VUE是前端用的最多的框架&#xff1b;这篇文章是本人大一上学习前端的笔记&#xff1b;欢迎点赞 收藏 关注&#xff0c;本人将会持续更新。 文章目录 2、Vue组件化编程2.1、组件2.2、基本使用2.2.1、VueComponent 2、Vue组件化编程 2.1、组件 组件&#xff1a;用来实现…

day08 接口测试(3)——postman工具使用

下载 postman 的历史版本&#xff1a;Postman 历史版本下载 - 简书 我自己根据我的电脑&#xff0c;安装的地址为&#xff1a;https://dl.pstmn.io/download/version/9.31.32/osx_64 今天开始学习 postman 这个测试工具啦。 【没有所谓的运气&#x1f36c;&#xff0c;只有绝…

C++游戏开发探秘【3】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C游戏开发的相关内容&#xff01; …

python基础:(七)类

目录 一.创建和使用类二.使用类和实例2.1给属性指定默认值2.2修改属性的值2.2.1直接修改属性的值2.2.2通过方法修改属性的值2.2.3通过方法对属性的值进行递增 三.继承3.1子类的方法__init__()3.2给子类定义属性和方法3.3重写父类的方法 四.导入类4.1语法--1:4.2语法--2 前言 p…

TortoiseGit的下载、安装和配置

一、TortoiseGit的简介 tortoiseGit是一个开放的git版本控制系统的源客户端&#xff0c;支持Winxp/vista/win7.该软件功能和git一样 不同的是&#xff1a;git是命令行操作模式&#xff0c;tortoiseGit界面化操作模式&#xff0c;不用记git相关命令就可以直接操作&#xff0c;读…

Avalonia实战实例一:使用Prism创建项目,并创建窗口

文章目录 一、安装Avalonia的项目模板二、安装Prism框架三、简单更改App.axaml为Prism基类四、创建窗口一、安装Avalonia的项目模板 这里安装的是Avalonia 11.2.1,.Net 6.0 安装完成,创建Avalonia项目。 二、安装Prism框架 打开Nuget,搜索Prism: 不要安装Prism.Core: …

【Spark】Spark的两种核心Shuffle工作原理详解

Spark 的shuffle机制 一、Spark ShuffleManager 发展历程 Spark 1.1.0 之前 在 Spark 1.1.0 之前&#xff0c;Spark 使用 BlockStoreShuffleFetcher 来处理 Shuffle 操作。这个实现主要依赖于直接从 BlockManager 获取 Shuffle 数据&#xff0c;并通过网络进行交换。 Spark …

Y3编辑器文档4:触发器1(对话、装备、特效、行为树、排行榜、不同步问题)

文章目录 一、触发器简介1.1 触发器界面1.2 ECA语句编辑及快捷键1.3 参数设置1.4 变量设置1.5 实体触发器1.6 函数库与触发器复用 二、触发器的多层结构2.1 子触发器&#xff08;在游戏内对新的事件进行注册&#xff09;2.2 触发器变量作用域2.3 复合条件2.4 循环2.5 计时器2.6…

Scala递归中求汉罗塔游戏的步骤

记&#xff1a;f(n,"A","B","C")表示n个盘子从A柱子上移动到C柱子上&#xff0c;借用B柱子的过程 f(要移动的盘子的个数&#xff0c;起点&#xff0c;辅助柱子&#xff0c;终点) 1.基本情况(直接能求的)&#xff1a;f(1,"A","B&…

UE5制作简单水材质

首先准备一张水材质法线贴图&#xff0c;也可以去 爱给网 和 花瓣网 找一张 导入后创建一个材质&#xff0c;如图所示 根据 Unreal 文档&#xff0c;吸收系数设置为红色 0.0033、绿色 0.0016、蓝色 0.0011。水看起来会更真实 然后放到一块平面上&#xff0c;就成功了&#xf…

【Web】2024“国城杯”网络安全挑战大赛题解

目录 Ez_Gallery 法一&#xff1a;shell盲注 法二&#xff1a;反弹shell 法三&#xff1a;响应钩子回显 Easy Jelly 法一&#xff1a;无回显XXE 法二&#xff1a;Jexl表达式RCE signal 法一&#xff1a;SSRF 法二&#xff1a;filterchain RCE Ez_Gallery 用这个bp验证…

【Rust 学习笔记】Rust 基础数据类型介绍——数组、向量和切片

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 博客内容主要围绕&#xff1a; 5G/6G协议讲解 高级C语言讲解 Rust语言讲解 文章目录 Rust 基础数据类型介绍——数组、向量和切片一、数组、向量和…