C++语言编程————C++的输入与输出

1.面向过程的程序设计和算法

        在面向过程的程序设计中,程序设计者必须指定计算机执行的具体步骤,程序设计者不仅要考虑程序要“做什么”,还要解决“怎么做”的问题,根据程序要“做什么”的要求,写出一个个语句,安排好它们的执行顺序。怎样设计这些步骤,怎样保证它的正确性和具有较高的效率,这就是算法需要解决的问题。

1.1 算法的概念

一个面向过程的程序应包括以下两方面内容:

(1) 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。

(2) 对操作的描述。即操作步骤,也就是算法 (algorithm)。

对于面向过程的程序,可以用下面的公式表示: 程序=算法+数据结构

作为程序设计人员,必须认真考虑和设计数据结构和操作步骤(即算法)。

算法是处理问题的一系列的步骤。算法必须具体地指出在执行时每一步应当怎样做。不要认为只有“计算”的问题才有算法。广义地说, 为解决一个问题而采取的方法和步骤,就称为“算法”。

计算机算法可分为两大类别:数值算法和非数值算 法。数值算法的目的是求数值解。非数值算法包括 的面十分广泛,最常见的是用于事务管理领域。目前,计算机在非数值方面的应用远远超过了在数值方面的应用。

C++既支持面向过程的程序设计,又支持面向对象的程序设计。无论面向过程的程序设计还是面向对象的程序设计,都离不开算法设计。

1.2 算法的表示

1. 自然语言

用中文或英文等自然语言描述算法。但容易产生歧 义性,在程序设计中一般不用自然语言表示算法。

2. 流程图

可以用传统的流程图或结构化流程图。用图的形式 表示算法,比较形象直观,但修改算法时显得不大方便。

3. 伪代码(pseudo code)

伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。用伪代码写算法并无固定的、严格的语法规则,只需把意思表达清楚,并且书写的格式要写成清晰易读的形式。它不用图形符号,因此书写方便、格式 紧凑,容易修改,便于向计算机语言算法(即程序) 过渡。

4. 用计算机语言表示算法

用一种计算机语言去描述算法,这就是计算机程序。

2. C++程序和语句

2.1 程序

一个程序包含一个或多个程序单位 (每个程序单位构成一个程序文件)。每一个程序单位由以下几个部分组成:

(1) 预处理命令。如#include命令和#define命令。

(2) 声明部分。例如对数据类型和函数的声明,以及对变量的定义。

(3) 函数。包括函数首部和函数体,在函数体中可以包含若干声明语句和执行语句。 如下面是一个完整的C++程序:

注:如果一个变量在函数之外进行声明,此变量是全局 变量,它的有效范围是从该行开始到本程序单位结 束。如果一个变量在函数内声明,此变量是局部变 量,它的有效范围是从该行开始到本函数结束。

2.2 语句

1. 声明语句

如int a,b;在C语言中,只有产生实际操作的才称为 语句,对变量的定义不作为语句,而且要求对变量 的定义必须出现在本块中所有程序语句之前。因此 C程序员已经养成了一个习惯: 在函数或块的开头 位置定义全部变量。在C++中,对变量(以及其他对 象)的定义被认为是一条语句,并且可以出现在函 数中的任何行,即可以放在其他程序语句可以出现 的地方,也可以放在函数之外。这样更加灵活,可 以很方便地实现变量的局部化(变量的作用范围从 声明语句开始到本函数或本块结束)。

2. 执行语句

通知计算机完成一定的操作。执行语句包括:

(1) 控制语句,完成一定的控制功能。C++有9种控制语句,即

① if( )~else~(条件语句)

② for( )~(循环语句)

③ while( )~(循环语句)

④ do~while( )(循环语句)

⑤ continue(结束本次循环语句)

⑥ break(中止执行switch或循环语句)

⑦ switch(多分支选择语句)

⑧ goto(转向语句)

⑨ return (从函数返回语句)

(2) 函数和流对象调用语句。函数调用语句由一次函数调用加一个分号构成一个语句。

例如

sort(x,y,z); //假设已定义了sort函数,它有3个参数

cout<<x<<endl; //流对象调用语句

(3) 表达式语句。由一个表达式加一个分号构成一个语句。最典型的是: 由赋值表达式构成一个赋值语句。

i=i+1 //是一个赋值表达式

i=i+1; //是一个赋值语句

