回顾基础-北大基础算法笔记
2017-07-14 23:37:11
1.本书亮点:总结典型错误;必须一个字节都不差,程序才能算通过。这对于培养严谨、周密的程序设计作风极为有效,
学生必须考虑到每一个细节和特殊边界条件,而不是大体上正确就过。传统的人工评判是难以做到这一点的储空间的内容,最终得到问题的解答来解决实际问题。
3.一种计算机语言通过定义变量的方式给出申请内存的方式,并通过表达式和赋值语句给出了
对内存中的数据进行修改和运算的方法,通过分枝和循环语句提供不同方式安排语句序列的能
力。大部分计算机语言还提供了基础函数库完成一些常用的计算和数据处理的功能。
4.使用计算机程序解决实际问题,首先要能够将一个具体问题抽象成一个可计算的问题,
并找出可行的计算过程;其次是掌握一门程序设计语言,将设计的计算过程写成具体的代码
在机器上运行。
5.五个基本教学环节:
第一,让学生充分理解计算机程序在内存中的运行原理和过程。
在程序运行过程中任意时刻都清楚语句运行到哪里了,当前存储数据的内存区的内容是什
么。只有清楚这些,才能在程序调试过程中及时地找到出错位置,并修改错误,最终让程序
按照设计者的意图执行。
第二,以一门高级程序设计语言为例,让学生了解该设计语言使用
哪些语句定义变量,哪些语句修改变量,变量有哪些基本类型,每种类型的变量占多大的存
储空间,不同类型的变量可以进行哪些运算,哪些语句用来控制语句序列的分支和循环,如
何用简单变量组合出复杂变量(例如数组或结构体),如何控制复杂的计算过程(例如通过
函数实现分而制之),有哪些库函数是可用的,等等。
第三,讲授一些常用的基本的计算过循环语句模拟一个手工计算的过程,进行不同数制转换时,可以选定一个共同得基数进行转换,字符串处理的问题应该多使用库函数,处理日期问题时可以用一个数组来存储每个月的天数,这样可以很方便地处理不规则的数据,等等。
第四,围绕一些具体的问题实例,让学生学会通过分析问题,抽象出数学模型,从而设计出计算过程和中间数据的存储方式,最终实现代码并调试成功。学生只有通过这样一个完整的程序设计过程的训练,才能充分理解写程序是要干什么,并且学会判断什么样的问题是适合用计算机来解决的。 第五,学生学习效果的检验方式直接决定了最终的教学效果。如果想让学生真正学会独立动手写出正确的程序,就必须采取上机考查的方式,要求学生针对实际问题写出最终可以正确运行并能解决问题的程序
6.如果不涉及面向对象的部分,那么 C++语言和 C 语言的语法 90%以上是一样的,只不过略有扩充,用起来更为方便而已。
7.在语句执行过程中 ,语句按其出现的先后顺序被执行。分支语句可以根据不同的情况执行不同的语句组,而循环语句可以重复执行同一个语句组。当一个程序由很多语句组成时,可以将其中与某个功能相关个一组语句抽象出来定义函数,并用函数名来替代原来的多个语句,这样可以隐蔽程序中的一些细节,使程序逻辑更加简单。
8.在C/C++语言中变量名是满足如下规定的一个符号序列: 1) 由字母、数字或(和)下划线组成;2) 第一个符号为字母或下划线。需要指出的是,同一个字母的大写和小写是两个不同的符号。所以, team 和 TEAM
是两个不同的变量名。
9.变量必须先定义后使用。
10.小写字母的 Ascii 码是连续的 。
11.常量:直接给出数据值的,整数类型;浮点数类型;字符类型;字符串类型;#define——为需要访问的数据制定一个容易理解的名字/标识符。12.八进制常量以数字0开头,0123——>八进制的123;0987是不合法的常量,因为以0开头为八进制,而八进制中不能出现数字8和9;十六进制常量以“0x”开头,比如0x12就是十六进制的12,换算成十进制就是18 。0xfd0678、 0xff44f 都是合法的十六进制常量。 十六进制表示法中,用a代表10,b代表11,c代表12,d代表13,e代表14,f代表15.这几个字母大小写均可。由于 16 进制中的每一位正好对应于二进制的 4 位,因此,十六进制常量用起来十分方便,也非常有用。一些字符常量的写法比较特殊,比如单引号应写为 '\'' ,“\”应写为 '\\'。
12.将变量,常量用运算符连接在一起,就构成了表达式,实际上,单个的变量,常量也可以称为表达式。表达式的计算结果称为表达式的值。
1.5.1.3 自增自减运算符 -18页
13.scanf 语句中的“%c%d”说明待输入的数据有两项,第一项是一个字符,第二项是一个整
数。这两项之间可以用空格或换行进行分隔,也可以不分隔。
14.在 C/C++语言中,数组的“下标”是从 0 开始的。
15.没有标号的时候,break在嵌套循环中会跳出最近的循环,进入到包含这层循环的外层循环中,或者在单层循环中跳到循环外的下一条语句上。
16.j++;先本次循环在自增 。
++j;是自增在完成本次循环。
17.这就像时钟一样,第一层的循环看做时针,第二层循环看做分针,分针转一圈,时针才动一下,也就是说,第二层循环循环一次,第一层循环才执行了一下,总共要执行N下。
18跳出双重循环:https://wenku.baidu.com/view/0febf66859fafab069dc5022aaea998fcc2240aa.html
http://blog.csdn.net/u011475211/article/details/42041783
19.如果整型变量间进行数据运算,只要有一个变量是无符号的,结果就按无符号数据输出
20.如何跳出多重循环
bool flag=0;
for(int i=0;i<100;i++)//在最外层设置一个标记位,当内层跳出之前将该标记位更改,外层执行前先判断标记位,如果改变就跳出,可以完成多层同时break
{
for(int j=0;j<100;j++)
if(i*j>200)
{
flag=1;
break;
}
if(flag==1)
break;
}
21.
一般,除for外,while最好不要在头语句中定义变量。While定义语句是“重定义--消亡论”:在循环中定义的变量在每次循环里都要经历创建和撤消的过程。如下程序i变量定义域在块内,会多次输出2:
如果你一定要直接跳出多层循环的话,有一种方法,就是把多层循环放到一个单独的函数中,然后想要跳出去的时候,直接return就可以了。但是这样的话,可能需要你保留双层循环过程中的一些状态或者变量的值,以便接下来进一步的处理。
- 使用goto
- 设置标记,在进入循环之前检查标记
- 可以尝试在要跳出的地方使每个循环条件表达式都为false