c语言编程软件程

学习较底层编程:动手写一个C语言编译器 - 博客 - 伯乐在线
& 学习较底层编程:动手写一个C语言编译器
动手编写一个编译器,学习一下较为底层的编程方式,是一种学习计算机到底是如何工作的非常有效方法。
编译器通常被看作是十分复杂的工程。事实上,编写一个产品级的编译器也确实是一个庞大的任务。但是写一个小巧可用的编译器却不是这么困难。
秘诀就是首先去找到一个最小的可用工程,然后把你想要的特性添加进去。这个方法也是Abdulaziz Ghuloum在他那篇著名的论文里所提到的办法。不过这个办法确实可行。你只需要按照这篇论文中的第一步来操作,就可以得到一个真正可用的编译器!当然,它只能编译程序语言中的非常小的子集,但是它确实是一个真实可用的编译器。你可以随意的扩展这个编译器,然后从中学到更多更深的知识。
受到这篇文章的鼓舞,我就写了一个C编译器。从某种意义上来说这比写一个scheme的编译器要困难一些(因为你必须去解析C那复杂的语法),但是在某些方面又很便利(你不需要去处理运行时类型)。要写这样一个编译器,你只需要从你那个可用的最小的编译器开始。
对于我写的编译器来说,我把它叫 ,我选了这段代码来作为我需要运行的第一个程序:
int main() {
没有变量,没有函数调用,没有额外的依赖,甚至连if语句,循环语句都没有,一切看起来是那么简单。
我们首先需要解析这段代码。我们将使用 Flex 和 Bison 来做到这点。这里有怎么用的可以参考,幸好我们的语法是如此简单,下面就是词法分析器:
&{& { return '{'; }
&}& { return '}'; }
&(& { return '('; }
&)& { return ')'; }
&;& { return ';'; }
[0-9]+ { return NUMBER; }
&return& { return RETURN; }
&int& { return TYPE; }
&main& { return IDENTIFIER; }
这里是语法分析器:
TYPE IDENTIFIER '(' ')' '{' expression '}'
expression:
RETURN NUMBER ';'
最终,我们需要生成一些汇编代码。我们将使用32位的X86汇编,因为它非常的通用而且可以很容易的运行在你的机器上。这里有。
下面就是我们需要生成的汇编代码:
.global _start # Tell the loader we want to start at _start.
$2,%ebx # The argument to our system call.
$1,%eax # The system call number of sys_exit is 1.
$0x80 # Send an interrupt
然后加上上面的,把写进一个文件里。恭喜你!你已经是一个编译器的编写者了!
Babyc 就是这样诞生的,你可以在这里看到。
当然,如果汇编代码没办法运行也是枉然。让我们来用编译器生成我们所希望的真正的汇编代码。
# Here's the file we want to compile.
$ cat return_two.c
#include &stdio.h&
int main() {
# Run the compiler with this file.
$ ./babyc return_two.c
Written out.s.
# Check the output looks sensible.
$ cat out.s
.global _start
非常棒!接着让我们来真正的运行一下编译之后代码来确保它能得到我们所想的结果。
# Assemble the file. We explicitly assemble as 32-bit
# to avoid confusion on x86_64 machines.
$ as out.s -o out.o --32
# Link the file, again specifying 32-bit.
$ ld -m elf_i386 -s -o out out.o
# What was the return code?
2 # Woohoo!
我们踏出了第一步,接下去怎么做就全看你了。你可以按照那篇文章所指导的全部做一遍,然后制作一个更加复杂的编译器。你需要去写一个更加精巧的语法树来生成汇编代码。接下去的几步分别是:(1)允许返回任意的值(比如,return 3; );(2)添加对“非”的支持(比如,return ~1; )。每一个额外的特性都可以教你关于C语言的更多知识,编译器到底是怎么执行的,以及世界上其他编写编译器的人是如何想的。
这是构建 babyc 的方法。Babyc 现在已经拥有了if语句,循环,变量以及最基础的数据结构。欢迎你来,但是我希望看完我的文章你能够自己动手写一个。
不要害怕底层的一些事情。这是一个非常奇妙的世界。
关于作者:
可能感兴趣的话题
貌似我们课程设计做过这东西,词法分析简单,语法分析器就做了好久,生成汇编都没做
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线博客团队正试图以我们微薄的力量,把优秀的原创/译文分享给读者,做一个小而精的精选博客,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2016 伯乐在线
赞助云主机相关软件 831.5M/中文/ 312M/中文/ 501KB/中文/ 315KB/中文/ 16.8M/中文/ 534.6M/中文/ 13.6M/中文/ 29.7M/中文/顶好评:50%踩坏评:50请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
初学者学习C程序设计的理想教材,可作为高等学校各专业的正式教材,也是一本自学的好教材。由谭浩强教授著、清华大学出版社出版的《C程序设计》是一本公认的学习程序设计的经典教材。共分4个部分,第1部分是《C程序设计(第四版)》一书的习题和参考解答,包括了该书各章的全部习题,对全部编程习题都给出了参考解答,共计132个程序;第2部分是深入学习C程序设计,包括预处理指令、位运算和C程序案例;第3部分是上机指南,详细介绍了Visual C++ 6.0集成环境下编辑、编译、调试和运行程序的方法;第4部分是上机实验指导,包括程序的调试与测试、实验的目的与要求,并提供了本课程12个实验。目录: 第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务14习题15第2章算法――程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用NS流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计――顺序程序设计373.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句――赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题82第4章选择结构程序设计854.1选择结构和条件判断854.2用if语句实现选择结构874.2.1用if语句处理选择结构举例874.2.2if语句的一般形式 894.3关系运算符和关系表达式914.3.1关系运算符及其优先次序914.3.2关系表达式924.4逻辑运算符和逻辑表达式924.4.1逻辑运算符及其优先次序934.4.2逻辑表达式944.4.3逻辑型变量964.5条件运算符和条件表达式974.6选择结构的嵌套994.7用switch语句实现多分支选择结构1024.8选择结构程序综合举例105习题111第5章循环结构程序设计1145.1为什么需要循环控制1145.2用while语句实现循环1155.3用do…while语句实现循环1175.4用for 语句实现循环1205.5循环的嵌套1245.6几种循环的比较1255.7改变循环执行的状态1255.7.1用break语句提前终止循环1265.7.2用continue语句提前结束本次循环1275.7.3break语句和continue语句的区别1285.8循环程序举例131习题140第6章利用数组处理批量数据1426.1怎样定义和引用一维数组1426.1.1怎样定义一维数组1436.1.2怎样引用一维数组元素1446.1.3一维数组的初始化1456.1.4一维数组程序举例1466.2怎样定义和引用二维数组1486.2.1怎样定义二维数组1496.2.2怎样引用二维数组的元素1506.2.3二维数组的初始化1516.2.4二维数组程序举例1526.3字符数组1546.3.1怎样定义字符数组1546.3.2字符数组的初始化1556.3.3怎样引用字符数组中的元素1556.3.4字符串和字符串结束标志1566.3.5字符数组的输入输出1596.3.6使用字符串处理函数1616.3.7字符数组应用举例165习题168第7章用函数实现模块化程序设计1707.1为什么要用函数1707.2怎样定义函数1727.2.1为什么要定义函数1727.2.2定义函数的方法1737.3调用函数1747.3.1函数调用的形式1747.3.2函数调用时的数据传递1757.3.3函数调用的过程1777.3.4函数的返回值1787.4对被调用函数的声明和函数原型1797.5函数的嵌套调用1827.6函数的递归调用1847.7数组作为函数参数1927.7.1数组元素作函数实参1937.7.2数组名作函数参数1947.7.3多维数组名作函数参数1977.8局部变量和全局变量1997.8.1局部变量1997.8.2全局变量2007.9变量的存储方式和生存期2047.9.1动态存储方式与静态存储方式2047.9.2局部变量的存储类别2057.9.3全局变量的存储类别2087.9.4存储类别小结2127.10关于变量的声明和定义2147.11内部函数和外部函数2157.11.1内部函数2157.11.2外部函数215习题218第8章善于利用指针2208.1指针是什么2208.2指针变量2228.2.1使用指针变量的例子2228.2.2怎样定义指针变量2238.2.3怎样引用指针变量2248.2.4指针变量作为函数参数2268.3通过指针引用数组2308.3.1数组元素的指针2308.3.2在引用数组元素时指针的运算2318.3.3通过指针引用数组元素2338.3.4用数组名作函数参数2378.3.5通过指针引用多维数组2458.4通过指针引用字符串2558.4.1字符串的引用方式 2558.4.2字符指针作函数参数2598.4.3使用字符指针变量和字符数组的比较2638.5指向函数的指针2668.5.1什么是函数指针2668.5.2用函数指针变量调用函数2668.5.3怎样定义和使用指向函数的指针变量2688.5.4用指向函数的指针作函数参数2708.6返回指针值的函数2748.7指针数组和多重指针2778.7.1什么是指针数组 2778.7.2指向指针数据的指针2808.7.3指针数组作main函数的形参2828.8动态内存分配与指向它的指针变量2858.8.1什么是内存的动态分配2858.8.2怎样建立内存的动态分配2858.8.3void指针类型 2878.9有关指针的小结288习题291第9章用户自己建立数据类型2939.1定义和使用结构体变量2939.1.1自己建立结构体类型2939.1.2定义结构体类型变量 2959.1.3结构体变量的初始化和引用2979.2使用结构体数组3009.2.1定义结构体数组3009.2.2结构体数组的应用举例3019.3结构体指针3039.3.1指向结构体变量的指针3039.3.2指向结构体数组的指针3049.3.3用结构体变量和结构体变量的指针作函数参数3069.4用指针处理链表3099.4.1什么是链表 3099.4.2建立简单的静态链表3109.4.3建立动态链表3119.4.4输出链表3159.5共用体类型3179.5.1什么是共用体类型3179.5.2引用共用体变量的方式3189.5.3共用体类型数据的特点3199.6使用枚举类型3239.7用typedef声明新类型名326习题330第10章对文件的输入输出33110.1C文件的有关基本知识33110.1.1什么是文件33110.1.2文件名33210.1.3文件的分类33210.1.4文件缓冲区33310.1.5文件类型指针33310.2打开与关闭文件33510.2.1用fopen函数打开数据文件33510.2.2用fclose函数关闭数据文件33710.3顺序读写数据文件33810.3.1怎样向文件读写字符33810.3.2怎样向文件读写一个字符串34110.3.3用格式化的方式读写文件34410.3.4用二进制方式向文件读写一组数据34510.4随机读写数据文件34910.4.1文件位置标记及其定位34910.4.2随机读写 35210.5文件读写的出错检测353习题354第11章常见错误分析355附录370附录A在Visual C++ 6.0环境下运行C程序的方法370附录B常用字符与ASCII代码对照表377附录CC语言中的关键字378附录D运算符和结合性378附录EC语言常用语法提要380附录FC库函数384参考文献390第4章选择结构程序设计854.1选择结构和条件判断854.2用if语句实现选择结构874.2.1用if语句处理选择结构举例874.2.2if语句的一般形式 894.3关系运算符和关系表达式914.3.1关系运算符及其优先次序914.3.2关系表达式924.4逻辑运算符和逻辑表达式924.4.1逻辑运算符及其优先次序934.4.2逻辑表达式944.4.3逻辑型变量964.5条件运算符和条件表达式974.6选择结构的嵌套1004.7用switch语句实现多分支选择结构1024.8选择结构程序综合举例106习题112第5章循环结构程序设计1155.1为什么需要循环控制1155.2用while语句实现循环1165.3用do…while语句实现循环1185.4用for 语句实现循环1215.5循环的嵌套1255.6几种循环的比较1265.7改变循环执行的状态1265.7.1用break语句提前终止循环1275.7.2用continue语句提前结束本次循环1285.7.3break语句和continue语句的区别1295.8循环程序举例132习题141第6章利用数组处理批量数据1436.1怎样定义和引用一维数组1436.1.1怎样定义一维数组1446.1.2怎样引用一维数组元素1456.1.3一维数组的初始化1466.1.4一维数组程序举例1476.2怎样定义和引用二维数组1496.2.1怎样定义二维数组1506.2.2怎样引用二维数组的元素1516.2.3二维数组的初始化1526.2.4二维数组程序举例1536.3字符数组1556.3.1怎样定义字符数组1556.3.2字符数组的初始化1566.3.3怎样引用字符数组中的元素1566.3.4字符串和字符串结束标志1576.3.5字符数组的输入输出1606.3.6使用字符串处理函数1626.3.7字符数组应用举例166习题169第7章用函数实现模块化程序设计1717.1为什么要用函数1717.2怎样定义函数1737.2.1为什么要定义函数1737.2.2定义函数的方法1747.3调用函数1757.3.1函数调用的形式1757.3.2函数调用时的数据传递1767.3.3函数调用的过程1787.3.4函数的返回值1797.4对被调用函数的声明和函数原型1817.5函数的嵌套调用1837.6函数的递归调用1857.7数组作为函数参数1937.7.1数组元素作函数实参1937.7.2数组名作函数参数1957.7.3多维数组名作函数参数1987.8局部变量和全局变量2007.8.1局部变量2007.8.2全局变量2017.9变量的存储方式和生存期2057.9.1动态存储方式与静态存储方式2057.9.2局部变量的存储类别2067.9.3全局变量的存储类别2097.9.4存储类别小结2137.10关于变量的声明和定义2157.11内部函数和外部函数2167.11.1内部函数2167.11.2外部函数216习题219第8章善于利用指针2218.1指针是什么2218.2指针变量2238.2.1使用指针变量的例子2238.2.2怎样定义指针变量2248.2.3怎样引用指针变量2258.2.4指针变量作为函数参数2278.3通过指针引用数组2328.3.1数组元素的指针2328.3.2在引用数组元素时指针的运算2338.3.3通过指针引用数组元素2348.3.4用数组名作函数参数2398.3.5通过指针引用多维数组2478.4通过指针引用字符串2578.4.1字符串的引用方式 2578.4.2字符指针作函数参数2618.4.3使用字符指针变量和字符数组的比较2658.5指向函数的指针2688.5.1什么是函数指针2688.5.2用函数指针变量调用函数2688.5.3怎样定义和使用指向函数的指针变量2708.5.4用指向函数的指针作函数参数2728.6返回指针值的函数2768.7指针数组和多重指针2798.7.1什么是指针数组 2798.7.2指向指针数据的指针2828.7.3指针数组作main函数的形参2848.8动态内存分配与指向它的指针变量2878.8.1什么是内存的动态分配2878.8.2怎样建立内存的动态分配2878.8.3void指针类型 2898.9有关指针的小结290习题293第9章用户自己建立数据类型2959.1定义和使用结构体变量2959.1.1自己建立结构体类型2959.1.2定义结构体类型变量 2979.1.3结构体变量的初始化和引用2999.2使用结构体数组3029.2.1定义结构体数组3029.2.2结构体数组的应用举例3049.3结构体指针3059.3.1指向结构体变量的指针3059.3.2指向结构体数组的指针3069.3.3用结构体变量和结构体变量的指针作函数参数3089.4用指针处理链表3119.4.1什么是链表 3119.4.2建立简单的静态链表3129.4.3建立动态链表3139.4.4输出链表3179.5共用体类型3199.5.1什么是共用体类型3199.5.2引用共用体变量的方式3209.5.3共用体类型数据的特点3219.6使用枚举类型3259.7用typedef声明新类型名328习题332第10章对文件的输入输出33310.1C文件的有关基本知识33310.1.1什么是文件33310.1.2文件名33410.1.3文件的分类33410.1.4文件缓冲区33510.1.5文件类型指针33510.2打开与关闭文件33710.2.1用fopen函数打开数据文件33710.2.2用fclose函数关闭数据文件33910.3顺序读写数据文件34010.3.1怎样向文件读写字符34010.3.2怎样向文件读写一个字符串34310.3.3用格式化的方式读写文件34610.3.4用二进制方式向文件读写一组数据34710.4随机读写数据文件35110.4.1文件位置标记及其定位35110.4.2随机读写 35410.5文件读写的出错检测355习题356
C程序设计(第四版)
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。扫码下载官方App
程序设计入门—C语言
所属微专业:
程序设计是一门基础课程。对于计算机相关专业而言,程序设计是专业基础知识,是进一步学习其他专业知识的第一步阶梯;对于非计算机专业而言,程序设计的学习有助于理解计算机的能力所在,理解哪些是计算机擅长解决的问题,怎样的方式方法是计算机擅长的手段,从而能更好地利用计算机来解决本专业领域内的问题。C语言是古老而长青的编程语言,它具备了现代程序设计的基础要求,它的语法是很多其他编程语言的基础,在系统程序、嵌入式系统等领域依然是无可替代的编程语言,在各类编程语言排行榜上常年占据前两名的位置。对于非计算机专业的学生,学习本课程的主要目的是掌握程序设计的基本方法,C语言是教学媒介。但是对于计算机专业的学生,本课程是向后续的计算机组成、操作系统、编译原理、体系结构等课程前进的基石。本课程是以C语言来讲授程序设计的入门知识,而非具体教授C语言,关于C语言的全面知识,还需要学习本课程的后续课程——“C语言程序设计进阶”。程序设计是实践性很强的课程,该课程的学习有其自身的特点,听不会,也看不会,只能练会。你必须通过大量的编程训练,在实践中掌握编程知识,培养编程能力,并逐步理解和掌握程序设计的思想和方法。在这里所提供的,只是基础的知识讲解,要想学会编程,还需要更多时间的投入和努力。为了学习编程,你需要有一台计算机,安装必要的编程软件。无论是MS Windows、Mac OS X还是Linux,都有适合C语言编程的软件。本课程的后续课程是《C语言程序设计进阶》
证书要求 本课程的成绩由三部分组成:编程题,占25%:每周有1至2道编程题,在题目公布开始2周内需要完成编程题。小测验,占25%:每两周左右有一次小测验,题型为选择题,每次有1周时间,在这7天内需要做测验,每次测验只能做一次。期末考试,占50%。题型为选择和填空题。获得综合评分60分的可以获得本课程的合格证书,获得85分的可以获得优秀证书。
预备知识 作为第一门编程课,本课程可以零基础学习。大学计算机(大学计算机基础、计算思维导论)等课程对于理解本课程的部分内容有帮助,但这些课程的学习不是必须的。
授课大纲 第一周:从做点计算开始1.1 计算机与编程语言计算机怎么做事情的,编程语言是什么,计算机的思维方式是怎样的,为什么是C;关于C语言和版本的极其简单的历史&。1.2 第一个程序C语言的编程软件选择太多,我们推荐Dev C++;如何在Dev C++中编辑、编译和运行程序;详解第一个程序:程序框架、printf、出错怎么办;做点计算:如何让程序输出算术结果1.3 数据是用变量来表示的变量定义:变量是做什么的,如何定义一个变量;变量赋值与:a=b表示把b的值赋给a,而不是它们相等;变量输入:如何让程序读入用户输入的数字&1.4 计算是由表达式来完成的表达式:运算符和算子,取余计算,程序就是数据加计算;浮点数:整数运算的结果只有整数部分,不然就要用浮点数;运算符优先级:优先级、结合关系、赋值运算符;复合赋值和递增递减第二周:做点决定2.1 做判断做判断:if语句根据条件决定做还是不做;判断的条件 关系运算,做比较的运算符; 否则的话:如果条件不成立呢?; 逻辑运算:对比较的结果进行与、或、非运算2.2 复杂的判断逻辑运算;嵌套的if-else:在if或else后面要执行的还是if语句,就成了嵌套; 级联的if-else if:像分段函数这样的程序就可以写成级联的if; if-else的常见错误:没有{}、多了;、=和==这些都是常见的错误&2.3 分支多路分支:switch-case语句&第三周:不断地重复3.1 重复做事情循环:有些事情就得用循环才能解决;while循环:就像if一样,条件满足就不断地做后面大括号里的句子;do-while循环:不管三七二十一,先做循环内的句子再判断条件3.2 for循环for循环:这是最古老的循环; 循环的计算和选择:如何计算循环的次数,如何选择不同的循环第四周:循环控制4.1 循环控制循环控制:如何用break和continue来控制循环 嵌套的循环:在循环里面还是循环; 从嵌套的循环中跳出:break只能跳出其所在的循环&4.2 循环计算猜数游戏;算平均数;整数求逆;前n项求和;整数分解;求最大公约数&第五周:经常做的事情可以摘出来5.1 初见函数函数的定义和调用从函数中返回&5.2 使用函数函数原型:用来告诉编译器这个函数长什么样儿参数传递:调用函数的时候,是用表达式的值来初始化函数的参数&5.3 本地变量本地变量:定义在函数内部的变量是本地变量,参数也是本地变量函数庶事:一些有关函数的细节问题,main()是什么&第六周:要记录很多数据5.1 数组5.1 初试数组数组的使用:如何定义和使用数组,数组的下标和下标的范围&5.2 数组运算数组的例子:统计个数 数组例子:素数二维数组第七周:计算机不只是做数学7.1 字符类型7.2 字符串处理函数 `
参考资料 何钦铭、颜晖,《C语言程序设计(第3版)》,高等教育出版社,2015年
所属微专业
所属系列课程
网易公司()旗下实用技能学习平台。与顶级机构、院校和优秀讲师合作,为您提供海量优质课程,以及创新的在线学习体验,帮助您获得全新的个人发展和能力提升。
关注我们:
& 网易公司 版权所有&&&&c语言程序设计 c编程教程 中文版 简体中文
c语言程序设计 c编程教程 中文版 简体中文
一本个人经典收藏的资料,无私提供给大家下载,希望大家多多支持 总共有1-12PDF 绝对完整 放心下载
序 言经过10余年的教学实践,层次教学已成为高等院校计算机基础教学的基本模式。教育部倡导的“计算机文件基础—计算机技术基础—计算机应用基础”3个层次,为高校实施计算机基础教学提供了一个科学的框架。根据我们的理解,三层次教学中的文化基础为“入门”课,用于引导学生认识计算机文化在信息社会中的地位作用;技术基础为“拓宽”课,用于从硬件和软件两个方面扩充学生的知识和技能;它们构成三层次教学的“基础与核心”。而应用基础层则是三层次教学的“归宿”,其目的在于结合专业的需要“深化”在某一方面(或领域)的计算机应用知识,加强学生解决本专业计算机应用的能力。本系列教材就是按照这样的思路编写的。第一批书目包括一、二层次的6本计算机公共课教材,即:《计算机文化引论》《C语言程序设计》《计算机软件环境与工具》《微机数据库应用》《微型计算机硬件组成》《计算机网络应用基础》以后将陆续编写出版第三层次的教材,例如《微机原理与应用》、《图形处理与CAD基础》、《面向对象程序设计》等,以满足不同专业的学生深入学习的需要。本系列教材具有下列特点:一、体现了全新的课程体系。考虑到软件技术的发展,本系列在《计算机文化引论》课之后,用程序设计、数据库和软件环境与工具等3本教材代替传统的一本教材—程序设计。又鉴于多媒体应用与网络应用在近10年来发展迅猛,本系列在首批书目中列入了《微型计算机硬件组成》与《计算机网络应用基础》两种教材,分别介绍这两个方面的知识。这一课程体系既在总体上满足教育部三层次教学的内容,也突出了计算机基础教学重在应用、立足于提高学生素质、帮助学生建立强烈的计算机文化意识,提高计算机文化素质的需要。二、按照知识单元安排每本教材的内容,自1994年起编者就在教育部高校工科计算机基础课程教学指导委员会的支持下,开展对计算机基础课知识结构的研究。1996年,该项研究被教育部列为面向21世纪计算机基础教学项目组立项课题。上述6种教材,每种覆盖知识单元的一个领域,构成一个相对独立的教学模块,特别方便不同层次的高校与读者按需选用。三、遴选作者,强强联手。参加编写本系列第一批教材的作者,都是根据本人的特长由所在学校推荐的、对该方面的教学和科研富有经验的教师。编写大纲统一由系列教 材编辑委员会审定,对保证教材质量起到良好的作用。本系列的出版得到四川省高校计算机基础教育研究会和机械工业出版社华章公司大力支持。教育部计算机基础课程教学指导委员会委员、电子科技大学古天祥教授和教育部计算机基础课程教学指导委员会委员、四川大学李志蜀教授担任系列教材编辑委员会的顾问,对系列的选题与内容都提出宝贵的意见。借此机会,编者对他们表示诚挚的感谢。 史济民 李光琳 2000年6月
程序设计与算法 1
程序设计语言的发展 1
C语言的特点 2
C语言是中级语言 2
C语言是结构化语言 3
C语言是程序员的语言 3
C语言的程序结构 4
基本程序结构 4
函数库和链接 6
开发一个C程序 7
C语言的关键字 7
流程图与算法的结构化描述 9
用N-S图描述算法 12
用PAD图描述算法 13
数据类型、运算符和表达式 14
C语言的数据类型 14
常量与变量 15
标识符命名 15
整型数据 16
整型常量 16
整型变量 17
实型数据 18
实型常量 18
实型变量 18
字符型数据 19
字符常量 19
字符串常量 19
转义字符 20
符号常量 20
字符变量 21
算术运算符 22
自增和自减 22
关系和逻辑运算符 23
位操作符 24
?操作符 26
逗号操作符 27
关于优先级的小结 27
表达式中的类型转换 28
构成符cast 29
空格与括号 29
C语言中的简写形式 29
程序控制语句 31
程序的三种基本结构 31
数据的输入与输出 31
scanf()函数 31
printf()函数 33
getchar()函数与putchar()函数 36
程序应用举例 37
条件控制语句 38
if 语句 38
switch 语句 43
程序应用举例 45
循环控制语句 46
while语句 47
do... while 语句 49
for 语句 50
break与continue语句 53
程序应用举例 54
函数说明与返回值 57
函数的类型说明 57
返回语句 58
函数的作用域规则 60
局部变量 60
全局变量 61
动态存储变量 62
静态存储变量 63
函数的调用与参数 63
形式参数与实际参数 64
赋值调用与引用调用 64
实现问题 66
参数和通用函数 66
函数库和文件 67
程序文件的大小 67
分类组织文件 67
C语言的预处理程序与注释 67
C语言的预处理程序 68
#define 68
# include 69
条件编译命令 70
#pragma 73
预定义的宏名 73
程序应用举例 74
一维数组 78
向函数传递一维数组 78
字符串使用的一维数组 79
二维数组 80
二维数组的一般形式 80
字符串数组 84
多维数组 85
数组的初始化 85
数组初始化 85
变长数组的初始化 86
应用程序举例 87
指针与指针变量 91
指针变量的定义与引用 92
指针变量的定义 92
指针变量的引用 93
指针运算符与指针表达式 94
指针运算符与指针表达式 94
指针变量作函数的参数 95
指针与数组 96
指针与一维数组 97
指针与二维数组 99
数组指针作函数的参数 102
指针与字符数组 108
指针的地址分配 111
指针数组 112
指向指针的指针 118
main函数的参数 121
结构体与共用体 125
结构体类型变量的定义和引用 125
结构体类型变量的定义 126
结构体类型变量的引用 127
结构体类型变量的初始化 127
结构体数组的定义和引用 129
结构体指针的定义和引用 135
指向结构体类型变量的使用 135
指向结构体类型数组的指针的
链表的建立、插入和删除 138
单链表 139
单链表的插入与删除 141
共用体 149
共用体的定义 149
共用体变量的引用 150
输入、输出和文件系统 153
缓冲文件系统 153
文件的打开与关闭 153
文件的读写 155
随机读写文件 163
非缓冲文件系统 166
文件系统应用举例 167
实用编程技巧 170
图形应用技巧 170
显示适配器类型的自动测试 170
屏幕图像的存取技巧 179
屏幕显示格式的控制方法 181
使图形软件脱离BGI的方法 182
拷贝屏幕图形的方法 183
随意改变VGA显示器显示颜色的
用随机函数实现动画的技巧 187
用putimage 函数实现动画的技巧 189
菜单设计技术 191
下拉式菜单的设计 191
选择式菜单的设计 194
实现阴影窗口的技巧 195
音响技巧 197
音乐程序设计 197
自动识谱音乐程序 200
实现后台演奏音乐的技巧 203
C++入门 205
面向对象的概念 205
面向对象的程序结构 205
C++的类 206
C++的输入与输出 207
类与对象 208
类的定义与对象的引用 209
构造函数与析构函数 211
函数重载 215
对象指针 219
派生类与继承类 225
单继承的派生类 225
多继承的派生类 233
若举报审核通过,可奖励20下载分
被举报人:
chenzifeng
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行

我要回帖

更多关于 c语言程序设计 的文章

 

随机推荐