按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源。原课程链接如下:

https://www.icourse163.org/course/ZJU-9001

由于是大三抽空回头整理的,所以可能前五章会记的内容比较简略。此外,作为选学内容的A0:ACLLib的基本图形函数和链表两章也没有做。西电的考试是机试,理论上学到结构体就能够应付考试了,但为了以后的学习考虑建议全学。

其他各章节的链接如下:

C语言程序设计笔记(浙大翁恺版) 第一周:程序设计与C语言

C语言程序设计笔记(浙大翁恺版) 第二周:计算

C语言程序设计笔记(浙大翁恺版) 第三周:判断

C语言程序设计笔记(浙大翁恺版) 第四周:循环

C语言程序设计笔记(浙大翁恺版) 第五周:循环控制

C语言程序设计笔记(浙大翁恺版) 第六周:数据类型

C语言程序设计笔记(浙大翁恺版) 第七章:函数

C语言程序设计笔记(浙大翁恺版) 第八周:数组

C语言程序设计笔记(浙大翁恺版) 第九周:指针

C语言程序设计笔记(浙大翁恺版) 第十周:字符串

C语言程序设计笔记(浙大翁恺版) 第十一周:结构类型

C语言程序设计笔记(浙大翁恺版) 第十二周:程序结构

C语言程序设计笔记(浙大翁恺版) 第十三周:文件

其他各科笔记汇总

计算

变量

变量定义

变量是做什么的,如何定义一个变量

算找零

printf("100-23=%d\n", 100-23);

如何能在程序运行时输入那个数字23,然后计算输出结果?

// change.cint price = 0;printf("请输入金额(元):");
scanf("%d", &price);int change = 100 - price;printf("找您%d元。\n", change);

如何输入

输入也在终端窗口中

输入是以行为单位的,行的结束标志就是你按下了回车键。在你按下回车之前,你的程序不会读到任何东西

变量

int price = 0;这一行定义了一个变量。变量的名字是price,类型是int,初始值是0

变量是一个保存数据的地方,当我们需要在程序里保存数据时,比如上面的例子中要记录用户输入的价格,就需要一个变量来保存它。用一个变量保存了数据,它才能参加到后面的计算中,比如计算找零

变量定义

变量定义的一般形式就是:<类型名称> <变量名称>;。 如:int price;int amount;int price, amount;

变量的名字

变量需要一个名字,变量的名字是一种“标识符”,意思是它是用来识别这个和那个的不同的名字

标识符有标识符的构造规则。基本的原则是:标识符只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,C语言的关键字(有的地方叫它们保留字)不可以用做标识符

C语言的保留字

变量赋值与初始化

a=b表示把b的值赋给a,而不是它们相等

赋值和初始化

int price = 0;

price = 0是一个式子,这里的“=”是一个赋值运算符,表示将“=”右边的值赋给左边的变量

赋值

和数学不同,a=b在数学中表示关系,即ab的值一样;而在程序设计中,a=b表示要求计算机做一个动作:将b的值赋给a。关系是静态的,而动作是动态的。在数学中,a=bb=a是等价的,而在程序设计中,两者的意思完全相反

初始化

当赋值发生在定义变量的时候就是变量的初始化。虽然C语言并没有强制要求所有的变量都在定义的地方做初始化,但是所有的变量在第一次被使用(出现在赋值运算符的右边)之前应该被赋值一次

如果没有被初始化,原来内存里有什么内容就是什么

变量初始化

<类型名称> <变量名称> = <初始值>; 如:int price = 0;int amount = 100;

组合变量定义的时候,也可以在这个定义中单独给单个变量赋初值,如:int price = 0, amount = 100;

表达式

"="是赋值运算符,有运算符的式子就叫做表达式。 如:price = 0change = 100 - price;

变量类型

C是一种有类型的语言,所有的变量在使用之前必须定义或声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也不能改变变量的类型

int change = 100 - price;定义了第二个变量change并且做了计算,这种写法是C99的写法。ANSI C只能在代码开头的地方定义变量

程序输入

如何让程序读入用户输入的数字,scanf

scanf("%d", &price);要求scanf这个函数读入下一个整数,读到的结果赋值给变量price,小心price前面的&

如果输入的不是整数,无法从输入里读到任何数字就只能给一个默认值

常量 vs 变量

不变的量是常量,以及,我们要怎样输入两个变量的值

常量

固定不变的数,是常数。直接写在程序里,我们称作直接量(literal)。

更好的方式,是定义一个常量:const int AMOUNT = 100,这也是C99的写法

