C语言程序设计-现代方法(笔记1)
第一章 C语言概述
1、C语言的历史(1.1)
起源:贝尔实验室开发的UNIX操作系统的副产品。标准化:C89和C99。基于C的语言:C++,Java,C#,Perl。
2、C语言的优缺点(1.2)
优点:高效、可移植、功能强大、灵活、标准库、与UNIX和Linux集成;缺点:C程序更容易隐藏错误、C程序可能难以理解、C程序可能会难以修改。
高效使用C的方法
1.学习如何规避C语言的缺陷(C陷阱与缺陷);2.使用软件工具使程序更加可靠(lint工具和调试工具);
3.利用现有的代码库;4.采用一套切合实际的编码规范;5.避免“投机取巧”和极度复杂的代码;6.紧贴标准(C89和C99)
第二章 C语言基本概念
1、编写一个简单的C程序(2.1):编译和连接
预处理:执行以#开头的命令,类似于编辑器,可以给程序添加内容,也可以对程序进行修改;
编译:编译器将程序翻译成机器语言(即目标代码);
链接:连接器把由编译器产生的目标代码和所需的其他附加代码整合在一起,附加代码包括库函数。
2、简单程序的一般形式(2.2):C程序由指令、函数和语句组成。
指令:一般是预处理器执行的命令,类似于#define,#include <stdio.h>;函数:程序员编写的函数和库函数;语句:程序运行时执行的命令,每条语句由分号结束。
main函数最后的return 0;语句。作用:一是使main函数终止,二是指出main函数返回值是0.
3、注释(2.3):每个程序都应该包含识别信息,即程序名,编写日期,作者,程序的用途及其他相关信息。/* */和//
4、变量和赋值(2.4)
每个变量必须有一个类型。使用变量之前必须对其进行声明。
float型变量运算比int型变量慢,float型变量所存储的数值只是实际值的一个近似值。
书写格式方面,建议在声明和语句之间留出一个空行。
给float型变量赋值时,最后在后面加一个f,例如float profit = 21.34f;
占位符%d用来指明在显示过程中变量的值的显示位置。
没有默认值且尚未在程序中被赋值的变量是未被初始化的。
C语言通用原则:在任何需要数值的地方,都可以使用具有相同类型的表达式。printf("Volume (cubic inches): %d\n", height * lenght * width);
5、读入输入(2.5)
printf中的字母f和scanf中的字母f含义相同,都是表示“格式化”的意思。
scanf函数需要知道将获得的输入数据的格式,而printf函数需要知道输出数据的显示格式。
6、定义常量的名字(2.6)
C程序规范:#define宏定义的名字都使用大写字母表示。
#define SCALE_FACTOR (5.0f / 9.0f) 添加上f
7、标识符(2.7)
传统C中命名中间插入下划线,例如symbol_table,current_page
目前流行的java(C#及C++)用单词首字母大写,例如symbolTable,currentPage
8、C程序书写规范(2.8)
语句可以分开放在任意多行内;记号间的加空格可以更容易区分记号;每个逗号后边也放一个空格;缩进帮助识别程序;空行可以把程序划分成逻辑单元;
第三章 格式化输入/输入
1、printf函数(3.1)
printf函数用来显示格式串的内容,并且在该串中的指定位置插入可能的值。格式串包括普通字符和转换说明。
转换说明:%m.pX格式或者-m.pX格式来表示。m(最小字段宽度):指定要显示的最小字符数量;p(精度),+和-表示右对齐和左对齐。
转义序列:使字符串包含一些特殊字符而不会使编译器引发问题。警报(响铃)符:\a;换行符:\n;水平制表符:\t。
2、scanf函数(3.2)
检查转换说明数量是否与输入变量数量相匹配;检查每个转换是否适合相对应的变量;scanf每个调用变量前需要有&。
许多专业程序员避免使用scanf函数,而是采用字符格式读取所有数据,然后再把他们转换成数值形式。
scanf函数本质上使一种“模式匹配”,试图吧输入的字符组与转换说明相匹配。
用户从键盘输入时,程序并没有读取输入,而是把用户的输入放在一个隐藏的缓冲区中,由scanf函数来读取。
第四章 表达式
1、算术运算符(4.1)
一元运算符什么都不做,在经典C中不存在这种运算符。
把int型操作数和float型操作数混合在一起时,运算结果时float型的。
运算符%要求操作数十整数。当运算符/和运算符%用于负操作数时,其结果难以确定。
通用规则,C语言允许在所有表达式中用圆括号进行分组。
运算符的左结合和右结合。
2、赋值运算符(4.2)
表达式v=e,如果v和e的类型不同,那么赋值运算发生时会把e的值转化为v的类型。
在C语言中,赋值就像+那样是运算符。即赋值操作产生结果。赋值表达式v=e的值就是赋值运算后v的值。
第五章 选择语句
1、逻辑表达式(5.1)
关系运算符可以用于比较整数和浮点数,也允许比较混合类型的操作数。因此1<2.5的值为1。
关系运算符的优先级低于算术运算符。表达式i + j < k - 1的意思是(i + j)<(k - 1)。判等运算符的优先级低于关系运算符。
逻辑运算符所产生的结果时0或1。
2、if语句(5.2)
把==运算符与=运算符相混淆是最常见的C语言编程错误。
复合语句,通过在一组语句周围放置花括号,可以强制编译器将其作为一条语句来处理。
对于if else 语句在不必要的情况下使用花括号有两个好处。首先,程序很容易修改,然后,可以避免忘记使用花括号而导致的错误。
条件表达式使程序更短小但也更难以阅读,所以最好避免使用。用于两种地方:1.return语句;2.某些类型的宏定义中。
if (i > j)
return i;
else
return j
替换为
return i > j ? i : J;
if (i > j)
printf("%d\n", i);
else
printf("%d\n", j);
替换为
printf("%d\n", i > j ? i : j);
为了便于理解,C89的程序员通常使用TRUE和FALSE这样的名字定义宏:
#define TRUE 1
#define FALSE 0
C99中使用_Bool型,例如:_Bool flag;_Bool只能赋值为0或1
或者包含<stdbool.h>,可以写为bool flag,<sdbool.h>中提供了ture和false两个宏,分别代表1和0.
第六章 循环
1、常见循环类型
while语句;do语句;for语句
2、for语句(6.3)
21.for语句的惯用法
从0向上加到n-1:for( i = 0; i < n; i++)
从1向上加到n:for( i = 1; i <= n; i++)
从n-1向下减到0:for(i = n - 1; i >= 0; i--)
从n向下减到1:for( i = n; i > 0; i--)
2.2 C99中的for语句
在C99中,在for语句的第一个表达式中可以替换为一个声明
for(int i = 0; i < n; i++)
2.3退出循环
break语句:跳出循环或者switch语句,但是不能从switch中跳出循环。
continue语句:跳过某次迭代的部分内容,但不会跳出整个循环。
goto语句:让程从一条语句跳转到另一条语句。goto语句必须和goto标识符在同一个函数中。
goto语句的缺点:1.goto语句可以往前跳也可以往后跳,使程序难以阅读;2.goto语句使程序难以修改。
2.4空语句
语句可以为空,除了末尾处的分号以外什么符合也没有。
空语句有一个好处:编写循环体的循环。
C程序员习惯性把空语句单独放置在一行。
for(d = 2; d < n && n & d != 0; d++)
;
其他使用空语句的地方
for(d = 2; d < n && n & d != 0; d++)
continue;
for(d = 2; d < n && n & d != 0; d++)
{}
C语言程序设计-现代方法(笔记1)的更多相关文章
- C语言程序设计-现代方法(笔记3)
第十三章 字符串 1.字符串字面量(13.1) 字符串字面量:用一对双引号括起来的字符序列.字符串字面量可以像字符常量一样包含转义字序列. 在字符串字面量中小心使用八进制和十六进制的转义序列. 字符串 ...
- C语言程序设计做题笔记之C语言基础知识(下)
C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...
- C语言程序设计做题笔记之C语言基础知识(上)
C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...
- 《JAVA语言程序设计》上课笔记
教学目标:1.使学生了解JAVA课程的性质.定位.作用:为什么要学习JAVA?让学生知道如何学好JAVA: 教学内容: 一. 问几个问题 1. 你们到这里来干什么 ...
- C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载
下载地址:点我 C语言仍然是计算机领域的通用语言之一,但现在的C语言已经和当初的时候大不相同了.本书主要的一个目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程,不再强调“手工优化 ...
- C语言程序设计现代方法_数组(第八章)
C语言不要求检查下标的范围.当下标超出范围时,程序可能会执行不可预知的行为. 看下这个程序: #include <stdio.h> #define N 10 // int main() { ...
- C语言程序设计现代方法_基本类型(第七章)
C语言支持两种不同的数值类型,整数类型,浮点类型. C语言的整数类型有不同的尺寸.int类型通常为32位,但在老的CPU上可能是16位.有些可能是64位. 因此,int型如果在16位CPU上最大值就是 ...
- 《C语言程序设计现代方法》第4章 表达式
C语言的一个特点就是它更多地强调表达式而不是语句,表达式是表示如何计算值的公式. 当表达式包含两个或更多个相同优先级的运算符时,运算符的结合性(associativity)开始发挥作用.如果运算符是从 ...
- 《C语言程序设计》学习笔记(二)
第八章 函数 函数的基本概念 定义:函数由函数名.参数和函数体组成. 函数定义的一般形式: 类型说明符 函数名(形式参数声明) { [说明与定义部分] 语句: } 说明: 1.类型说明符用来说明函数的 ...
随机推荐
- Laravel 菜鸟的晋级之路
第一阶段:简单的增删改查 这是最开始接触Laravel的一个阶段.如果有PHP经验,那么应该能很快找到MVC的路径,然后驾轻就熟的开始写起来.虽然还显得有些笨拙,不过很快就能做出一些内容了.如果没有P ...
- 【Stream—7】NetworkStream相关知识分享
一.NetworkStream的作用 和先前的流有所不同,NetworkStream的特殊性可以在它的命名空间中得以了解(System.Net.Sockets),聪明的你马上就会反应过来:既然是在网络 ...
- 01-python中一切皆对象
python一切皆对象 Python中一切皆对象,在静态语言中,Java也是面向对象编程,Python要比Java的面向对象编程更加彻底.元类编程以及猴子补丁都是用一切皆对象编程出来的. 1.函数和类 ...
- Python拼接字符串的七种方式
忘了在哪看到一位编程大牛调侃,他说程序员每天就做两件事,其中之一就是处理字符串.相信不少同学会有同感. 几乎任何一种编程语言,都把字符串列为最基础和不可或缺的数据类型.而拼接字符串是必备的一种技能.今 ...
- Matlab生成Word--xdd
摘自<MATLAB统计分析与应用:40个案例分析>(谢中华老师著)P452页function CreatWord %利用Matlab生成word filespec_user = [pwd ...
- linux终端操作
------------恢复内容开始------------ tab键自动补全 ls列出当前文件目录: 默认是当前目录 “.”代表当前目录 “..”代表父目录 -a显示所有,而隐藏文件的第一字符为点“ ...
- cropperjs实践及中文文档(自译)
cropperjs是一款非常强大却又简单的图片裁剪工具,它可以进行非常灵活的配置,支持手机端使用,支持包括IE9以上的现代浏览器.(关键是使用方法简单,几行代码就可以搞定) 实践效果图 如图,可以对指 ...
- 使用selenium模拟登陆新浪微博
1.selenium基本使用 1.selenium安装及基本操作 selenium是一个自动化测试工具,它支持各种浏览器,包括Chrome,Safari,Firefox等主流界面浏览器驱动,也包括Ph ...
- 最全最新🇨🇳中国【省、市、区县、乡镇街道】json,csv,sql数据
中华人民共和国行政区划代码 中华人民共和国行政区划(五级):省级.地级.县级.乡级和村级. 来自中华人民共和国民政部,用于查询中国省,市和区数据的网站. 中华人民共和国行政区划代码,更新时间:2019 ...
- HTML5的一些验证挺方便的
一些基本的验证都可以很简单的实现,节省了很多繁琐的步骤.