郝斌c语言详细笔记附源代码Word文件下载.doc
《郝斌c语言详细笔记附源代码Word文件下载.doc》由会员分享,可在线阅读,更多相关《郝斌c语言详细笔记附源代码Word文件下载.doc(125页珍藏版)》请在冰豆网上搜索。
开发周期长:
c语言是面向过程的语言,面向过程的语言的特点就是在开发大项目的时候,很容易崩溃,好比盖大楼,C语言还要造大量的砖块、钢筋等结构原材料,而C++C#JAVA则进行了一定的继承封装等操作,相当于原材料直接给你,你只需要用它盖楼即可。
现在市场上的语言分三块
C/c++:
单纯的学习c是什么都做不了的。
Java
C#
可移植性不强:
这是针对java来说的,因为java的可移植性太强了,所以就感觉说c的可移植性不强。
金山公司最主要是靠wps办公软件来发展的。
Wps是c语言开发的,其安装包比Office少了10多倍。
三大操作系统:
windows,unix,linux
Windows内核是c语言写的,而外壳是c++写的。
Java永远不可能写操作系统。
因为java运行速度太慢了。
而linux和unix都是纯c写的。
操作系统控制了硬件,如果说操作系统的运行速度慢,那么当我们在运行软件的时候,运行速度会更慢。
为什么使用c语言写操作系统呢,首先是因为c的运行速度快,然后是因为c可以直接控制硬件,而其他语言不可以。
没有指针的语言是不能直接访问硬件的。
C语言的应用领域:
驱动一般是用c和汇编来写的。
数据库一般是用c和c++来写的
C语言的重要性:
虽然应用场合相对较窄,但贴近系统内核,较底层。
病毒最基本的是要感染系统,
数据结构,c,c++这三门语言是必须要学习的。
牛人牛语:
怎样学习c语言
要将编程当成一项事业来经营,而不是糊口的工具。
多思考,多上机。
不能光看,光听,而要排错,调试。
在犯错误中成长。
参考资料
王爽写的c++也很不错
学习的目标:
掌握简单的算法--解决问题的方法和步骤。
熟悉语法规则。
能看懂程序并调试程序。
C语言的关键字:
C语言程序的格式:
一定要养成良好的习惯:
代码规范
边写边保存,括号成对出现,应用空格
VC6.0软件操作:
新建保存关闭(关闭空间)
.cpp是原始文件,可单独拷贝到其它电脑。
第二讲:
(14)c语言编程必备知识
1.Cpu,内存条,硬盘,显卡,主板,显示器之间关系。
Cpu不能直接处理硬盘上的数据,必须要先调入内存
2.Helloword程序是如何运行起来的。
3.什么是数据类型
数据类型--数据的分类,对编程而言,首要考虑问题是数据的输入和存储。
可以分为
A:
基本数据类型:
整型
整型int --4字节一字节byte=8位bit
短整型shortint -2
长整型longint -8
浮点型
单精度浮点数float:
存储范围小 -4
双精度浮点数double:
存储范围大 -8
Float和Double都不能保证将小数完全准确保存。
字符char:
c语言中是没有字符串string -1
(区别于JAVA、C#中有string且C#中char为2字节)
B:
复合类型:
就是把基本类型拼凑在一起
结构体
枚举---实用
共用体—基本淘汰
4.什么是变量
变量的本质是内存中一段存储空间。
IntI;
i=5;
I是变量,程序向系统申请了一个内存单元,在程序运行中,i的值可以改变,但程序结束后,其所占的空间不是释放,而是被系统收回权限。
5Cpu,内存条,vc++6.0,操作系统之间的关系。
6变量为什么必须初始(即赋值)
软件运行与内存关系(垃圾数据-)
1.软件在运行前需要向操作系统申请存储空间,在内存空间足够空闲时,操作系统将分配一段内存空间并将该外存中软件拷贝一份存入该内存空间中,并启动该软件运行。
2.在软件运行期间,该软件所占内存空间不再分配给其他软件。
3.当该软件运行完毕后,操作系统将回收该内存空间(注意:
操作系统并不清空该内存空间遗留下来的数据),以便再次分配给其他软件使用。
《操作系统》一门课中系统分配表中会讲到,用1标记表示内在是被占用的,用0标记表示是空闲的。
综上所述,一个软件所分配到的空间中极可能存在着以前其他软件使用过后的残留数据,这些数据被称之为垃圾数据,所以通常情况下我们为一个变量,为一个数组,分配好存储空间之前都要对该内存空间初始化。
7如何定义变量
数据类型变量名称=赋予的值;
等价于
数据类型变量名;
变量名=要赋予的值;
举例子:
inti=3;
等价于inti;
i=3;
Inti,j;
等价于inti;
intj;
Inti,j=3等价于inti;
intj;
j=3;
IntI=3,j=5;
I=3;
j=5;
8什么是进制–逢几进一
我们规定八进制前面加0(零),十六进制前面加0x。
常用计数制对照表:
Printf的基本用法:
9常量在c中是如何表示的
当个字符使用单引号括起来,多个字符串使用双引号括起来(指针、数组)。
在c中,默认是double类型的。
在后面加F表示当做float来处理,否则会有警告提示--丢失部分字节。
10常量以什么样的二进制代码存储在计算机中?
编码:
整数是以补码的形式转换为二进制代码存储在计算机
浮点数是以ieee754标准转换为二进制代码存储
字符本质实际是与整数的存储方式相同,ASII码标准。
第三次课:
代码规范化
·
可以参考林锐《高质量c/c++编程》
代码的规范化非常的重要,是学习一门编程语言的基础,代码可以允许错误,但不能不规范。
例如:
成对敲括号{}()
加空格于运算符和数字之间I=1+2;
加缩进分清上下级地位。
换行--进行功能区域分隔or{}括号单独成一行。
代码规范化的好处
1:
整齐,别人和自己都容易看懂。
2:
代码规范了,代码不容易出错。
3:
一般的程序可以分为三块:
a:
定义变量
b:
对变量进行操作
c:
输出值
什么是字节
存储数据的单位,并且是硬件所能访问的最小单位。
内存中存储的最小单位是位bit(0或1),但是硬件控制的时候不能精确到位,只能精确到字节(8位),是通过地址总线来控制的,而精确到位是通过软件来控制的,叫做位运算符来精确到位的。
1字节=8位1K=1024字节
1M=1024K1G=1024M1T=1024G
2G的内存条的总空间:
2*1024*1024*1024*8=4*1032
不同类型数据之间相互赋值的问题
不同数据类型之间最好不要相互转换。
如果需要明白这个知识点,那么需要明白补码。
什么是ASCII码
以char定义变量的时候,只能使用单引号括起一个字符才是正确的。
在上图中注释的最后一样是重复定义了ch的值,是错误的,而下面的ch=‘c’是指把c赋值给ch,是正确的。
上图中输出的值是98(将字符以整数%d的形式输出)
Ascll码规定了ch是以哪个值去保存,ascii码不是一个值,而是一种规定,规定了不同的字符是以哪个整数值去表示。
其它规定还有GB2312UTF-8等。
字符本质上与整数的存储方式相同【字符的存储】
基本的输入和输出函数的用法:
第三次课
Printf()
将变量的内容输出到显示器上。
四种用法
输什么是输出控制符,什么是非输出控制符
输出控制符包含如下:
Printf为什么需要输出控制符:
01组成的代码可以表示数据也可以表示指令。
必须要有输出控制符告诉他怎么去解读。
如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的格式输出就会有不同的输出结果,所以必须要有输出控制符。
在上图中,intx=47,如果前面加0(零)048表示的是八进制,如果前面加0x(零x)0X47则表示的是十六进制,而在输出的时候,则是o(字母o)表示八进制,ox(字母o,x)表示十六进制。
非输出控制符:
非输出控制符在输出的时候会原样输出。
Scanf()通过键盘将数据输入到变量中
有两种用法:
示例:
非输入控制符:
在输入的时候也会原样输入。
但是强烈建议:
在使用scanf的时候,不使用非输入控制符。
给多个变量赋值:
需要记住,非控制符需要原样输入。
如何使用scanf编写出高质量代码
运算符:
算术运算符:
加(+),减(—)乘(*)除(/)取余(%)
关系运算符:
>
>
=,<
<
=,!
=,
逻辑运算符:
!
(非),&
&
(且),||(或)
赋值运算符:
=,+=,*=,/=
a+=3是等价于a=a+3,a/=3等价于a=a/3
其优先级别是算术>
关系>
逻辑>
赋值。
取余的结果的正负只和被除数有关。
第四节
流程控制(第一个重点):
1.什么是流程控制
程序代码执行的顺序。
2.流程控制的分类
顺序执行
选择执行
定义:
某些代码可能执行,可能不执行,有选择的执行某些代码。
分类:
if
If最简单的用法:
如果想控制多个语句的执行或者不执行,那么需要使用{}括起来。
3.if…else…的用法:
if…elseif…else的用法:
C错误的if…elseif…else语句:
在上图中,当执行到哈哈那句时,下面的else将会被算作另外一个语句来执行,而在我们的c语言中,没有以else开头的语句。
所以会出错。
If实例:
If常见的问题:
变量的替换:
求三个数字的大小:
C语言常见误区:
纸老虎
素数:
只能被1和自己整除的数,如1,5,9等。
回文数:
正着写和倒着写一样的数。
如1221,121,等
编程实现求一个十进制数字的二进制形式:
求一个数字的每位是奇数的数字取出来组合形成的新数字。
求一个数字到过来的数字。
如果不懂,那么就看答案。
看懂答案在敲。
没错误了,在尝试改。
如何看懂一个程序:
1.流程:
2.每个语句的功能:
3.试数:
对一些小算法的程序:
1.尝试自己编程结局。
2.