任何一个表达式的最后加一个分号都可以成为一个语句。一个语句必须在最后出现分号。表达式能构成语句是C和C++语言的一个重要特色。 C++程序中大多数语句是表达式语句(包括函数调用语句)

3. 空语句

下面是一个空语句:

即只有一个分号的语句,它什么也不做。

有时用来做被转向点,或循环语句中的循环体。

4. 复合语句

可以用 { }把一些语句括起来成为复合语句。

如下面是一个复合语句。

{

z=x+y;

if(z>100) z=z-100;

cout<<z;

}

注意:复合语句中最后一个语句中最后的分号不能省略。

3. 赋值语句

赋值语句是由赋值表达式加上一个分号构成。

(1)C++的赋值语句具有其他高级语言的赋值语句的功能。

但不同的是: C++中的赋值号“=”是一个运算符,可以写成

a=b=c=d;

而在其他大多数语言中赋值号不是运算符,上面的写法是不合法的。

(2) 关于赋值表达式与赋值语句的概念。

在C++ 中,赋值表达式可以包括在其他表达式之中,

例如 if((a=b)>0) cout<<″a>0″<0″<0) cout<<″a>0″<<endl;

按语法规定if后面的( )内是一个条件。现在在x的位置上换上一个赋值表达式“a=b”,其作用是:

先进行赋值运算(将b的值赋给a),然后判断a是否大于0,如大于0,执行cout<<″a>0″<0) ;。在if语句中的“a=b”不是赋值语句而是赋值表达式,这样写是合法的。不能写成

if((a=b;)>0) cout<<″a>0″<<endl;

因为在if的条件中不能包含赋值语句。C++把赋值语句和赋值表达式区别开来,增加了表达式的种类,能实现其他语言中难以实现的功能。

4.C++的输入与输出

输入和输出并不是C++语言中的正式组成成分。C 和C++本身都没有为输入和输出提供专门的语句结构。输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的。

C++的输出和输入是用“流”(stream)的方式实现的。图3.2和图3.3表示C++通过流进行输入输出的过程。

有关流对象cin、cout和流运算符的定义等信息是存 放在C++的输入输出流库中的,因此如果在程序中 使用cin、cout和流运算符,就必须使用预处理命令把头文件stream包含到本文件中:

#include <iostream>

尽管cin和cout不是C++本身提供的语句,但是在不致混淆的情况下,为了叙述方便,常常把由cin和流提取运算符“>>”实现输入的语句称为输入语句或 cin语句,把由cout和流插入运算符“<<”实现输出 的语句称为输出语句或cout语句。根据C++的语 法,凡是能实现某种操作而且最后以分号结束的都是语句。

*4.1 输入流与输出流的基本操作

cout语句的一般格式为

cout>变量1>>变量2>>……>>变量n;

cin语句的一般格式为

cin>>变量1>>变量2>>……>>变量n;

在定义流对象时,系统会在内存中开辟一段缓冲 区,用来暂存输入输出流的数据。在执行cout语句 时,先把插入的数据顺序存放在输出缓冲区中,直到输出缓冲区满或遇到cout语句中的endl(或′\n′, ends,flush)为止,此时将缓冲区中已有的数据一 起输出,并清空缓冲区。输出流中的数据在系统默 认的设备(一般为显示器)输出。

*4.2 在输入流与输出流中使用控制符

上面介绍的是使用cout和cin时的默认格式。但有时人们在输入输出时有一些特殊的要求,如在输出实数时规定字段宽度,只保留两位小数,数据向左或向右对齐等。C++提供了在输入输出流中使用的控制符(有的书中称为操纵符)。 需要注意的是: 如果使用了控制符,在程序单位的开头除了要加iostream头文件外,还要加iomanip头文件

举例: 输出双精度数

如果在多个cout语句中使用相同的setw(n),并使用 setiosflags(ios∷right),可以实现各行数据右对齐,如果指定相同的精度,可以实现上下小数点对齐。

4.3 用getchar和putchar 函数进行字符的输入和输出

C++还保留了C语言中用于输入和输出单个字符的函数,使用很方便。其中最常用的有getchar函数和 putchar函数。

1. putchar函数(字符输出函数)

putchar函数的作用是向终端输出一个字符。例如 putchar(c); 它输出字符变量c的值。

可以看到: 用putchar可以输出转义字符, putchar(′\n′)的作用是输出一个换行符,使输出的 当前位置移到下一行的开头。putchar(66)的作用是 将66作为ASCII码转换为字符输出,66是字母′B′的 ASCII码,因此putchar(66)输出字母′B′。其余类似。

