CSP考试复习:第一单元 C++语言基础 1.1 程序结构

2023-05-16

第一单元 C++语言基础

1.1 程序结构

(1) 程序框架

 注释:注释有两种,一种是“//”,另一种是“/* … */”。“//”必须单独放置一行,或代码所在行

的后面;而“/*”、“*/”成对存在,可以插入到代码的任意位置。

 引用头文件:在代码开头写“#include <头文件名>”。如果想引用自己的头文件,需要把尖括号(表

示只从系统目录搜索头文件)换成双引号(表示先从 cpp 所在文件夹搜索,然后再到系统文件夹搜索)。

 命名空间:很多 C++的东西都要引用 std 命名空间,所以代码中会有“using namespace std;”。

 main():所有程序都要从 main()开始。

在所有的算法竞赛中,main()的返回值必须是 0,否则视为程序异常结束,得分为 0 分。

 语句和语句块:

1. 语句:一般情况下,一条语句要用一个分号“;”结束。为了美观和可读性,可以把一条语句扩展成

几行,也可以把多个语句写到同一行上。

2. 语句块:用“{”和“}”包围的代码是语句块。无论里面有多少代码,在原则上,语句块所在的整体

都视为一条语句。

(2) 选择结构

1. if 语句:if 表示判断。如果条件为真,就执行接在 if 后的语句(语句块),否则执行 else 后的语句(语句块)。如果没有 else,就直接跳过。if 有以下几种格式

if (条件) // 如果条件成立,就执行if后面的语句或语句块。

语句或语句块

if (条件) // 如果条件成立,就执行if后面的A,否则执行B。

语句或语句块A

else

语句或语句块B

if (条件1) // 实际上,这是if语句内的if语句,即if的嵌套。所以else和if中间要有空格。

语句或语句块A

else if (条件2)

语句或语句块B

……

else

语句或语句块N

2. switch 语句:switch 表示选择。它根据条件的不同取值来执行不同的语句。格式如下:

switch (表达式)

{

case 值1:

代码段A

break;

case 值2:

代码段B

break;

……
default:
代码段N
break;
};


如果表达式的值是值 1,就执行代码段 A;如果表达式的值是值 2,就执行代码段 B……否则执行代码段 N。
注意:
 default 一部分可以省略。
 如果不使用 break,那么紧随其后的 case 部分代码也会被执行,直到遇到 break 或 switch 语句
结束为止!
 switch 结尾要有一个分号。
3. if、switch 都可以嵌套使用。
【问题描述】输入一个日期,判断它所在年份是否为闰年,并输出所在月份的天数。闰年的判断方法:四年一闰,百年不闰,四百年又闰。

int year,month,day;
bool b=false;
cin>>year>>month>>day;
// 判断是否为闰年
if (n%400==0)
b=true;
else if (n%100!=0 && n%4==0)
b=true;
if (b)
cout<<y<<"是闰年。"<<endl;
else
cout<<y<<"不是闰年。"<<endl;
// 判断所在月份的天数
switch (month)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
cout<<"这个月有31天。"<<endl;
break;
case 4: case 6: case 9: case 11:
cout<<"这个月有30天。"<<endl;
break;
case 2:
cout<<"这个月有"<<(b ? 29 : 28)<<"天。"<<endl;
break;
};


(3) 循环结构


1. while 语句:如果条件成立,就继续循环,直到条件不成立为止。格式如下:

while (条件)
循环体(语句或语句块)

2. do…while 语句:如果条件成立,就继续循环,直到条件不成立为止。它与 while 的最大区别在于,do…while 循环中的语句会被执行至少一次,而 while 中的语句可能一次都没有被执行。格式如下:

do
{
循环体
}
while (条件); // 注意分号

4. for 语句:for 分四部分,有初始条件、继续循环的条件、状态转移的条件和循环体。格式如下:
for (初始条件; 继续循环的条件; 状态转移的条件)
循环体
转换成 while 循环,即:

初始条件

while (继续循环的条件)
{
循环体
状态转移
}

 for 后三个条件不是必需的,可以省略不写,但分号必须保留。
5. 在循环语句内部使用 break,可以跳出循环;使用 continue,可以忽略它后面的代码,马上进入下一轮
循环。
注意,这两个语句只对它所在的一层循环有效。
6. 写 for 循环时,一定要注意:
 不要把计数器的字母打错,尤其是在复制/粘贴一段代码的时候。
 根据算法要明确不等号是“<”、“>”,还是“<=”、“>=”。
 逆序循环时,不要把自减“--”写成自增“++”!
