ACM编程队训练记录(二)

身为学校acm队的队长,对上个学期的训练做一下记录。本次训练针对的是大一新入学的学生,没有相应的编程基础,因此本次进行基础的编程教学。本次记录的训练时间为2019年10月26日

变量

变量也就是数学中的变量,一个可以变化的值,在计算机语言中能储存计算结果或能表示值抽象概念。
通俗的说,在c++编程中,变量就是你声明的一个用来存储内容的容器。你可以给这个变量随意的赋值并在程序运行过程中进行肆意的更改。

int a;

如上述的例子,前面的int,表示的是变量的数据类型是int(整型),而a就是变量的名称。在后续的程序中你可以通过赋值符号,输入符号等等来改变这个变量a的值,如下:

a=1;
cin>>a;
a=a+1;

这些方法都可以改变a的值,从上往下看最开始如果仅仅使用int a,那么a将处于初始值0。

在使用了a=1后,a的值就变成了1。之后的cin>>a,你就可以在命令行内输入一个数值,它将代替原先的1变成a的数值。比如我输入了3,则a的值就变成了3。
后面使用了a=a+1则是代表着将a原先的值+1之后重新赋予给a,这一行运行之后,a的值就会变成4。

常量

相对于上述的可以在程序运行之中可以改变数值的变量,那同样也存在着不能够再程序运行过程中改变的值,这便是常量

常量,可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。与变量相比,常量就是常规的变量,只不过常量的值在定义后不能进行修改。

声明方式

在c++中常量有两种声明方式,一种是使用#define预处理器,另一种是使用const 关键字。

#define 预处理器

#define这种定义方式一般用在#include引用库之后,在这个位置使用#define定义的变量将直接被赋予相应的数值,并且在运行过程中一直固定不可改变。

使用方法:

#define identifier value

具体示例:

#include <iostream>
using namespace std;

#define LENGTH 10   
#define WIDTH  5
 
int main()
{
   int area;  
   area = LENGTH * WIDTH;
   cout << area<<endl;
   return 0;
}

当上面的代码被编译和执行时,它会输出一个固定值50。

同时,#define属于一种宏定义,也就是说它所定义的变量不论在本程序本次运行的哪个位置,只要使用了这个变量,它就是被定义的值。想要对其进行修改,必须结束程序后在程序中进行改变。

const 关键字

相对于#define的定义,const就相对灵活,它可以定义在任何位置,但是在使用时,需要给该常量一个明确的数据类型。

使用方法:

const type variable = value;

实际样例:

const int a=100;

在上述样例中,只要程序还在继续运行,那变量a的值在该语句生效的作用域内就将一直为100不再改变。

作用域

变量和常量讲完了,咱们还需要考虑变量和常量的作用域。故名思意,作用域就是这个变量和常量可以展现其正常功能的作用范围。

局部变量

倘若你在主函数中定义了一个值为10的变量a,但在F函数中也存在一个变量a,此时F函数中的a便和主函数变量a的值不互通。之所以出现这样的状况,便是两个变量a之间的作用域不同。主函数中的变量a,他的作用范围只在主函数运行范围内,而F函数中的变量a只在该函数的运行过程中存在,对于主函数并没有影响。这种变量便是所说的局部变量,只能够在某个范围内生效。

全局变量

但是,如果你在所有函数外(包括主函数)定义了一个变量b,此时只要你在主函数里给b进行了赋值,那在其他函数中只要你调用了变量b,那么只要你没有在其他函数中重新声明一个局部变量b,那么这个变量b都将是主函数中富裕的那个值。而这个变量便是全局变量,它可以在全部程序中生效,但是它可以被局部变量在局部范围内覆盖。

基础逻辑

在编写程序的时候我们通常要以一定的逻辑进行编写,而最常用的就是选择循环

选择逻辑

选择逻辑也被称为判断逻辑,使用这个的时候你会进行一个判断,如果某件事情是对的就进行步骤一,是错的就行步骤二。如下图
在这里插入图片描述
这是标准的判断形式,通常这个结构在程序中使用if-else来实现。
除了这种还有几种经常会使用的语句。

