C程序设计(第五版)谭浩强 学习笔记—重点及易错点(1-5章)

C程序设计(第五版)谭浩强 学习笔记—重点及易错点(1-5章)第一章程序设计与 C 语言目录第一章程序设计与 C 语言一 计算机语言的发展二 C 语言的注释方法三 程序设计任务第二章算法 程序的灵魂一 程序的组成二 结构化程序设计的方法第三章最简单的 C 程序设计 顺序程序设计一 数据类型二 运算符与表达式三 数据的输入和输出第四章选择结构与条件判断第五章循环结构程序设计第六章利用数组处理批量数据

第一章 程序设计与C语言

目录

第一章 程序设计与C语言

一、计算机语言的发展

二、C语言的注释方法

三、程序设计任务

第二章 算法—程序的灵魂

一、程序的组成

二、结构化程序设计的方法

第三章 最简单的C程序设计—顺序程序设计

一、数据类型

二、运算符与表达式

三、数据的输入和输出

第四章 选择结构与条件判断

第五章 循环结构程序设计

第六章 利用数组处理批量数据

第七章用函数实现模块化程序设计

第八章 善于利用指针-上


一、计算机语言的发展

1.机器语言

2.汇编语言

3.高级语言

高级语言又经历了:非结构化,结构化,面向对象的发展历程。

二、C语言的注释方法

1.单行注释

如: int i ;    //声明变量

2.多行注释

如:

/*int main() { printf("hello c program"); }*/

三、程序设计任务

1.问题分析

2.设计算法

3.编写程序

4.对源程序进行编辑、编译和运行

5.运行程序,分析结果

注意:C语言的每个语句与数据声明后边都必须要有分号

第二章 算法—程序的灵魂

一、程序的组成

1.数据结构:对数据的描述,在程序中用到的数据及其组织形式。

2.算法:计算机对数据的操作。

程序=算法+数据结构。除了算法与数据结构外,程序员还应该具备编程语言、程序设计方法的技能。

二、结构化程序设计的方法

1.自顶向下

2.逐步细化

3.模块化设计,高内聚,低耦合

4.结构化设计(面向对象思想)

第三章 最简单的C程序设计—顺序程序设计

一、数据类型

1.常量:在程序运行过程中,其值不能被改动的量为常量。

包括:整型常量、实型常量、字符常量、字符串常量、符号常量

符号常量:用#define指令,指定用一个符号代表一个常量。如:

#define    PI   3.14

注意:结尾没有分号!!!!!!!!!

2.变量:在程序运行期间其值可以改变,变量必须先定义后使用。

3.常变量:在定义变量时,前面加一个关键字const。如:

const int a = 1 ;

4.标识符

C语言中标识符,由数字、字母、下换线组成,首位不能是数字。

5.数据类型

C程序设计(第五版)谭浩强 学习笔记—重点及易错点(1-5章)

(1) 只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加。

(2) 对无符号整型数据用“%u”格式输出。%u表示用无符号十进制数的格式输出。如:

unsigned short price=50; //定义price为无符号短整型变量 printf("%u\n",price); //指定用无符号十进制数的格式输出 

二、运算符与表达式

1.自增(++)自减(–)运算符

++i是先执行i=i+1,再使用i的值;而i++是先使用i的值,再执行i=i+1。

2.强制类型转换

(double)a        将a转换成double型

(int)(x+y)        将x+y的值转换成int型

(float)(5%3)        将5%3的值转换成float型

注意:强制类型转换时“()”不能忘记,如下:

(int)x+y        只将x转换成整型,然后与y相加 int a; float x,y;double b; a=(int)x 进行强制类型运算(int)x后得到一个int类型的临时值,它的值等于x的整数部分,把它赋给a,注意x的值和类型都未变化,仍为float型。该临时值在赋值后就不再存在了。

3.赋值运算

如果赋值运算符两侧的类型不一致,但都是基本类型时,在赋值时要进行类型转换。类型转换是由系统自动进行的,转换的规则是:

将浮点型数据(包括单、双精度)赋给整型变量时,先对浮点数取整,即舍弃小数部分,然后赋予整型变量。

将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。

将一个double型数据赋给float变量时,先将双精度数转换为单精度,即只取6~7位有效数字,存储到float型变量的4个字节中。应注意双精度数值的大小不能超出float型变量的数值范围;

将一个float型数据赋给double型变量时,数值不变,在内存中以8个字节存储,有效位数扩展到15位。

字符型数据赋给整型变量时,将字符的ASCII代码赋给整型变量。

将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量时,只将其低字节原封不动地送到被赋值的变量(即发生“截断”)。

三、数据的输入和输出