putchar(10)中的10是换行符的ASCII码, putchar(10)输出一个换行符,作用与putchar(′\n′) 相同。

2. getchar函数(字符输入函数)

此函数的作用是从终端(或系统隐含指定的输入设 备)输入一个字符。getchar函数没有参数,其一般 形式为getchar( )函数的值就是从输入设备得到的字符。

在运行时,如果从键盘输入大写字母′A′并按回车键,就会在屏幕上输出小写字母′a′。

请注意,getchar( )只能接收一个字符。getchar函数得到的字符可以赋给一个字符变量或整型变量, 也可以不赋给任何变量,作为表达式的一部分。

4.4 用scanf和printf函数进行输入和输出

在C语言中是用printf函数进行输出,用scanf函数 进行输入的。C++保留了C语言的这一用法。在此只作很简单的介绍。

scanf函数一般格式是:

scanf(格式控制,输出表列);

printf函数的一般格式是:

printf(格式控制,输出表列);

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

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

相关文章

TIM的输入捕获

IC&#xff08;Input Capture&#xff09;输入捕获 输入捕获模式下&#xff0c;当通道输入引脚出现指定电平跳变时&#xff0c;当前CNT的值将被锁存到CCR中 我们使用测周法测频率 void IC_Init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB1PeriphCl…

RISC-V学习笔记

1.RISC ISA1个基本整数指令集多个可选的扩展指令集&#xff0c;如RV32I表示支持32位整数指令集。I表示基本指令集&#xff0c;M表示整数乘法与除法指令集&#xff0c;A表示存储器原子指令集&#xff0c;F表示单精度浮点指令集&#xff0c;D表示双精度浮点指令集等&#xff0c;C…

Scala_【5】函数式编程

第五章 函数式编程函数和方法的区别函数声明函数参数可变参数参数默认值 函数至简原则匿名函数高阶函数函数作为值传递函数作为参数传递函数作为返回值 函数闭包&柯里化函数递归控制抽象惰性函数友情链接 函数式编程 面向对象编程 解决问题时&#xff0c;分解对象&#xff…

golang:微服务架构下的日志追踪系统(二)

背景 在使用Gin框架进行服务开发时&#xff0c;我们遇到了一个日志记录的问题。由于Gin的上下文&#xff08;*gin.Context&#xff09;实现了context.Context接口&#xff0c;在调用日志记录器的Info、Warn、Error等方法时&#xff0c;直接传递Gin的上下文通常不会导致编译错误…

美国宏观经济基础框架梳理

玩转币圈和美股&#xff0c;最关键的是理解美国宏观经济。以下是核心逻辑&#xff1a;美国经济数据→政策调整→资金流动→资产价格变化。掌握这些因素的关系&#xff0c;才能在市场中立于不败之地。 一、核心变量及其意义 1. GDP&#xff08;国内生产总值&#xff09; • …

spring防止重复点击,两种注解实现(AOP)

第一种&#xff1a;EasyLock 简介 为了简化可复用注解&#xff0c;自己实现的注解&#xff0c;代码简单随拿随用 使用方式 1.创建一个注解 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface EasyLock {long waitTime() default …

中建海龙:科技助力福城南产业片区绿色建筑发展

在快速发展的城市化进程中&#xff0c;绿色建筑以其环保、节能、可持续的特点日益受到重视。作为建筑工业化领域的领军企业&#xff0c;中建海龙科技有限公司&#xff08;简称“中建海龙”&#xff09;凭借其卓越的科技实力和创新举措&#xff0c;在推动绿色建筑发展方面做出了…

大模型数据采集和预处理:把所有数据格式,word、excel、ppt、jpg、pdf、表格等转为数据

大模型数据采集和预处理&#xff1a;把所有数据格式&#xff0c;word、excel、ppt、jpg、pdf、表格等转为数据 文本/图片/表格&#xff0c;分别提取处理工具选择不同格式文件&#xff0c;使用不同工具处理1. 确认目标2. 分析过程(目标-手段分析法)3. 实现步骤4. 代码封装效果展…

三甲医院等级评审八维数据分析应用(五)--数据集成与共享篇

一、引言 1.1 研究背景与意义 随着医疗卫生体制改革的不断深化以及信息技术的飞速发展,三甲医院评审作为衡量医院综合实力与服务水平的重要标准,对数据集成与共享提出了更为严苛的要求。在传统医疗模式下,医院内部各业务系统往往各自为政,形成诸多“信息孤岛”,使得数据…