【问题描述】输入 n,输出 n!(n!=1×2×3×4×……×n)。结果保证小于 long long 的范围。当输入值
为负数时结束程序。

int n;
long long r=1;
cin>>n;
while (n>-1)
{
r=1;
for (int i=1; i<=n; i++)
r*=i;
cout<<n<<"! = "<<r<<endl;
cin>>n;
}

 (4) goto 语句


goto 语句用于无条件跳转。要想跳转,首先要定义标签(在代码开头的一段标识符,后面紧跟冒号),
然后才能 goto 那个标签。
很多教程不提倡使用无条件跳转,因为它破坏了程序结构,还容易给代码阅读者带来麻烦。不过,这不代
表 goto 没有使用价值。goto 的一个用途是跳出多层循环:

for (int j=0; j<9; j++)

for (int k=0; k<9; k++)
{
if (满足某种条件) goto __exited;
……
}
__exited:

 (5) C 与 C++的区别

C++语言是以 C 语言为基础开发出来的,C 语言的大多数内容被保留了下来。在信息学竞赛领域,很多情
况下 C 和 C++可以互相转化,甚至不用对代码进行任何修改。
下面是信息学竞赛领域中 C 和 C++的重要区别:
 C++支持用流输入输出,而 C 只能用 scanf 和 printf——再见了,%d!
 C++非常支持面向对象编程,而 C 已经“out”了。
《资料》中的“高精度算法”就只能用 C++完成,因为在 struct 内定义了成员函数。
C++可以用更强大的 string 类处理字符串,而不必担心发生某些低级错误。
 C++有强大的 STL,而 C 没有(有一个小小的 qsort 和 bsearch 算是补偿了)。
STL 是很多人从 C 转到 C++的重要原因。
 C 的头文件名仍然可以用在 C++中,不过可能会收到警报——应该去掉“.h”,前面再加一个“c”。
如<stdio.h>应该改成<cstdio>。
 C 程序运行速度稍优于 C++。不过也没快多少。
