第一章 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)的更多相关文章

  1. C语言程序设计-现代方法(笔记3)

    第十三章 字符串 1.字符串字面量(13.1) 字符串字面量:用一对双引号括起来的字符序列.字符串字面量可以像字符常量一样包含转义字序列. 在字符串字面量中小心使用八进制和十六进制的转义序列. 字符串 ...

  2. C语言程序设计做题笔记之C语言基础知识(下)

    C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...

  3. C语言程序设计做题笔记之C语言基础知识(上)

    C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...

  4. 《JAVA语言程序设计》上课笔记

    教学目标:1.使学生了解JAVA课程的性质.定位.作用:为什么要学习JAVA?让学生知道如何学好JAVA: 教学内容: 一.        问几个问题 1.             你们到这里来干什么 ...

  5. C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载

    下载地址:点我 C语言仍然是计算机领域的通用语言之一,但现在的C语言已经和当初的时候大不相同了.本书主要的一个目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程,不再强调“手工优化 ...

  6. C语言程序设计现代方法_数组(第八章)

    C语言不要求检查下标的范围.当下标超出范围时,程序可能会执行不可预知的行为. 看下这个程序: #include <stdio.h> #define N 10 // int main() { ...

  7. C语言程序设计现代方法_基本类型(第七章)

    C语言支持两种不同的数值类型,整数类型,浮点类型. C语言的整数类型有不同的尺寸.int类型通常为32位,但在老的CPU上可能是16位.有些可能是64位. 因此,int型如果在16位CPU上最大值就是 ...

  8. 《C语言程序设计现代方法》第4章 表达式

    C语言的一个特点就是它更多地强调表达式而不是语句,表达式是表示如何计算值的公式. 当表达式包含两个或更多个相同优先级的运算符时,运算符的结合性(associativity)开始发挥作用.如果运算符是从 ...

  9. 《C语言程序设计》学习笔记(二)

    第八章 函数 函数的基本概念 定义:函数由函数名.参数和函数体组成. 函数定义的一般形式: 类型说明符 函数名(形式参数声明) { [说明与定义部分] 语句: } 说明: 1.类型说明符用来说明函数的 ...

随机推荐

  1. PostGIS 存储过程返回类型

    Postgresql存储过程返回值的方式有很多,在此先只记录一下自己用到过的,慢慢拓展 1.type型,这里geometry可以是任何postgresql支持的类型(integer/text/char ...

  2. 全栈项目|小书架|微信小程序-登录及token鉴权

    小程序登录 之前也写过微信小程序登录的相关文章: 微信小程序~新版授权用户登录例子 微信小程序-携带Token无感知登录的网络请求方案 微信小程序开通云开发并利用云函数获取Openid 也可以通过官方 ...

  3. 【Flink】Flink基础之WordCount实例(Java与Scala版本)

    简述 WordCount(单词计数)作为大数据体系的标准示例,一直是入门的经典案例,下面用java和scala实现Flink的WordCount代码: 采用IDEA + Maven + Flink 环 ...

  4. ORA-00845 startup启动不起来关于磁盘空间扩充

    问题描述:今天在虚拟机下进行startup的操作,但是没有起来,系统报错:ORA-00845: MEMORY_TARGET not supported on this system 1.startup ...

  5. 题解 P1047 【校门外的树】

    可以直接模拟,用珂朵莉树是不有点小题大做. 你怎么做珂朵莉都会骂你:"这么简单的模拟都要用***" 附赠珂朵莉照片一张 另外讲几点: 可以用int,你要不怕MLE #include ...

  6. pymongo的基本操作和使用

    MongoDB简介 MongoDB是一个开源的文档类型数据库,它具有高性能,高可用,可自动收缩的特性.MongoDB能够避免传统的ORM映射从而有助于开发. 文档 在MongoDB中,一行纪录就是一个 ...

  7. Hbase初识

    简介 数据模型 相关数据库 典型应用 优势 劣势 key-value Redis 缓存 快速查询 存储数据缺乏结构化 列族 Cassandra,Hbase 分布式的文件系统,大规模的数据存储 易于分布 ...

  8. Python 代码块

    代码块 骏马金龙https://www.cnblogs.com/f-ck-need-u/p/9925021.html https://www.cnblogs.com/jin-xin/articles/ ...

  9. LeetCode-7.reverse-integer 【翻转字符串】【数学】

    PS: 第一次写文章好累啊,没想到这么短的文章写完这么累,大家给我点反馈,多给我留言啊.

  10. 转:IK分词原理

    IKAnalyzer是一个开源的,基于Java语言开发的轻量级的中文分词语言包,它是以Lucene为应用主体,结合词典分词和文法分析算法的中文词组组件.从3.0版本开始,IK发展为面向java的公用分 ...