【NOI】C++程序设计入门一

系列文章目录

学习路线:C++从入门到NOI学习路线

学习大纲:C++全国青少年信息学奥林匹克竞赛(NOI)入门级-大纲



前言

本篇内容专为初学者量身打造,旨在引领大家轻松踏入C++编程的大门。首先从安装和使用适合初学者的集成开发环境Dev C++开始帮助大家快速建立编程基础。通过Dev C++简易的操作界面、集成编译器以及语法高亮等功能,用户可以便捷地编写和调试代码。文章以人与计算机如何沟通这一核心问题引入编程的基本原理,并详细解释了如何利用cin进行数据输入和cout进行结果输出。

在深入学习过程中,我们不仅实际操作演示如何通过程序计算长方形周长和面积,还进一步阐述了C++程序语言规则的关键部分,包括头文件引用、命名空间引用及主函数的定义和作用。头文件包含必要的函数库,使程序具备特定功能;命名空间则确保代码中的标识符不产生冲突;而main函数是程序执行的起始点,负责整个逻辑流程。

下一站: C++程序设计入门二


一、Dev C++安装与使用入门。

在正式学习C++之前,我先给大家介绍一款我们常用于编程的软件——Dev C++;它是一款适合初学者的集成开发环境(IDE)。

Dev C++有以下特点

  1. 简易操作:界面相对简单,方便你们快速上手编写、修改代码。
  2. 集成编译器:内嵌了C++编译器,可以将你们所写的C++程序直接转换成计算机能执行的二进制指令。
  3. 语法高亮:提供代码着色功能,有助于区分不同类型的语句,提高阅读和理解代码的效率。

在学习本节内容之前,请先点击下方链接前往学习关于Dev C++的相关教程。

Dev C++的安装与使用方法,超详细教程。

二、人和计算机是如何交流的?

完成上面的学习内容了吗?

请添加图片描述

ok,进入下一步的学习。

2.1 编译

首先想问大家一个问题?如果突然有一天地球来了一个外星人,你会怎么跟它交流呢?

在这里插入图片描述

首先可以肯定的是,世界上所有人类语言它都听不懂,除非。。。

在这里插入图片描述

为什么要问这样的问题呢?因为计算机就好像是一个“外星人”👽。

我们说的语言,计算机听不懂;而计算机的“语言”,我们虽然认识但也看不懂。

在这里插入图片描述

👨‍🏫:哦,你确定?

在这里插入图片描述

🤦‍♂️:好吧,你是对的。

计算机💻实际上是一个精密的逻辑机器,它不理解人类自然语言,但它能理解和执行的是由0和1构成的二进制代码。

这该怎么办呢?

在这里插入图片描述

没错,请个翻译。

计算机程序是一组计算机能识别和执行的指令,当我们编写好程序后,将程序传给计算机,但最终仍需要编译器将其转换为计算机能够执行的机器码。这个过程叫做编译

在这里插入图片描述

编译是预处理、词法分析、语法分析、语义分析和代码生成等一系列复杂过程的结果,最终得到的机器码可以在不依赖源代码的情况下直接运行

当计算机执行程序后处理得到的数据或信息,通过显示器💻、打印机、网络接口或其他输出设备将结果返回给用户,以便用户可以查看、分析或进一步操作。

请添加图片描述

所以当我们想要指挥计算机干某件事的时候,就需要编写相关的程序指令。比如我们想要计算机帮我们算长方形的周长和面积,那么就需要编写出它的程序。

请添加图片描述

2.2 cin

此时,我们先别急着动手,思考几个问题?

  1. 计算机知道长方形的长和宽吗?
  2. 计算机知道计算长方形周长和面积公式吗?
  3. 你知道长方形的长和宽吗?
  4. 你知道计算长方形周长和面积公式吗?

在这里插入图片描述

我好像知道,但是计算机是不知道的。(别说你不知道啊(→_→))

那怎么将我们知道的内容告诉给计算机呢?

在这里插入图片描述

很关键啊,记住这个单词in有在…里面和进入的含义;加上我们C++中的C就变成了cin

cin可以从标准输入流(通常是键盘⌨)读取数据。

例如:cin >> variable; 表示从键盘接收用户输入并存储到变量 variable 中。

👨‍💼:为什么要用>>符号呢?

我们可以把>>理解成一条河,箭头的方向就是水流的方向,数据就像河水一样,从源头(即用户的键盘输入)通过这条“河流”流入程序中。

在这里插入图片描述

例如:

int age;//age 年龄
cin >> age;

这里,用户在键盘上输入一个整数值后按回车键,这个值就会被cin读取并通过>>运算符“流入”到age变量中。

👨‍🏫:好了,我们搞定了如何将我们知道的内容告诉给计算机。那怎么让计算机记住这些东西呢?

👨‍💼:你刚才好像反复提到了“变量”。

是的,计算机在程序中通过变量来存储和记住我们输入的内容。关于变量的知识,我们在下一节学习,这里只需要知道有这样一个东西即可。

所以,我们通过以下的方式将长方形的长和宽输入到计算机中。