总之,C 能做的一切事情,C++也能做;C++能做的一切事情,C 不一定能做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSP考试复习:第一单元 C++语言基础 1.1 程序结构 的相关文章

  • 目前很火的SD-WAN是什么意思

    SD WAN SD WAN xff0c 即广域软件定义网络 xff0c 是将SDN技术应用到广域网场景中所形成的一种服务 xff0c 这种服务用于连接广阔地理范围的企业网络 数据中心 互联网应用及云服务 这种服务的典型特征是将网络控制能力通
  • cmd-bat 命令延时方法

    参考 xff1a https blog csdn net jk110333 article details 41869053 按照建议使用方法4 命令
  • Qt5中文教程

    1 教程 PyQt5中文教程PyQt5英文教程Qt5中文教程Qt 编程指南 下拉式复选框QComboCheckBox https blog csdn net LJX4ever article details 78039318 http qa
  • train,val,test的区别

    参考 xff1a https www mobibrw com 2017 7966
  • ubuntu18.04下搭建PX4编译环境

    Ubuntu18 04 Development Environment of PX4 Firmware 1安装Ubuntu2开始配置环境2 1下载PX4的固件源码2 2环境配置Bash ScriptsGazebo JMAVSim and N
  • PIX4中CAN调试——学习记录

    PIX4中CAN调试 学习记录 一 先行知识 nuttx驱动二 PX4中CAN驱动设置 固件版本 xff1a V1 13 0 编译版本 xff1a make px4 fmu v3 default 一 先行知识 nuttx驱动 Nuttx驱动
  • 蓝牙 舵狗 openmv通信相关

    总的思路是以openmv 接收蓝牙的指令 xff0c 如果是自动选项 xff0c 就在openmv 运行识别红球进行固定距离跟踪的程序 xff1b 如果是手动选项 xff0c openmv就直接把所得到的数据传给STM xff13 xff1
  • TM4C123G开发板学习记录(八)存储和安全管理(上)

    前言 TM4C123GH6PM有四种类型内存 xff1a FlashSRAMEEPROMROM 芯片设计厂商提供了灵活的操作 xff0c 性能优化 xff0c 和安全控制设计 本章学习目标 四种内存的特点和操作BitBang技术和使用MPU
  • 11-16 Fluent结果查看及后处理功能(做动画、监控点)

    lt
  • 如果你也23岁(2)

    接着上一篇 xff0c 跟大伙分享一下原来的这篇文章 xff1a 23 岁那年你正处在哪个状态 xff1f 现在呢 xff1f 我 xff0c 23岁 xff0c 应届毕业生 生活 xff0c 工作 xff0c 爱情都处于人生的低谷 xff
  • (实测可用)STM32 CubeMx安装教程

    一 STM32CubeMX 简介 xff08 1 xff09 STM32 是Cortex ARM内核架构的芯片 xff0c 中文名称为意法半导体 xff0c 是目前市面上应用自广泛的MCU芯片 STM32CubeMX 是 ST 意法半导体近
  • 25个国内外文献数据库

    1 国家哲学社会科学文献中心 网址 xff1a http www ncpssd org 2 中国国家数字图书馆 网址 xff1a http mylib nlc cn web guest home 3 中国科技论文在线 网址 xff1a ht
  • 巧用 IOPS 提升 Etcd 30% 的写入性能

    Laf 公众号已接入了 AI 聊天机器人 x1f916 xff0c 支持 GPT Claude 以及 Laf 专有模型 xff0c 可通过指令来随意切换模型 欢迎前来调戏 x1f447 本文转自博客园 xff0c 原文 xff1a http
  • 深度学习与对抗样本

    1 深度学习的概念 深度学习是机器学习中一种基于对数据进行表征学习的方法 观测值 xff08 例如一幅图像 xff09 可以使用多种方式来表示 xff0c 如每个像素强度值的向量 xff0c 或者更抽象地表示成一系列边 特定形状的区域等 而
  • 如何用python提取txt文件中的特定信息并写入Excel

    源代码 xff1a https github com julis wolala TextdataHandler 问题描述 xff1a 我有一个这样的数据集叫test result test txt xff0c 大概几百上千行 xff0c 两
  • 机械臂Matlab仿真——路径规划之三阶多项式路径点规划以及五阶多项式路径点规划

    仿真平台 xff1a Matlab 2019b 实时编辑器 xff08 旧的版本好像没有这几个路径规划函数 xff09 机械臂路径点跟踪有几个基本方法 xff1a 三阶多项式拟合 xff0c 五阶多项式拟合以及抛物线拟合 xff08 理论来
  • Matlab 仿真——直流电机速度控制(1)直流电机建模

    文章目录 Matlab 仿真 直流电机速度控制 xff08 1 xff09 直流电机建模1 物理模型2 系统方程2 1 转换方程表达2 2 状态空间表达 3 设计要求4 Matlab表达4 1 转换方程表达4 2 状态空间表达 5 引用 M
  • Matlab 仿真——直流电机速度控制(3)PID控制器设计

    文章目录 0 被控对象与设计要求1 比例控制2 PID 控制3 调参 0 被控对象与设计要求 上一节我们知道了我们的开环响应并不能满足设计需求 xff0c 这一节我们通过一个PID控制器使我们的系统满足设计需求 这里把设计需求和系统转换方程
  • ROS学习笔记(四)学会构建你的package

    1 构建Packages 当ros包的系统依赖都安装到位之后 xff0c 我们可以构建我们的包 xff0c 首先需要把你的配置文件添加到环境里面 source opt ros YOUR ROS DISTRO setup bash sourc
  • ROS学习笔记(九)使用rosed在ROS里面编辑文件

    文章目录 前言一 使用rosed二 使用rosed的自动填词功能三 编辑器链接 http wiki ros org ROS Tutorials UsingRosEd http wiki ros org ROS Tutorials Using

