200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > C语言程序设计笔记(浙江大学)

C语言程序设计笔记(浙江大学)

时间:2023-08-12 12:28:31

相关推荐

C语言程序设计笔记(浙江大学)

C语言程序设计笔记

写在前面week1程序设计与C语言计算机和编程语言C语言 week2计算变量表达式符号优先级赋值运算符利用DevC对程序进行调试递增递减运算符前缀与后缀 week4 进一步的判断与循环逻辑类型与运算逻辑运算优先级短路条件运算符逗号运算符 级联和嵌套的判断嵌套的if-elseelse的匹配 级联的if-else 多路分支循环的例子 week5 循环控制循环控制

写在前面

上课时记的笔记,没有参考价值,只记录对自己有用的东西。

week1程序设计与C语言

计算机和编程语言

辗转相除法:

寻找两个数之间的最大公约数

int u = 32;int v = 26;while (v != 0){int temp = u % v;u = v;v = temp;}printf("%d",u);

算法:

如果v等于0,计算结束,u就是最大公约数;如果v不等于0,那么计算u除以v的余数,让u等于v,而v等于那个余数;回到第一步。

枚举法

二分法

程序的执行

解释:

借助一个程序,那个程序能试图理解你的程序,然后借助你的要求执行(有一些特殊的计算能力,e.g.可以运行中修改源代码)编译:

借助一个程序,就像一个翻译,把你的程序翻译成计算机真正懂得语言——机器语言——写的程序,然后,这个机器语言系的程序就能直接执行(能够有确定的运算性能,同样的程序运行速度时固定的)

ps.任何一个语言既可以解释执行又可以编译执行

C语言一般是编译执行的。

C语言

现代的编程语言在语法上的差异很小 几乎都是C-like语言 语言的能力/适用领域主要是由

-库 传统决定的

Fortran语言是人类历史上第一个高级程序设计语言。

在高级语言当中,C语言显得是一种比较底层的语言。

week2计算

变量

赋值

a = b

在数学中表示一种关系,即a和b的值一样,是静态的;

在程序设计中,a = b表示要求计算机把b的值赋给a,是一种动作,是动态的。

C99标准允许在代码的任意位置定义变量。

直接写造程序里的常数,称为直接量,或者幻数(magic number)e.i.你不知道这个数代表的是什么

const是一个修饰符

表达式

算子(operand)也叫操作数,是指参与运算的值,这个值可能是个常数,也可能是个变量,也有可能是一个方法的返回值

符号优先级

p.s.

单目:只有一个算子

单目运算符的优先级是大于双目运算符的

1—>4

高–>低

p.s. 只有单目和赋值的结合关系是自右向左的

赋值运算符

赋值也属于运算符的范畴,但并不是所有的语言中的=都是运算符。

赋值时有结果的,e.g.a = 6, 结果就是a被赋予的值6。

避免嵌入式赋值e.g.

int c = 1 + (b = a);//先把a的值赋给b,再让c加上a的值int result 2;result = (result = result*2) *6*(result = 3 + result);

利用DevC对程序进行调试

调试之前需要再程序之中设置一个断点。

断点那一行代码之前的代码都会被执行,但是不包括断点那一行的代码

将鼠标停滞在变量上查看变量的值

递增递减运算符

++和- -:单目运算符,且算子必须是变量,即不能是常量。

前缀与后缀

前缀:先执行++/- -再使用变量。

后缀:先使用变量再执行++/- -。

p.s.不要组合增量运算符

week4 进一步的判断与循环

逻辑类型与运算

逻辑运算

优先级

短路

逻辑运算是自左向右进行的,如果左边的结果已经能够确定结果,就不会做右边的计算

对于&&, 左边是false时就不做右边了

对于||,左边是true就不做右边了

条件运算符

count = (count > 20) ? count -10 : count

条件运算符是自右向左结合

条件运算符的优先级高于赋值运算符,但是低于1其他运算符

不建议使用嵌套条件表达式

逗号运算符

主要在for中使用

级联和嵌套的判断

嵌套的if-else

else的匹配

else总是和最近的那个if匹配

缩进不能暗示else的匹配

e.g.

代码的目的是加入game over!=0,打印GAME OVER。

if (gameover == 0)if (player2move == 2)printf("Your turn\n");elseprintf("GAME OVER\n");

但该代码的else仍然与里面的if匹配,所以当game over != 0 不会打印出任何东西。

解决方案:加大括号

if (game over == 0){if(player2move == 2)printf("Your turn\n");}else printf("GAME OVER\n");

建议 在if或else后面总是用{},即使只有一条语句的时候

级联的if-else

if (exp1)st 1;else if (exp2)st 2;elsest3;

单一出口:程序中不会出现使用f变量的语句

int f;if ( x < 0) {f = -1;} else if (x == 0) {f = 0;} else {f = 2 * x;}printf("%d", f);

推荐写单一出口的代码

多路分支

case 只是说明switch内部位置的路标,在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,直到于道一个break,或者switch结束为止

循环的例子

x % n 的结果时[0, n-1]的一个整数

week5 循环控制

循环控制

素数 : 只能被1和自己整数的数,不包括1

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。