ELK 使用教程采集系统日志 Elasticsearch、Logstash、Kibana

前言 你知道对于一个系统的上线考察&#xff0c;必备的几样东西是什么吗&#xff1f;其实这也是面试中考察求职者&#xff0c;是否真的做过系统开发和上线的必备问题。包括&#xff1a;服务治理(熔断/限流) (opens new window)、监控 (opens new window)和日志&#xff0c;如果…

STM32G0B1 can Error_Handler 解决方法

问题现象 MCU上电&#xff0c;发送0x13帧数据固定进入 Error_Handler 硬件介绍 MCU :STM32G0B1 can:NSI1042 tx 接TX RX 接RX 折腾了一下午&#xff0c;无解&#xff0c;问题依旧&#xff1b; 对比测试 STM32G431 手头有块G431 官方评估版CAN 模块&#xff1b; 同样的…

Redis 实现分布式锁

文章目录 引言一、Redis的两种原子操作1.1 Redis 的原子性1.2 单命令1.3 Lua 脚本1.4 对比单命令与 Lua 脚本 二、Redis 实现分布式锁2.1 分布式锁的概念与需求2.1.1 什么是分布式锁&#xff1f;2.1.2 分布式锁的常见应用场景 2.2 基于 Redis 的分布式锁实现2.2.1 锁的获取与释…

SAP MM物料管理模块常见BAPI函数清单

【SAP系统研究】 #SAP #MM #物料管理 #函数 #BAPI 1、物料主数据 BAPI_MATERIAL_SAVEDATA 创建/更改物料主数据 BAPI_MATERIAL_SAVEREPLICA 物料主数据视图扩充 BAPI_MATERIAL_EXISTENCECHECK 检查物料主数据是否存在 BAPI_MATERIAL_GETLIST 显示物料主数据明细 BAPI_MATERIALG…

104周六复盘 (188)UI

1、早上继续看二手书的一个章节&#xff0c;程序开发流程、引擎、AI等内容&#xff0c; 内容很浅&#xff0c;基本上没啥用&#xff0c;算是复习。 最大感触就是N年前看同类书的里程碑、AI相关章节时&#xff0c;会感觉跟自己没啥关系&#xff0c; 而如今则密切相关&#xf…

(leetcode算法题)382. 链表随机节点

如果给你一个 智能记录 k行内容的小笔记本&#xff0c;从一本你也不知道有多少行的 C Primer 中进行摘抄&#xff0c;你应该怎么做才能让抄写的时候能让书中的每一行都等概率的出现在小笔记本中&#xff1f; 答&#xff1a;准备好一个公平的轮盘和一个巨大的摇奖机&#xff0c…

腾讯云智能结构化 OCR:驱动多行业数字化转型的核心引擎

在当今数字化时代的汹涌浪潮中&#xff0c;数据已跃升为企业发展的关键要素&#xff0c;其高效、精准的处理成为企业在激烈市场竞争中脱颖而出的核心竞争力。腾讯云智能结构化 OCR 技术凭借其前沿的科技架构与卓越的功能特性&#xff0c;宛如一颗璀璨的明星&#xff0c;在交通、…

2025-01-04 Unity插件 YodaSheet2 —— 基础用法

文章目录 环境配置1 创建 YadeSheetData2 读取方式2.1 表格读取2.2 列表读取 3 自定义设置3.1 修改代码生成位置3.2 添加列表支持3.2.1 修改 DataTypeMapper.cs3.2.2 修改 SheetDataExtensions.cs3.2.3 修改 CodeGeneratorEditor.cs3.2.4 测试 ​ 官方文档&#xff1a; Unity …

matlab时频分析库

time frequency gallery

『 Linux 』高级IO (三) - Epoll模型的封装与EpollEchoServer服务器

文章目录 前情提要Epoll 的封装Epoll封装完整代码(供参考) Epoll Echo ServerEpoll Echo Server 测试及完整代码 前情提要 在上一篇博客『 Linux 』高级IO (二) - 多路转接介绍并完成了两种多路转接方案的介绍以及对应多路转接方案代码的编写,分别为SelectServer服务器与PollSe…

PDF预览插件

PDF预览插件 可用于当前页面弹窗形式查看,可增加一些自定义功能 pdf预览插件 代码块: pdfobject.js <div class="pdfwrap"><div class="item"><h3>笑场</h3><div class="tags"><p>李诞</p><i&…