语句描述
if一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
if-else一个 if 语句后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
if-else if-else可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
switch-case一个 switch 语句允许测试一个变量等于多个值时的情况。

if-else

上面表格中的前三种语句都可以看成是if-else类型。

第一种,便是仅进行一次判断,如果判断不为真便不在进行考虑。如:

if (a>b){
	cout<<"a>b"endl;
}

第二种,则是在判断后就分成两种结果进行执行。如:

if (a>b){
	cout<<"a>b"<<endl;
} else{
	cout<<"a<=b"<<endl;
}

第三种则是在一个判断会出现三种及以上结果时使用。如:

if (a>b){
	cout<<"a>b"<<endl;
} else if(a==b){
	cout<<"a=b"<<endl;
}else{
	cout<<"a<b"<<endl;
}

switch-case

这个分支语句通常用于多种判断结果进行使用,case可以讲多种情况进行一一列举,而default可以代替剩下所有的情况。如:

switch(a){
	case 1:
			b=1;
			break;
	case 2:
			b=2;
			break;
	case 3:
			b=3;
			break;
	default:
			b=4;
			break;
}

循环逻辑

除了选择逻辑还有之中经常使用的逻辑,就是循环逻辑。
有的时候,可能需要多次执行同一块代码。而一般情况下,程序是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。如果把每一次过程都写出那么程序将会相当繁杂。因此需要用循环语句来精简这次额内容。
在这里插入图片描述
常见的循环语句

循环语句描述
while循环当给定条件为真时,重复语句或语句组。它会在执行循环主体之前判断条件是否为真。
for循环多次执行某一语句直到达成某一条件
do…while 循环先执行一次循环体,再进行判断,与while类似

相对来说,三种循环中for与while是经常使用的,第三种的使用已经越来越少。同时这几种循环的使用也是可以相互嵌套,层层相扣的。

循环控制语句

对于循环来说,有时会出现一些特殊情况,比如打断或者跳过某一循环。这个时候就需要一些语句去控制循环的进行。

语句描述
break中止循环,让程序则直接进入循环后的语句
continue跳出本次循环,但依旧在循环中继续执行

这两种语句是经常使用的控制语句,除此之外,还有一种goto语句,可以将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句,容易引起程序产生冲突。同时这几种语句不仅能在循环语句中使用,也可以在程序中的其他的方式使用。

while

该语句会先进行一次判断,如果判断结果为真就执行循环体,示例如下:

int a=0;
while(a<10){
	cour<<a<<endl;
	a++;
}

在这个代码里,将会输出从0到9一共十个数,但是仅仅写了一个输出代码,这便是循环体的应用。

for循环

相对于while循环,for循环需要三个参数来进行循环,示例如下:

for(int i=o;i<10;i++){
	cout<<i<<endl;
}

这个程序与上面while循环的效果一样,但是其中的i变成了循环内置的函数,仅仅在循环中生效,循环结束了,这个变量也就消失了。

作业

1、有一个猴子摘了好多桃子,第一天吃了一半扔了一个,第二天又吃了一半扔了一个,第十天结束只剩下了一个,求他一开始摘了多少桃子。
2、给一个年份判断他是什么年,如:甲午年、乙未年
3、输入十个数将其进行从小到大排序
4、(扩展)输入n个数,将其从小到大进行排序
5、(思考)一个监狱里有n个囚牢,一天狱警买来m瓶酒,和罪犯玩了一个游戏,他喝第1瓶酒时,把1的倍数的牢房都打开,喝第二瓶酒时把2的倍数的牢房,开着的都关上,关着的都打开,喝第三瓶酒时把3的倍数的牢房,开着的都关上,关着的都打开,直到他喝完第m瓶,并关完房门,这是房门打开的罪犯便可以获得释放,请您写出算法,计算最后能有多少人被释放。不考虑狱警最多能喝多少酒,同时牢房里的罪犯也无法在游戏过程中逃脱。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值