1.C语言没有自己特定的输入输出函数,都是由库函数提供的在使用时,要在源文件头部加上#include<stdio.h>

#include指令说明

三种形式:

#include “c:\cpp\include\myfile.h” 按指定路径查找文件

#include “myfile.h“ 源程序文件所在目录

#include <myfile.h>  C编译系统指定的include目录

2.printf函数

printf(格式控制,输出表列);

(1) “格式控制”是用双引号括起来的一个字符串,称为格式控制字符串,简称格式字符串。包括: ① 格式声明。格式声明由“%”和格式字符组成。作用是将输出的数据转换为指定的格式后输出。 ② 普通字符。普通字符即需要在输出时原样输出的字符。

(2) 输出表列是程序需要输出的一些数据,可以是常量、变量或表达式。

C程序设计(第五版)谭浩强 学习笔记—重点及易错点(1-5章)

格式

字符

说    明

d,i

以带符号的十进制形式输出整数(正数不输出符号)

o

以八进制无符号形式输出整数(不输出前导符0)

x,X

以十六进制无符号形式输出整数(不输出前导符0x),用x则输出十六进制数的a~f时以小写形式输出,用X时,则以大写字母输出

u

以无符号十进制形式输出整数

c

以字符形式输出,只输出一个字符

s

输出字符串

f

以小数形式输出单、双精度数,隐含输出6位小数

e,E

以指数形式输出实数,用e时指数以“e”表示(如1.2e+02),用E时指数以“E”表示(如1.2E+02)

g,G

选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0。用G时,若以指数形式输出,则指数以大写表示

附加字符

说    明

l

长整型整数,可加在格式符d、o、x、u前面)

m

(代表一个正整数)

数据最小宽度

n

(代表一个正整数)

对实数,表示输出n位小数;对字符串,表示截取的字符个数

输出的数字或字符在域内向左靠

3.scanf函数

scanf(格式控制,地址表列);

1) “格式控制”是用双引号括起来的一个字符串,含义同printf函数。包括: ① 格式声明。以%开始,以一个格式字符结束,中间可以插入附加的字符。 ② 普通字符。

 (2) 地址表列是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。

 

C程序设计(第五版)谭浩强 学习笔记—重点及易错点(1-5章)

4.putchar函数与getchar函数

putchar(c);

getchar();函数没有参数。 函数的值就是从输入设备得到的字符。 只能接收一个字符。 如果想输入多个字符就要用多个函数。 不仅可以从输入设备获得一个可显示的字符,而且可以获得控制字符。 用getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以作为表达式的一部分。如,putchar(getchar());将接收到的字符输出。

第四章 选择结构与条件判断

1.C语言有两种选择语句

if语句,用来实现两个分支的选择结构 ;

switch语句,用来实现多分支的选择结构。

2.if语句

if (表达式) 语句1 else 语句2 

3.关系运算符及其优先次序

<、>、>=、<=4种关系运算符的优先级别相同,==、!=2种也相同。前4种高于后2种。

关系运算符的优先级低于算术运算符。

关系运算符的优先级高于赋值运算符。

优先次序:!(非)→&&(与)→‖(或),

即“!”为三者中最高的; 逻辑运算符中的“&&”和“‖”低于关系运算符,“!”高于算术运算符

4.switch语句

switch() { case 常量1:语句1; case 常量2:语句2; case 常量3:语句3; case 常量4:语句4; case 常量5:语句5; default: 语句6; }

(1) 括号内的“表达式”,其值的类型应为整数类型(包括字符型)。

(2) 花括号内是一个复合语句,内包含多个以关键字case开头的语句行和最多一个以default开头的行。case后面跟一个常量(或常量表达式),它们和default都是起标号作用,用来标志一个位置。执行switch语句时,先计算switch后面的“表达式”的值,然后将它与各case标号比较,如果与某一个case标号中的常量相同,流程就转到此case标号后面的语句。如果没有与switch表达式相匹配的case常量,流程转去执行default标号后面的语句。

(3) 可以没有default标号,此时如果没有与switch表达式相匹配的case常量,则不执行任何语句。

(4) 各个case标号出现次序不影响执行结果。

(5) 每一个case常量必须互不相同;否则就会出现互相矛盾的现象。

(6) case标号只起标记的作用。在执行switch语句时,根据switch表达式的值找到匹配的入口标号,在执行完一个case标号后面的语句后,就从此标号开始执行下去,不再进行判断。因此,一般情况下,在执行一个case子句后,应当用break语句使流程跳出switch结构。最后一个case子句(今为default子句)中可不加break语句。

