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.rhkb.cn/news/502000.html

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

相关文章

Fabric链码部署测试

参考链接&#xff1a;运行 Fabric 应用程序 — Hyperledger Fabric Docs 主文档 (hyperledger-fabric.readthedocs.io) &#xff08;2&#xff09;fabric2.4.3部署运行自己的链码 - 知乎 (zhihu.com) Fabric2.0测试网络部署链码 - 辉哥哥~ - 博客园 (cnblogs.com) 1.启动测试…

《米塔》为什么能突破160万销量?

1、跟完蛋美女有一定的类似之处&#xff0c;都是针对用户需求打造的商品&#xff0c;所以取得良好的销量不意外。 偏宅的玩家有陪伴、被重视、被爱的需求&#xff0c; 而厂商很懂&#xff0c;无论真人还是二次元都只是手段。 完蛋也是突破百万销量&#xff0c;成为黑马。 2、…

ESP32自动下载电路分享

下面是一个ESP32系列或者ESP8266等电路的一个自动下载电路 在ESP32等模块需要烧写程序的时候&#xff0c;需要通过将EN引脚更改为低电平并将IO0引脚设置为低电平来切换到烧写模式。 有时候也会采用先将IO接到一个按键上&#xff0c;按住按键拉低IO0的同时重新上电的方式进入烧写…

Backend - C# 的日志 NLog日志

目录 一、注入依赖和使用 logger 二、配置记录文件 1.安装插件 NLog 2.创建 nlog.config 配置文件 3. Programs配置日志信息 4. 设置 appsettings.json 的 LogLevel 5. 日志设定文件和日志级别的优先级 &#xff08;1&#xff09;常见的日志级别优先级 &#xff08;2&…

java项目之社区医院信息平台源码(springboot+mysql)

项目简介 社区医院信息平台实现了以下功能&#xff1a; 社区医院信息平台的主要使用者分为管理员可以查看对护士信息进行添加&#xff0c;修改&#xff0c;删除以及查询操作&#xff1b;管理员可以对医生信息进行添加&#xff0c;修改&#xff0c;删除以及查询操作&#xff1…

《普通逻辑》学习记录——命题的判定与自然推理

目录 一、真值 1.1、真值联结词 1.2、真值联结词与逻辑联结词的区别 1.3、真值形式 1.3.1、真值符号的优先级和结合性规则 1.4、真值规则 1.4.1、条件式&#xff08;蕴含式&#xff09; P → Q 的真值规则 1.4.2、双条件式&#xff08;等值式&#xff09; P ↔ Q 的真值规则 1.…

Pycharm连接远程解释器

这里写目录标题 0 前言1 给项目添加解释器2 通过SSH连接3 找到远程服务器的torch环境所对应的python路径&#xff0c;并设置同步映射&#xff08;1&#xff09;配置服务器的系统环境&#xff08;2&#xff09;配置服务器的conda环境 4 进入到程序入口&#xff08;main.py&#…

无刷直流电机(BLDC)六步换向法

文章目录 1、三相BLDCM 基本结构2、三相BLDCM 数学模型3、有霍尔位置传感器直流无刷电机工作原理4、无位置传感器直流无刷电机工作原理5、速度检测6、六步换向双闭环模型仿真6.1 模型总览6.2 系统及参数设置6.3 六步换向模块6.4 仿真效果 7、六步换向速度闭环PWM控制参考 1、三…

Windows11安装Oracle11g以及plsqldev工具连接配置

文章目录 一、安装Oracle数据库软件二、配置数据库三、配置监听&#xff08;listener.ora&#xff09;四、本地网络服务名配置&#xff08;tnsnames.ora&#xff09;五、网络服务名配置以及监听文件路径六、plsqldev工具连接Oracle配置 一、安装Oracle数据库软件 点击“setup.…

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案 问题描述 在IEEE PDF eXpress上上传论文后&#xff0c;出现Font XXX is not embedded的问题。 该问题是指你所插入的图片等&#xff0c;没有将对应的字体嵌入进去。 解决方案 以下以Origin Lab图片…

