• 最新文章
  • 语法入门
  • 基础算法
  • 数据结构

数据结构01 栈及其应用

数据结构是一种在程序中系统化管理数据集合的形式。它通常由以下3个概念组合而成: 数据集合:通过对象数据的本体(例如数组和结构体)保存数据集合 规则:保证数据集合按照一定规矩进行正确操作、管理和保存的规则(例如按照顺序取出数据) 操作:增、删、改、查等对数据集合的操作 我们今天主要讲解的是栈(Stack)的操作 栈是一种线性数据结构,栈的特征是数据的插入和删除只能通过一端来实现,这一端称为“栈顶”,

数据结构02 队列及其应用

队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,前端一般叫做队头,后端叫队尾。队列就像学校做操站队一样,来的人一个一个往后站,走的时候从前往后一个一个走。 总结队列的特点为:先入先出,即先入队的元素先出队。 对于队列的使用,我们可以直接利用数组来模拟队列的基本操作,具体实现如下: int que;     //定义一个能存放10

算法01 递推算法

递推是一种处理问题的重要方法。 递推通过对问题的分析,找到问题相邻项之间的关系(递推式),从起点出发(首项或者末项)然后使用循环不断地迭代,得到最后需要的结果。 对于Fibonacci数列,已知:fib(1) = 1; fib(2) = 1; 从第三项开始满足公式fib(i) = fib(i-1) + fib(i-2)。输入一个整数n(1<=n<=100),求fib(n)的值。 【输入

算法02 递归算法

在编程中,我们把函数直接或者间接调用自身的过程叫做递归。 递归处理问题的过程是:通常把一个大型的复杂问题,转变成一个与原问题类似的,规模更小的问题来进行求解。 函数的参数。在用递归解决问题时,要合理地去设计函数的参数,达到当前问题与子问题之间的变化,可以通过参数进行准确地描述。 递推关系。要能够找到当前问题与子问题之间的联系,能够用子问题去描述当前问题的解。 递归出口(边界条件)。要找到问题的边界

算法03 模拟算法之一维数组相关内容详解

模拟算法就是模拟题目给的操作,用代码一步一步的描述出来即可。在过程中使用的都是我们已知的各种方法,如数组元素调用、排序、枚举等等,只是这些过程一般比较复杂。本次课程主要针对一维数组的模拟。 在各类算法竞赛中,包括CSP-J/S,NOIP等竞赛,经常会出现各类“模拟题目”,遇到这种题大家不需要害怕,甚至可以将其作为“送分题”,因为你只需要按照题目叙述的方式来写程序就能得到最终答案。模拟不是一种算法,

算法04 模拟算法之普通二维数组相关详解

直接来训练下普通二维数组的题目。 给定一个m行n列的矩阵,求矩阵外围元素之和。所谓矩阵外围的元素,是矩阵第一行、最后一行、第一列和最后一列的所有元素。 【输入描述】第1行:为两个整数,分别表示矩阵的行数m和列数n,中间以一个空格间隔; 接下来m行为该矩阵m行n列的元素,且都为整数,每一行元素之间以一个空格隔开。 【输出描述】一个整数,表示该矩阵外围元素之和。 【样例输入】 3 4 1 2 2 1

语法01 C++基本框架

C++语言,是基本的程序设计语言之一【程序设计语言,简单的来说就是编写代码来操控计算机实现某种功能的语言。】,有很多大家经常会玩的游戏都是有C++语言参与的,比如植物大战僵尸以及英雄联盟中的部分代码都用到了C++语言。 打开devcpp软件(点击此处获取devcpp编程软件)从主菜单选择“文件”—>“新建” —>“源代码”即可。新建完成之后屏幕右下侧出现一片白色区域,称为“源程序编辑区

语法02 输出语句与分隔

标准输出指令:cout 标准使用格式:cout << 指令功能:在控制台输出结果,如果想要原样输出我们想让他显示的内容,那么就需要将原样输出的内容用双引号引起来。 小知学习完cout语句之后,希望利用自己所学知识来告诉老师自己现在的位置在哪里?聪明的你能帮助小知完成这个简单的任务吗? 【样例输入】无 【样例输出】广东省深圳市 #include <iostream> usin

语法03 变量

变量,代表了一个存储单元,其中的数量是可以改变的 ,所以我们把它称为变量,通俗的说,变量就类似于一个房间,我们可以往房间里面放不同数量的椅子。 定义格式:变量类型  变量名; 变量类型也就是规定变量里能放什么类型的数据,比如整数,小数等等。 例如,现在需要定义一个能存放整数的变量,名字叫a,那么 这里可以写成:int a; 这里的int表示变量a里只能放整数数字。 定义多个变量:将多个变量名之间用

语法04 输入语句