(7) 在case子句中虽然包含了一个以上执行语句,但可以不必用花括号括起来,会自动顺序执行本case标号后面所有的语句。当然加上花括号也可以。

(8) 多个case标号可以共用一组执行语句。

第五章 循环结构程序设计

1.while语句

while(表达式) 语句

while语句可简单地记为: 只要当循环条件表达式为真(即给定的条件成立),就执行循环体语句。 “语句”就是循环体。循环体可以是一个简单的语句,可以是复合语句(用花括号括起来的若干语句)。 执行循环体的次数是由循环条件控制的,这个循环条件就是上面一般形式中的“表达式”,它也称为循环条件表达式。当此表达式的值为“真” (以非0值表示)时,就执行循环体语句;为“假” (以0表示)时,就不执行循环体语句。

例如:求1+2+++100的值

#include<stdio.h> int main() { int i=1,sum=0; //定义变量i的初值为1,sum的初值为0 while(i<=100) //当i>100,条件表达式i<=100的值为假,不执行循环体 { //循环体开始 sum=sum+i; //第1次累加后,sum的值为1 i++; //加完后,i的值加1,为下次累加做准备 } //循环体结束 printf("sum=%d\n",sum); //输出1+2+3…+100的累加和 return 0; } 

注意:不要忽略给i和sum赋初值,否则它们的值是不可预测的,结果显然不正确。

2.do  while语句

do   

 语句

while(表达式);

注意:分号

3.for语句

or(表达式1;表达式2;表达式3)

    语句

表达式1: 设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值。 表达式2: 是循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环。 表达式3: 作为循环的调整,例如使循环变量增值,它是在执行完循环体后才进行的。

C程序设计(第五版)谭浩强 学习笔记—重点及易错点(1-5章)

4.break语句

作用:使流程跳到循环体之外,接着执行循环体下面的语句。

注意:break语句只能用于循环语句和switch语句之中,而不能单独使用。

5.continue语句

作用:结束本次循环,即跳过循环体中下面尚未执行的语句,转到循环体结束点之前,接着执行for语句中的“表达式3”,然后进行下一次是否执行循环的判定。

continue语句只结束本次循环,而非终止整个循环。break语句结束整个循环,不再判断执行循环的条件是否成立

链接:

第六章 利用数组处理批量数据

第七章用函数实现模块化程序设计

第八章 善于利用指针-上​​​​​​​

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230548.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月16日 下午2:01
下一篇 2026年2月16日 下午2:22


相关推荐

  • TCP四次挥手和TIME_WAIT

    TCP四次挥手和TIME_WAITFIN_WAIT_1:FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情…

    2022年5月10日
    51
  • Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)

    Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)

    2021年12月17日
    73
  • oracle分页查询解释

    oracle分页查询解释select*fromt_userorderbyuser_id;——————————————–分页的必须参数–当前页–每页几条数据–一共多少页–总记录数————对于分页查询而言,最终需要两个参数(一个是开始条数,一个是结束条数)———select*from(SELEC…

    2022年5月28日
    42
  • plsql developer怎么使用 plsql developer使用教程[通俗易懂]

    plsql developer怎么使用 plsql developer使用教程[通俗易懂]plsqldeveloper相信是编程朋友经常接触的一款Oracle数据开发工具。plsqldeveloper的功能也是相当强大的,下面小编就为大家简单介绍一下plsqldeveloper怎么使用。1、登陆成功后即可进入对象浏览器窗口界面2、在对象浏览器选择“myobject”,这里边就是SCOTT(当前登陆的用户的所有object)3、找到ta

    2022年6月3日
    96
  • java的if else语句入门

    条件语句,是程序中根据条件是否成立进行选择执行的一类语句,这类语句在实际使用中,难点在于如何准确的抽象条件。例如实现程序登录功能时,如果用户名和密码正确,则进入系统,否则弹出“密码错误”这样的提示框等

    2021年12月26日
    44
  • Macbook air/pro m1 恢复出厂设置小记

    Macbook air/pro m1 恢复出厂设置小记今日手抽,想恢复下出厂,看了官方教程https://support.apple.com/zh-cn/HT211983够,按照说明一步一步进行,然鹅~在正确抹掉2遍开始选择重装bigsur时发现无法找到硬盘。经摸索,解决方法:再次重启进去恢复模式,选择磁盘工具,点击显示所有卷宗,这时发现硬盘处于非格式化状态,因而无法被安装程序识别,(点击+号新建afps分区时会提示无效的arg,无法新建分区)应选择抹除,来重新抹盘,即可解决问题。返回到恢复界面,就能发现硬盘并正常重装。注:这个问题用u盘进行引导安装时也一

    2022年6月17日
    242

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号