// change2.c#include <stdio.h>int main()
{const int AMOUNT = 100;int price = 0;printf("请输入金额(元):");scanf("%d", &price);int change = AMOUNT - price;printf("找您%d元。\n", change);return 0;
}

const

const是有一个修饰符,加在int的前面,用来给这个变量加上一个const(不变的)的属性。这个const的属性表示这个变量的值一旦初始化,就不能再修改了

如果你试图对常量做修改,把它放在赋值运算符的左边,就会被编译器发现,指出为一个错误

// plus.c#include <stdio.h>int main()
{int a;int b;printf("请输入两个整数:");scanf("%d %d", &a, &b);printf("%d + %d = %d\n", a, b, a + b);return 0;
}

浮点数

整数运算的结果只有整数部分,不然就要用浮点数

两个整数的运算的结果只能是整数,如10/3*3=>9。10和10.0在C中是完全不同的数,10.0是浮点数

浮点数

带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达整数(包含分数和无理数)的一种方式。另一种方式叫做定点数,不过在C语言中你不会遇到定点数。人们借助浮点数这个词来表达所有的带小数点的数

当浮点数和整数放到一起运算时,C会将整数转换成浮点数,然后进行浮点数的运算

double

inch是定义为int类型的变量,如果把int换成double,我们就把它改为double类型的浮点数变量了

double的意思是“双”,它本来是“双精度浮点数”的第一个单词,人们用来表示浮点数类型。除了double,还有float(意思就是浮点!)表示单精度浮点数

计算身高的程序

#include <stdio.h>int main()
{printf("请分别输入身高的英尺和英寸,""如输入\"5 7\"表示5英尺7英寸:");double foot;double inch;scanf("%lf %lf", &foot, &inch);printf("身高是%f米。\n", ((foot + inch / 12) * 0.3048));return 0;
}

数据类型

整数

  • int
  • printf("%d", ...)
  • scanf("%d", ...)

带小数点的数

  • double
  • printf("%f", ...)
  • scanf("%lf", ...)

表达式

运算符和算子,取余运算,程序就是数据加计算

表达式

一个表达式是一系列运算符和算子的组合,用来计算一个值

运算符

运算符(operator)是指进行运算的动作,比如加法运算符“+”,减法运算符“-”

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

计算时间差

输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也以几小时几分表示

如果直接分别减,会出现分钟借位的情况:1点40分和2点10分的差

int main()
{int hour1, minute1;int hour2, minute2;scanf("%d %d", &hour1, &minute1);scanf("%d %d", &hour2, &minute2);int t1 = hour1 * 60 + minute1;int t2 = hour2 * 60 + minute2;int t = t2-t1;printf("时间差是%d小时%d分。", t/60, t%60);return 0;
}

hour1 * 60 + minutes1 —> 转换为分钟为单位

t/60 —> 小时部分;t%60 —> 分钟

运算符优先级

优先级、结合关系、赋值运算符

求平均值

下一个程序,输入两个整数,输出它们的平均值

#include <stdio.h>int main()
{int a,b;scanf("%d %d", &a, &b);double c = (a+b)/2.0;printf("%d和%d的平均值=%f\n", a, b, c);return 0;
}

运算符优先级

单目运算符

只有一个算子的运算符:+、-

int a = 10;
int b = -20;
printf("%d", a * -b);
200

赋值运算符

赋值也是运算,也有结果

a=6的结果是a被赋予的值,也就是6

a=b=6 —> a=(b=6)

”嵌入式赋值“

结合关系

交换变量

如何交换两个变量的值,顺便看下Dev的调试功能

程序是按步执行的

程序表达的是顺序执行的动作,而不是关系

a=b; b=a;是依次执行的,结果使得ab都得到b原来的值

交换

int t = a;
a = b;
b = t;

设断点后调试运行停在该行,这行还没有执行

复合赋值和递增递减

这是两类有历史也有争议的运算符

复合赋值

5个运算符,+ - * / %,可以和赋值运算符”=“结合起来,形成复合赋值运算符:”+=“,-=*=/=%=

注意两个运算符中间不要有空格

total += 5;
total = total + 5;total += (sum+100)/2;
total = total + (sum+100)/2;total *= sum+12;
total = total * (sum+12);total /= 12+6;
total = total / (12+6);

递增递减运算符

++--是两个很特殊的运算符,它们是单目运算符,这个算子还必须是变量。这两个运算符分别叫做递增和递减运算符,他们的作用就是给这个变量+1或者-1