9.系统学习-卷积神经网络

9.系统学习-卷积神经网络 简介输入层卷积层感受野池化层全连接层代码实现 简介 卷积神经网络是一种用来处理局部和整体相关性的计算网络结构&#xff0c;被应用在图像识别、自然语言处理甚至是语音识别领域&#xff0c;因为图像数据具有显著的局部与整体关系&#xff0c;其在图…

ESP32-C3环境搭建

参考第二讲 ubuntu下的ESP-IDF开发环境搭建_哔哩哔哩_bilibili 宸芯IOT中的资料搭建 因为我买的板子是ESP32C3&#xff0c;所以没有完全按照教程去设置环境&#xff0c;但是也成功。 一、下载ubuntu系统以及esp-idf https://cn.ubuntu.com/download/server/step1 在以上链接…

解决npm报错:sill idealTree buildDeps

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 报错信息 使用 npm 安装依赖时报错&#xff1a;sill idealTree buildDeps 解决方案 请按照以下步骤进行相关操作&#xff1a; 1、删除 C:\Users{账户}\ 文件夹中的 .npm…

【NX入门篇】

NX入门篇 一、UG NX 由来二、软件如何启动&#xff08;UG NX 12.0&#xff09;三、使用步骤四、常用命令 一、UG NX 由来 UG NX由来&#xff1a; 1969 年&#xff1a;UG 的开发始于美国麦道航空公司&#xff0c;基于 C 语言开发实现&#xff1b;1976 年&#xff1a;UG问世&am…

如何在 VSCode 中配置 C++ 开发环境:详细教程

如何在 VSCode 中配置 C 开发环境&#xff1a;详细教程 在软件开发的过程中&#xff0c;选择一个合适的开发环境是非常重要的。Visual Studio Code&#xff08;VSCode&#xff09;作为一款轻量级的代码编辑器&#xff0c;凭借其强大的扩展性和灵活性&#xff0c;受到许多开发者…

超越YOLO11!DEIM:先进的实时DETR目标检测

DEIM: DETR with Improved Matching for Fast Convergence arXiv: https://arxiv.org/abs/2412.04234 Project webpage&#xff1a;https://www.shihuahuang.cn/DEIM/ GitHub&#xff1a;https://github.com/ShihuaHuang95/DEIM 1 背景&#xff1a;DETR目标检测框架 目标检…

《GICv3_Software_Overview_Official_Release_B》学习笔记

1.不同版本的 GIC 架构及其主要功能如下图所示&#xff1a; 2.GICv2m&#xff08;Generic Interrupt Controller Virtualization Model&#xff09;是针对ARM架构的GIC&#xff08;通用中断控制器&#xff09;的一种扩展&#xff0c; GICv2m扩展为虚拟化环境中的中断管理提供了…

PADS Logic原理图中有很多页原理图,如何(怎样)删除其中一页或者多页

我们在进行PADS Logic进行原理图设计的时候&#xff0c;有时候可能遇到一次性设计了很多页的原理图&#xff0c;比如说十几页的原理图。那么我们在进行PADS Layout的时候&#xff0c;可能将这些原理图绘制两块板或者多块PCB板&#xff0c;那么这时候我们需要将其中的一张原理图…

网络安全的学习与实践经验(附资料合集)

学习资源 在线学习平台&#xff1a; Hack This Site&#xff1a;提供从初学者到高级难度的挑战任务&#xff0c;适合练习各种网络安全技术。XCTF_OJ&#xff1a;由XCTF组委会开发的免费在线网络安全网站&#xff0c;提供丰富的培训材料和资源。SecurityTube&#xff1a;提供丰…

问题清除指南|关于num_classes与 BCELoss、BCEWithLogitsLoss 和 CrossEntropyLoss 的关系

前言&#xff1a;关于「 num_classes 1 」引发的探究。 2024年尾声&#xff0c;学弟问到一个问题&#xff1a;在研究工作 CNNDetection 的github开源代码 networks/trainer.py 文件的 line 27 self.model resnet50(num_classes1) 中&#xff0c;变量 num_classes 的值为1&…