使用格式:cin >> 输入的意思就是把一个值放到变量里面去,也就是变量的赋值,这个值是由我们自己输入的。 (注意:输入变量前要先定义,输入完之后要按Enter键。) 输入多个变量,与输出类似,用”>>”连接即可。 例:如果我要向定义好的整型变量a里面输入数字,则 可写成: cin>>a; 小知书架内的书总是被他借给别人,所以他也不能确定书架内还有多少本书,今天

语法05 浮点型/实数类型

实数类型是一种数据类型,实数类型变量里能存放小数和整数。 定义格式:double a; 赋值:a=0.4; 输入:cin>>a; 输出:cout<<a; 小知在文具店买铅笔,一枝铅笔的价格是0.8元。请你帮助小知,用变量的形式输出这枝铅笔的价格。 【样例输入】无 【样例输出】0.8 #include <iostream> using namespace std;

语法06 格式化输出

格式化输出所用的函数为 printf,它可以输出任意位数的小数。 使用格式:printf(“%.nf”,a)。这句话的作用是将变量a保留n位小数输出。 注意事项: 1、这里的n,需要具体化为一个数字,保留几位小数,如保留两位小数,n就改成2,保留三位小数,n就改成3; 2、%后面的小数点一定不能漏掉。 3、使用printf的时候,一定要注意加上头文件#include<cstdio>。

语法07 程序中的除法和求余

int / int = int double / int = double int / double = double double / double = double 只要除号任意一边出现了double类型,结果就是double类型 只有除号两边都是int类型,结果才是int类型 这个规律也适用于加法减法和乘法 小知妈妈早上出去买了n块饼作为早餐,准备回家跟小知爸爸还有小知平均分掉吃,请问每个人

语法08 强制类型转换

强制类型转换,就是把一种数据类型转化为另一种指定的数据类型。 它是一种临时的转换。 格式:(数据类型) (表达式) 即:(要被转换成的类型)(被转换的式子); 注意:类型名或者表达式至少要有一个被括号括起来。 例如:输出5/2的小数结果,可以这么写: int a=5;   cout<<(double)a/2; 这么写就相当于先把a转化成double类型,再除以2。这样的话与5.0/2的

语法09 字符类型和ASCLL码

如果我们想存字母,例如输入k,能输出k,就需要声明字符类型的变量来存放。 字符是指计算机中使用的字母、数字和符号。例如我们26个大小写字母、数字0~9、和一些特殊的符号“#”、“@”、“+”、“-”等等。 字符类型(char)是一种数据类型,和实数类型、整型类似,不同的是一个字符类型变量可存储的内容为单个字符。 定义格式:char  a;   // (数据类型) (变量名) 赋值:a = 'k';

语法10 变量连续赋值、自增自减

当很多个变量都需要给一个相同的值的时候,我们可以用连续的赋值符号完成这个操作。 基本格式:变量=变量=变量=……=变量=表达式; int  a,b,c,d,e; a=b=c=d=e=88; 完成的功能是将88这个数值赋给a,b,c,d,e这五个变量。而在程序内部执行的顺序如下: e=88;   d=e;  c=d;   b=c;   a=b; 小知邀请三个小伙伴来家做客,妈妈刚好买回来一袋糖果准备

语法11 复合运算符与变量交换

在c++中,有很多方便书写的复合运算符,用的比较多的有如下几个: += 、 -= 、*= 、 /= 、 %= 。 例如: a+=b;  就是把变量a的数值增加b。其他运算符与之类似。 a=b就是把b的值赋值给a了,这样a的值变成了4,之后b=a,b的值也变成了4。 就像有两杯饮料,我们要交换两个杯子的饮料,直接把一个杯子往另一个杯子里倒肯定是不行的,这时需要一个多余的空杯子来过渡。 这里我们也需要

语法12 if语句与关系运算符

单分支:只有一条路可以选择,只能选择走或不走。如果满足条件,就执行语句,不满足就跳过单分支结构的语句。 if(条件表达式)    {        语句1;        ...... } 如果条件表达式的值为真,即条件成立,语句1及括号内的其他语句将被执行。否则,括号内的语句将被忽略(不被执行),程序将按顺序从整个选择结构之后的下一条语句继续执行。 条件表达式就是把判断条件用关系式的方式表达出来

语法13 单分支结构的相关问题

要判断一个数是否是偶数,只要判断这个数字能不能被2整除即可。如果一个数字a除以2,没有余数,那么就是偶数;如果除以2有余数,那么就是奇数。 if(a%2==0)   a是偶数 if(a%2==1)   a是奇数 小知参加一场抽奖活动,抽到偶数号才能进入下一轮继续抽奖,他想知道自己是否晋级,是的话在屏幕输出yes,否则输出no?(1<=a<=100) 【输入描述】一个整数a,表示抽奖的数

语法14 双分支结构 if…else语句