int l,w,c=0,s=0;//l:长方形的长 w:长方形的宽 c:长方形的周长 s:长方形的面积
cin>>l>>w;//长方形的长和宽需要输入

将长方形的长和宽输入到计算机中后,就可以进行下一步了,让计算机计算出长方形的周长和面积。

当然计算机自己并不知道如何算长方形的周长和面积。

在这里插入图片描述

所以需要我们将长方形的周长和面积计算公式输入进去。

防止你们也不会,所以复习一下长方形的周长和面积计算公式:

  1. 长方形周长(c) 是其四条边的总长度,假设长方形的长是 l,宽是 w,则周长 c 计算公式为:c=2l+2w。

  2. 长方形面积(s) 是长与宽相乘的结果,即:s=l×w。

那么补充后的程序如下所示:

int l,w,c=0,s=0;//l:长方形的长 w:长方形的宽 c:长方形的周长 s:长方形的面积
cin>>l>>w;//长方形的长和宽需要输入
c=2*l+2*w;
s=l*w;

2.3 cout

到了这里计算机应该是把长方形的周长和面积计算出来了,还缺点什么了?

在这里插入图片描述

是的,计算机还没有将结果告诉给我们。

还记得我们前面是怎么输入的吗?

c(c+++ in(在...里面)  ->   cin(输入)   。

那你能想象出输出长什么样吗?

c(c+++ out(外面, 外部)  ->   cout(输出)   。

没错,只是将in变成了out。是不是很好记住呢。

在这里插入图片描述

当数据从计算机流向我们时,"河流"的方向是不是也要发生变化。

cin>>
cout<<

没错,in和out的含义相反,箭头的方向也是相反的。接下来继续完成我们程序。

int l,w,c=0,s=0;//l:长方形的长 w:长方形的宽 c:长方形的周长 s:长方形的面积
cin>>l>>w;//长方形的长和宽需要输入
c=2*l+2*w;
s=l*w;
cout<<"周长:"<<c<<" 面积:"<<s;

2.4 实操

  1. 接下来我们将写好的程序输入到计算机中,看是否能帮助我们完成长方形周长和面积的计算。

在这里插入图片描述

  1. 我们编写的程序是不能直接被计算机运行的,需要通过编译器这个翻译官,将我们的程序转换为计算机可以直接执行的机器码。哪怎么样进行编译操作呢?
  • 在Dev C++中选择“运行”>“编译”或按F9编译您的代码。

在这里插入图片描述

  • 点击运行后,会有一系列菜单,选择编译。

在这里插入图片描述

  • 如果编译成功,将在Dev-C++的输出窗口中的编译日志看到编译结果。

在这里插入图片描述

  1. 我们将编译好的程序运行一下,看看能不能得到我们想要的结果。
  • 选择“运行”>“运行”或按F10运行您的代码。

在这里插入图片描述

  • 我们输入长方形的长为1,宽为2(看自己心情❤)。
  • 如果一切正常,将在Dev-C++的控制台窗口中看到程序的输出。

在这里插入图片描述

4.思考

将我们刚才的编写程序和运行的一系列过程进行梳理,可以发现完全符合预先设想三个步骤:人编写程序给计算机,计算机处理程序,计算机返回结果。

在这里插入图片描述

三、程序语言规则

大家有注意到我们刚才运行的程序中有几行代码我们没有讲解吗?

在这里插入图片描述

我知道大家很急,但是先别急。我们马上娓娓道来。

在编写程序的时候并不是在随意的打字,而是有一定的程序语言规则。

在这里插入图片描述

可以看到,我们大致把C++程序分成三个部分。1.头文件引用,2.命名空间引用,3.主函数。接下来分别对三个部分进行讲解。

3.1 头文件引用

想象一下,编写程序就像组装一辆乐高汽车。每一块积木代表不同的功能模块,比如轮子用来滚动,车身用来承载乘客。在C++编程中,我们也有一堆这样的“积木块”,它们被称为函数或者类,藏在各种各样的“盒子”里,这些盒子就叫做“头文件”。

在这里插入图片描述

如何引入这些头文件呢?

include 包括,包含写下这行语句就相当于在程序之前嵌入了一条已经编写好的一大段程序 。

#include < iostream>,这句代码就是使用了其他人写好的输入输出代码,我们只需要使用cin,cout就能完成输入和输出的操作。

接下来给大家介绍一个信奥赛中常用的万能头文件bits/stdc++.h”。

这个家伙就像是一个超级百宝箱,里面装满了几乎所有的常用积木块,从数字计算到字符串处理,从列表操作到图形绘制等等。当我们写一句#include <bits/stdc++.h>,就好比我们对小精灵说:“嘿,把所有我们需要的积木都拿出来吧!”

3.2 命名空间引用

那什么是命名空间?

在这里插入图片描述

当在代码中引入了同名的变量或者方法,就会出现不知道是谁或者错误的情况,为了避免这种事情的发生,我们应当明确的告诉计算机或者程序我们使用的对象。using namespace ***;就是其中一个办法。

在这里插入图片描述

using namespace std;

它的作用是将命名空间std中的所有标识符引入当前的作用域中,这样就可以直接使用std命名空间中的函数和变量,而不需要在每个标识符前加上std::前缀。

在这里插入图片描述

当然我们也可以不引入命名空间。

例如,使用cout输出内容时,如果没有使用using namespace std,则需要写成std::cout<<“周长:”<<c<<" 面积:"<<s; 。

当我们有多个输入输出语句时,每行代码前面都要写std::是一件很麻烦的事,所以引入头文件后,引入命名空间也是很必要的事。

3.3 主函数

main函数(咩~)是C++程序执行的入口点,每个可执行的C++程序都必须有一个且只能有一个main函数。

在这里插入图片描述

主函数里面就是我们处理问题的程序。包含输入数据,数据处理,输出结果等。

在这里插入图片描述

提示:我们编写的程序都需要使用英文下的符号,包括不限于, ; <> "" '' : () 等。

cin和cout在前面已经介绍的很详细了,所以这里不再重复讲解。

3.3.1 赋值语句

在学习赋值语句之前,首先要先明白什么是赋值。

想象一下你正在管理一个仓库,这个仓库中的每一个箱子都代表一个变量。当你执行赋值操作时,就好比将某个物品放入指定的箱子中。

在这里插入图片描述

例如,假设你有一个空箱子(即变量)叫做 age,你想将数字 30 放入这个箱子中。在编程语言中,这会写作 age = 30。这里的等号(=)不是数学意义上的等于,而是一个赋值操作符,它指示计算机将右边的数值 30 放到左边的箱子(变量)age 中去。这样一来,以后当你提到 age 的时候,实际上就是在引用那个装有数字 30 的箱子。

进一步地说,如果另一个箱子(变量)years_old 要与 age 相同,你只需说 years_old = age,这就像是从 age 箱子里取出相同的东西(即 30)再放到 years_old 箱子里。这样,两个箱子现在都装着同样的物品(值)。

更复杂的赋值操作可能包括表达式,比如 result = a + b,这意味着先计算右侧 a + b 的结果,然后把得到的结果放入左侧的 result 箱子中。

在这里插入图片描述

3.3.2 算数表达式

C++表达式是由运算符和操作数组成的组合。C++中的表达式可以包括算术逻辑关系、位运算等多种运算符。为了简化学习难度,本节只介绍上文使用的算术表达式。

算术表达式是由算术运算符连接起来的表达式,算术运算符有+、-、*、/、%等。其逻辑与数学同理。

int a = 10, b = 20;
int c = a + b; // 加法,表示a和b相加后的值赋给c,c的值为30。
int c = b - a; // 减法,表示b减去a的值后赋给c,c的值为10。
int c = a * b; // 乘法,表示a和b相乘后的值赋给c,c的值为200。
int c = b / a; // 除法,表示b除以a的值后赋给c,c的值为2。
int c = b % a; // 取余,表示b除以a的商的余数赋给c,c的值为0。

整数之间的运算,结果为整数。实数之间的运算,结果为实数。

例如:

  • 4+5/2=4+2=6
  • 4+5%2=4+1=5
  • 4+5.0/2=4+2.5=6.5

3.4 本节代码

#include<iostream>
using namespace std;
int main(){
	//问题:已知一个长方形的长为L和宽为W,求长方形的周长和面积。
	//分析问题:已知l,w;求周长、面积 
	//定义变量 
	int l,w,c=0,s=0;
	//输入数据 
	cin>>l>>w;
	//处理数据
	c=(l+w)*2;
	s=l*w;
	//输出结果
	cout<<"周长C:"<<c<<" 面积S:"<<s<<endl; 
	//程序结束
	return 0; 
	
	 
}

四、练习

请反复抄写或者在Dev C++上练习,直到能完全默写。

请添加图片描述

五、总结

以上就是今天要讲的所有内容,本文精简介绍了C++编程的起步知识,从搭建Dev C++开发环境到理解并实践基本的输入输出操作,再到对C++程序结构中重要组成部分——头文件引用、命名空间引用以及主函数的详解,皆是为了让初学者能够系统且循序渐进地掌握C++编程的基础要领。通过实例分析和代码演练,读者不仅了解了如何运用cin获取用户输入,利用cout展示计算结果,更深刻体会到了程序设计背后的一系列逻辑步骤。最后,鼓励大家动手实践,在实践中巩固所学知识,为进一步探索信息学奥林匹克竞赛(NOI)级别的C++编程打下坚实基础。

六、感谢

如若本文对您的学习或工作有所启发和帮助,恳请您给予宝贵的支持——轻轻一点,为文章点赞;若觉得内容值得分享给更多朋友,欢迎转发扩散;若认为此篇内容具有长期参考价值,敬请收藏以便随时查阅。

每一次您的点赞、分享与收藏,都是对我持续创作和分享的热情鼓励,也是推动我不断提供更多高质量内容的动力源泉。期待我们在下一篇文章中再次相遇,共同攀登知识的高峰!

在这里插入图片描述

  • 56
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月别枝惊鹊丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值