count++;
count += 1;
count = count +1;

前缀后缀

++--可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式

a++的值是a加1以前的值,而++a的值是加了1以后的值,无论哪个,a自己的值都加了1了

这两个运算符有其历史来源。可以单独使用,但是不要组合进表达式

C语言程序设计笔记(浙大翁恺版) 第二周:计算相关推荐

  1. 【C语言程序设计进阶-浙大翁恺】C语言笔记 文件

    [C语言程序设计进阶-浙大翁恺]C语言笔记 文件 文件 格式化输入输出 文件输入输出 二进制文件 位运算 按位运算 移位运算 位运算例子 位段 文件 格式化输入输出 %-nd:数字左对齐,且输出要占n ...

  2. C语言程序设计笔记(浙大翁恺版) 第九周:指针

    按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源.原课程链接如下: https://www.icourse163.org/course/ZJU-9001 由于是大三抽空回头整理的, ...

  3. C语言程序设计笔记(浙大翁恺版) 第三周:判断

    按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源.原课程链接如下: https://www.icourse163.org/course/ZJU-9001 由于是大三抽空回头整理的, ...

  4. C语言程序设计笔记(浙大翁恺版) 第八周:数组

    按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源.原课程链接如下: https://www.icourse163.org/course/ZJU-9001 由于是大三抽空回头整理的, ...

  5. C语言程序设计笔记(浙大翁恺版) 第七章:函数

    按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源.原课程链接如下: https://www.icourse163.org/course/ZJU-9001 由于是大三抽空回头整理的, ...

  6. C语言程序设计笔记(浙大翁恺版) 第五周:循环控制

    按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源.原课程链接如下: https://www.icourse163.org/course/ZJU-9001 由于是大三抽空回头整理的, ...

  7. C语言程序设计笔记(浙大翁恺版) 第十周:字符串

    按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源.原课程链接如下: https://www.icourse163.org/course/ZJU-9001 由于是大三抽空回头整理的, ...

  8. 翁凯c语言单词长度,中国大学MOOC-C程序设计(浙大翁恺)—— 单词长度

    题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这里的单词与语言无关,可以包括各种符号,比如"it's"算一个单词, ...

  9. C语言编程笔记——MOOC翁恺

    第一周:程序设计与C语言 1.编程:是告诉计算机去做什么,用编程语言写出来如何去解决问题,而不是去用编程语言和计算机交流,而是描述要求它如何做事情的过程和方法 2.解释和编译的区别: 解释:是用一种软 ...

最新文章

  1. leetcode 1584. 连接所有点的最小费用(并查集)
  2. 从有赞裁员,看SCRM的挑战与机遇
  3. Oracle 空间查询, 数据类型为 sdo_geometry
  4. 使用依赖注入的ASP.NET Core 2.0用户角色基础动态菜单管理
  5. Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员
  6. 【Linux 命令学习第一天
  7. Grafana 系统可视化监控
  8. IT项目经验和难点分享
  9. wordpress自定义打赏
  10. Java 电阻计算器(一)
  11. 倾斜摄影与三维实景建模技术设计书.PDF(文档可下载)
  12. android win8 磁贴效果第三方库,Win8巧用动态磁贴让浏览更轻松
  13. 双efi分区同时引导失败修复经验
  14. 【Python性能优化实例】计算 numpy 数组首尾为 0 的数量
  15. Spring入门-1-基本配置和IOC、DI
  16. 干货 | 播音主持必知的五十个知识
  17. 谷歌浏览器csdn图片无法显示
  18. scp拷贝多个小文件
  19. ILSSI|谁是实验设计(DOE)的先驱者?- 优思学院
  20. Linux CPU之mpstat

热门文章

  1. 我的python世界 豆瓣_python系列之(4)豆瓣图书《平凡的世界》书评及情感分析...
  2. [轻松学会shell编程]-3、grep、正则表达式、awk的详细用法、分析系统自带的两个文件(functions和network)
  3. Rust+官方APP使用教程
  4. msi笔记本u盘装linux,微星msiGT72S笔记本一键u盘装系统win10教程
  5. win10计算机不分区,win10系统自带无损分区且数据不丢失的处理方案
  6. 点击按钮弹出单选列表对话框和加载Webview
  7. 语音转文字软件哪个好,这三款值得收藏
  8. 解决node环境下SyntaxError: Cannot use import statement outside a module的问题
  9. 68个dlib的landmarks
  10. 【C++】1、C++ 11新特性