双分支:有两条路,而且这两条路都可以选择。如果满足判断条件,就执行语句1,不满足就执行语句2。 if(条件表达式)  //如果条件成立 {       语句1;    //条件真时执行  } else             //否则 {       语句2;    //条件假时执行 } 乐乐在期末考试结束,感觉心里没底,于是提前去问老师考试情况,老师告诉他的得分为a,达到60分就是及格,未达到就

语法15 逻辑运算符

“并且”在C++中的写法为“&&”,它是一种运算符,称作逻辑运算符。 逻辑运算符有3种: 与、并且( && ) 或者(||) 非(!) 当参与运算的两个条件都为真时,结果才会真(1);否则为假(0)。 如:5>0 && 4>2 由于5>0为真,4>2也为真,相“与”的结果也为1。 5>6 && 4>

语法16 多分支结构

if(条件1)     语句1;       //满足条件1就执行 else if(条件2)     语句2;       //不满足条件1,但是满足条件2执行 else if (条件3)     语句3;       //不满足条件1和条件2,满足条件3执行 ...... else 语句 n;     //不满足上面所有条件就执行 if开始,中间都是else if,最后是以else结束是对上面所

语法17 switch结构

应用条件语句可以很方便地使程序实现分支,但是出现分支比较多的时候,虽然可以用嵌套的if语句来解决,但是程序结构会显得复杂,其至凌乱。为方便实现多情况选择,C++提供了一种switch开关语句。 switch(表达式)   {          case 常量表达式1:                   语句序列1;                   break;          ……    

语法18 for循环基础知识

循环在我们的日常生活中随处可见: 表盘上不断转动的时针分针、每天的日落日出、一遍又一遍的单词背诵等等... ... 这些“周而复始,不断重复的事情”都是循环。 常见的作用有两种: 循环可以指挥计算机重复去执行某些代码,减少程序的代码量。 循环可以让计算机去尝试所有的可能情况,找出最优的答案。 如果循环条件永远成立,循环就会一直执行,造成死循环。试试下面的代码会发生什么事情吧。 for(int i=

语法19 for循环求和

求1+2+3+... ...+1000的和: 可以把这个加法运算,看成一个循环的过程。用变量s表示运算的结果,s的初始值为0,依次让s的值增加1,2,... ... ,1000,即: s = s+1;s = s+2; ... ... ;s = s+1000; 用变量i表示s每次增加的数值,即: for(int i=1;i<=1000;i++) {     s = s+i; } 即:s+1+2

语法20 for循环求积

求1*2*3*... ...*10的积: 这个算式与求和十分类似,我们可以类比循环求和的代码,将”+”替换成”*”,即可得到循环求积的代码,即: s = s*1;s = s*2; ... ... ;s = s*10; 用来求积的变量s的初始值要为1,这样才不会改变算式的运算结果。 循环对应的算式:s*1*2*3...*10。 注意:用来求积的变量最好是long long 类型,累乘运算很容易超出i

语法21 while循环、循环中断break与继续continue

愚公移山小故事:“愚公不畏艰难,坚持不懈,挖山不止,最终感动天帝而将山挪走。” 其实愚公移山的过程也是循环的过程,但是并不能确定循环多少次后感动天帝将山移走,所以用for循环并不合适,因为我们不清楚循环的次数(i的范围不确定)。 对于这种不清楚次数的循环,但是知道循环条件的问题,我们可以使用while循环去解决: while(山未被移完) {        移山; }   如果循环条件永

语法22 循环嵌套结构(for/while循环)

和if一样,循环也能够嵌套。例如:我们可以先写一个输出1~10的循环a,我如果想让这个程序执行5次,则只需要再写一个5次的循环b,然后把循环a放入循环b中即可。   输入整数m,n,请你打印m行,整数n~1。 【输入格式】输入两个空格隔开的整数m,n(1<=m,n<=15) 【输出格式】m行:每行有n个空格隔开的整数 【输入样例】3 5 【输出样例】 5 4 3 2 1 5

编程学习小圈子,助力大家成长

不知不觉,星球已经运营1000多天了,在这一年多的时间里通过星球给近260位老师/同学带去了不少原创资料。通过微信私聊,我看到了很多老师/同学的进步,很多老师原来并没有带过C++课程,但看完课件及视频之后,便可以带班上课;也有很多学生因此入门了信息学,拿到了奖项,也有些同学通过等级考试资料自学,轻松通过。 目前已经/正在更新的内容有【《信息学奥赛C++》共四十节原创精品PPT】、【CSP- J初赛

软件下载

此页更新软件,如需其他相关软件,可给我留言~ 【阿里云盘下载链接】https://www.alipan.com/s/57Mx64L8xPc 下载后,双击打开DEV-CPP安装包 ,等待进度条到 100% 直接选择English ,点击 OK(注:过程中如果出现第二次语言选 项,需选择中文,第一次的语言选项中没有中文) 点击I Agree(即同意) 点击Next进入下一步 选择安装路径,点击Inst