版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编写简单的C语言程序(NOI培训)刘汝佳何为“简单?百度风格:简单可依赖简单不等于简陋我们的目标:用简单、直观、不容易出错的程序来完成任意复杂的功能,而不是把各种“高级的东西堆砌在一起,然后把包括自己在内的所有人搞糊涂在编程语言中,不是所有语言特性都是必须的。对于算法程序来说尤其如此。为什么要学习C语言应用范围广,是学习C+, Java, C#等语言的根底功能强大,语法也不算复杂,适合描述算法,也适合用C语言体会设计、编码、调试和测试这些步骤的最正确实践。学些啥?语法、语义常用库函数从实例中学习如何设计如何编码如何调试如何测试C语言的特性三大特性源码可移植性(在一定程度上)可编写底层程序高效U
2、nix操作系统就是由C写成。在嵌入式领域应用十分广泛,但也有很多用C写成的字处理程序和数据库系统程序结构C语言是面向过程的,因此根本构造块是函数。函数可以自己写,也可以用标准库里已有的。函数中包含语句,而语句可以组合成语句块。/ a hello world program#include int main() printf(“hello world!n); return 0;从一开始培养编码习惯简单的hello world函数也可以看出编码习惯注释:要有,但不要过量空格:大多数token之间需要加空格缩进:可以2,3,4格或者tab缩进,但要统一花括号换行:是否单独另加一行均可,但要统一多语句
3、:尽量不要一行写多条语句;不要用逗号代替花括号尽量把逻辑复杂的长语句分成简单的多条语句。这样不仅程序更漂亮、易写易读,而且方便测试和调试。不要追求炫的写法,要遵守KISS类型根本类型:整数、实数与复数枚举无值(void)派生类型指针数组结构体联合函数算术类型聚集类型C语言中没有函数和过程的区别C语言的函数不能嵌套定义。说明和定义可以分开可以防止使用指针是双刃剑,在提供灵活性的同时牺牲了平安整数如何表示正整数?如何表示负整数?有符号整数和无符号整数有何区别?为什么会有不同大小范围的整数类型?如何表示正无穷和负无穷?整数有哪些常见运算?有什么需要注意的地方?如何表示高精度整数?如何编写它的运算?字
4、符:一种特殊的整数问题:如何改变大小写?变种:Latin-1,Unicode实数如何表示有理数?如何表示无理数如果可以的话?既然实数表示的范围比整数大,那为什么还需要整数类型?为什么要尽量防止比较实数是否相等?如何表示正无穷?负无穷?是否有其他特殊的实数?有哪些常见的实数函数?如何取整?如何表示高精度实数?如何编写它的运算?数组数组里必须是相同的数据类型数组名代表它的首地址。无法根据这个首地址获取该数组的元素个数特殊的数组:字符串数组中的每个元素是一个字符以特殊字符0 (ASCII码为0) 结尾结构体相当于Pascal语言中的记录数据封装的例子问题:如果要表示二叉树,结点类型必须自己包含自己?
5、建议:尽管不推荐使用,指针在某些时候还是必须的。在需要使用指针的场合,尽管只用取地址和取内容运算符,不要对地址本身进行运算。这将大大降低出错的可能运算符八类运算符算术运算赋值运算自增自减比较运算逻辑运算位运算地址运算其他运算函数调用、取大小、强制类型转换等Lvalue = 表达式1 = a& | !& | 没有乘方运算表达式的副作用如果在计算一个表达式后,程序的执行环境发生改变,我们说这个表达式有副作用副作用往往隐藏着陷阱!副作用的源头自增自减运算 (不要写出a = a+ +a 这样的东西)能修改数组和结构体的函数全局变量问题:你能想到哪些由副作用引起的错误?语句空语句表达式语句:要么是赋值语
6、句,要么有副作用,否那么意义不大尽管合法控制流语句条件分支: if, else. 可以嵌套循环: for, while, do-while. 可以嵌套无条件跳转:break, continue, goto语句可以用花括号复合到一起问题:可以完全防止goto语句吗?新的作用域不要goto语句?程序设计方法的进步:结构化程序设计三大根本结构:顺序、分支、循环合理的设计程序流程图是一个必须熟练掌握的根本功. 推荐在纸上写清楚了,再动手编码画N-S图写伪代码,只包含if-else, for, while/do-while, break和continue,不含gotoC语言并非严格的结构化编程语言,因此
7、更多的是靠自觉!函数函数的定义:参数、返回值、函数体函数的声明:类似Pascal的forward声明参数传递方法:传值、通过指针传参问题:何时需要传参?输入输出不同语言的输入输出方法很不一样C语言:printf, scanf等C+语言:除了printf和scanf外还可以用流(cin, cout etc)Java语言:流,但输入经常需要自己解析建议:学会自己解析和生成字符串,而不要只会用系统提供的格式化输入输出函数。其他内容预编译指令包含头文件宏的应用动态内存管理malloc, free动态结构不一定需要动态分配内存!例1. 3n+1问题例1. 3n+1问题提示最重要的子问题是什么?该问题可以单元测试吗?你的程序是否包含了重复的运算?如果是,可以防止吗?此题有什么陷阱吗?例2. Jolly Jumper提示是否可以把“取遍
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届北京华科软科技有限公司秋季招聘12人笔试历年常考点试题专练附带答案详解
- 2026届三环集团校园招聘笔试历年典型考点题库附带答案详解
- 2026年辽宁省开原市高考物理强基计划试卷附答案详解(能力提升)
- 2026年江苏省江阴市高考物理周测试卷附答案详解【能力提升】
- 2025年四川省康定市高考物理强基计划试卷附参考答案详解【基础题】
- 国际品牌投资并购策略论文
- 2025年山东省肥城市高考物理周测模拟卷附参考答案详解【夺分金卷】
- 2026年湖北省天门市高考物理5月学情自测试卷及完整答案详解(有一套)
- 大学生心理韧性培养城乡对比论文
- 城市公园绿地使用行为研究X噪音影响论文
- 【高考真题】2023年新高考Ⅰ卷数学
- 2025年河北石家庄市地理生物会考考试题库(含答案)
- 2026年医院药师招聘考核试题及答案详解(真题汇编)
- 2025北京海淀区五年级(下)期末语文试题及答案
- 山西国际能源集团校招试题及答案
- 《暴风雨来临之前》同步练习及答案-2025-2026学年统编版(新教材)小学语文三年级下册
- 骨折患者康复期人文关怀
- AI在审计中的应用【课件文档】
- 2026年带式输送机操作工技能认定理论考试题库(答案解析)
- SaaS介绍教学课件
- 巨细胞病毒感染诊疗指南
评论
0/150
提交评论