随机推荐

  • ROS SMACH个人学习记录

    ROS SMACH学习个人记录 SMACH关于抢占一些TipsSMACH缺点个人的结论 本文仅为个人学习记录 xff0c 结论正确性待考究 欢迎大家讨论 SMACH 关于抢占 抢占需要在并发容器里面实现 xff0c 并发容器里面包含多个状态
  • Matlab - Solidworks 机器人建模(4)—— 如何把SolidWorks模型导入到Matlab (Simscape模型)

    Matlab Solidworks 机器人建模 xff08 4 xff09 如何把SolidWorks模型导入到Matlab xff08 Simscape模型 xff09 1 说在前面 本文会介绍怎么直接把solidworks的模型转换成M
  • 高精度六轴平台(Hexapod platform)逆运动学分析(二)部分运动学分析

    Hexapod可以看成是由三个如下的结构组成的 xff0c 我们先提取其中一块来分析 可见Hexapod的逆运动学非常简单
  • 小白量化彩票实战(6)彩票号码中六保五缩水和旋转矩阵

    小白量化彩票实战 xff08 6 xff09 彩票号码中六保五缩水和旋转矩阵 我写彩票的博客 不是鼓励大家去买彩票 xff0c 读者要以学习编程和娱乐的思想来看待 兴趣是学习最大的动力 xff01 我编写彩票软件都有近十多年时间 xff0c
  • solidworks异型孔向导找不到标准数据库swbrowser解决方法

    1 把你找到的swbrowser文件放到安装目录下的 SOLIDWORKS Toolbox lang English中 2 打开选项 系统选项 异型孔向导 xff0c 把文件位置定位成SOLIDWORKS Toolbox 3 点击确定 举个
  • MCB MCCB ACB ELCB RCCB的区别和特性

    如有错误 xff0c 欢迎指正 先说结论 xff0c 基本可以把MCB xff0c MCCB xff0c VCB以及ACB看成过流保护断路器 xff0c 是为了保护电路电器的 xff0c 他们之间的区别一个是工作原理 xff0c 另一个就是
  • ROS学习笔记—— tf 工具包介绍

    1 准备工作 安装一些工具包 sudo apt get install ros melodic ros tutorials ros melodic geometry tutorials ros melodic rviz ros melodi
  • ROS “is neither a launch file in package”报错

    一般是没找着你的package配置文件 xff0c 运行 rospack find package 名 查看能否找到包 xff0c 找不到的话把你的包拷贝到workspace路径下 xff0c cd到你的workspace路径 然后运行 c
  • bvh-converter将bvh文件输出为csv文件失败,原因竟是numpy版本不匹配

    最近做的东西需要将bvh数据处理成xyz坐标 xff0c 在下面这篇文章找到了方法 xff1a 57条消息 人体动作捕捉格式BVH及其与三维坐标的转换 三维视频转bvh 零度蛋花粥的博客 CSDN博客 通过pip导入bvh converte
  • C++实验:多态性与虚函数

    C 43 43 实验 xff1a 多态性与虚函数 1 实验目的 xff08 1 xff09 了解多态性的概念 xff08 2 xff09 了解虚函数的作用及使用方法 xff08 3 xff09 了解静态关联和动态关联的概念和用法 xff08
  • 2014流水账

    欢迎转载 xff0c 转载请注明出处 本文地址 xff1a http blog csdn net zhenggaoxing article details 42386821 三天元旦小长假结束了 xff0c 先来回顾下三天的假期 xff1a
  • IOS中文排序学习

    前言 xff1a 最近有中文排序的需要 xff0c 发现系统没有提供中文排序的方法 xff0c 于是参考学习了网上前辈的代码实现了中文排序功能 xff0c 本文记录的就是学习实现中文排序的过程 实现英文排序 系统提供了英文排序的方法 写了一
  • IOS 定制中间突出UItabBar

    前言 xff1a 公司的项目需要定制一个中间突出的TabBar xff0c 在github 上找到一份可以参考的代码 xff08 虽然是四年前的 xff0c 但是还是很有参考价值 xff09 网址 xff1a https github co
  • Xcode删除所有断点

    问题是这样的 xff1a 接手新的项目 xff0c 顿时吓尿了 xff1a 整个程序有无数个断点 xff0c 那么如何一次性删除呢 xff1f 如下图 xff1a 点击Belete Breakpoints 就可以了
  • VSCode重新启用“错误波形提示”

    2020 06 09 更新常见问题 昨天晚上写伪码的时候 xff0c 看着VSCode的错误提示实在是心烦 xff0c 就手贱点了一下 禁用错误波形提示 xff0c 也就是disable error squiggles xff0c 但写完之
  • TortoiseSVN使用教程[多图超详细]

    安装及下载client 端 下载Windows 端程序 xff1a http tortoisesvn net downloads 一般而言 xff0c 如果是32 bit的Windows XP 应该使用TortoiseSVN 1 4 x x
  • 将UIColor转换为RGB值

    objc view plain copy 将UIColor转换为RGB值 NSMutableArray changeUIColorToRGB UIColor color NSMutableArray RGBStrValueArr 61 NS
  • 业余时间你在做什么,你就会变成什么样的人?

    改变 xff0c 从业余时间开始 博客定位 xff1a 技术 43 思考 其余统统不要 2017 xff0c 我来了 xff01
  • Xcode9 无证书真机调试

    写在前面 公司分配了新的测试机 证书99台名额已满 所以上网找教程 学习了一下如何使用Xcode无证书进行真机调试 一 创建证书 1 运行Xcode xff0c Xcode Preference 添加账号 xff08 能在appstore下
  • CSP考试复习:第一单元 C++语言基础 1.1 程序结构

    第一单元 C 43 43 语言基础 1 1 程序结构 1 程序框架 注释 xff1a 注释有两种 xff0c 一种是 xff0c 另一种是 必须单独放置一行 xff0c 或代码所在行 的后面 xff1b 而 成对存在 xff0c 可以插入到