C语言程序设计总结(待补充)

第一章 第1章 C语言层序设计预备知识

第1节 计算机系统的组成

1. 什么是计算机?

计算机是以逻辑部件为物质基础,能够对信息进行自动处理的机器

2. 如何表示“信息”?

二进制

3. 计算机系统的组成

(1) 运算器(算术逻辑部件ALU)
数据运算包括算术运算和逻辑运算
(2) 控制器(中央处理器CPU)
它是计算机核心和关键
(3) 存储器
用来存放程序或数据。
存储器可分为两大类:即内存储器(主存)和外存储器(外存)
(4) 输入设备
(5) 输出设备
(6) 系统软件
软件是指计算机程序及相关程序的技术文档资料,更重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。
一类是面向计算机本身的软件,另一类是面向用户的软件
(7) 应用软件

4. 软件与硬件的关系

硬件和软件互相依存、硬件和软件无严格界线、硬件和软件协同发展

5. 计算机的工作原理

各种各样的信息通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示。整个过程由控制器进行控制

第2节 进位计数制及其转换

一、 数码、基与权

数码:表示数的符号
基数:数码的个数
权:每一位所具有的值

二、 十进制数、二进制(b)、八进制(O)和十六进制的表示(Ox)

三、 二进制和十进制、八进制和十六进制的转换(按权相加)(计算)

(练习)

第3节 机器的表示形式及其表示范围

一、 真值与机器数

(1) 真值:一个带符号数由两部分组成:一部分表示数的符号,另一部分表示数的数值。一般,直接用正号“+”和负号“-”来表示符号的二进制数,叫做符号数的真值。
(2) 机器数:计算机中的数是用二进制来表示的,数的符号也是用二进制来表示的。

二、 数的原码、反码、补码表示

(1) 原码(符号-数值表示)

  1. 当N为正数时,[N]原和N的区别只是增加一位用0表示的符号位。由于在数的左边增加一位0对该数的数值并无影响,所以[N]原就是N本身。
  2. 当N为负数时,[N]原和N的区别是增加一位用1表示的符号位
  3. 在原码表示中,有两种不同形式的0,即:
    [+0]原 = 000…0 或 0.00…0
    [-0]原 = 100…0 或 1.00…0
    (2) 反码(对1的补数,将原码数值按位求反)
  4. 正数N的反码[N]反与原码[N]原相同。
  5. 对于负数N,其反码[N]反的的符号为1,数值部分是将原码数值按位求反。
  6. 在反码表示中,有两种不同形式的0,即:
    [+0]反 = 000…0 或 0.00…0
    [-0]反 = 111…1 或 1.11…1
    (3) 补码(对2的补数,按位求反,末位加1)
  7. 正数的补码相同,而负数的补码表示不同
  8. 在补码中,0的表示形式是唯一的
  9. 绝大多数机器数的表示采用补码表示法。象C语言中整数在计算机中就是以其补码的形式存储的。
    (4) 对比
    原码 反码 补码
    表示数的范围

三、 补码的加、减运算(计算)

四、 无符号整数

16位无符号数的表示范围是:0 ≤ N ≤ 65535,
8位无符号数的表示范围是:0 ≤ N ≤ 255。

五、 字符表示法

第4节 二进制数的位运算(计算)

(1) “与”运算(AND) “·”或“∧”- &
结论:即只有A、B两个变量取值均为1,则它们“与”运算的结果才为1,其它均为0
(2) “或”运算(OR) “+”或“∨”- |
结论:即A、B变量中只要一个变量取值为1,则它们“或”运算的结果就是1
(3) “非”运算(NOT) - ~
结论:即将A的值求反。
(4) “异或”运算(XOR)- ^
结论:即当两个变量的取值相异时,则它们“异或”运算的结果就是1,相同则结果为0。

第二章 基本数据类型、运算符与表达式

第1节 常量、变量和标识符

一、 标识符

(1) 定义:用来标识变量、常量、函数等的字符序列

  1. 组成:
  2. 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线
  3. C语言的关键字不能用作变量名
  4. 大小写敏感
    (2) 长度:有效长度为32个字符。随系统而异,但至少前8个字符有效
  5. 命名原则:
  6. 变量名和函数名中的英文字母一般用小写,以增加可读性
  7. 见名知意
  8. 不宜混淆 如l与I, o与0

二、 常量

(1) 定义:程序运行时其值不能改变的量(即常数)
(2) 常量的分类 :
(1) 直接常量( 值常量)
 整型常量: 10、15、-10、-30
 实型常量: 12.5、 30.0、-1.5
 字符常量: ‘A’、‘b’、‘c’
 字符串常量: “sum”、“A”、“123”
(2) 符号常量
 用标识符来代表常量。
 其定义格式为:

三、 变量

(1) 定义:程序运行时其值可以被改变的量
(2) 变量的两要素 :变量名 、变量值
(3) 变量的定义格式 :

四、 简单数据类型与表示范围

(1) 整型数据

  1. 整型常量
  1. 十进制整数:由数字0~9和正负号表示 . 如:123,-456,0
  2. 八进制整数:由数字0开头,后跟数字0~7表示.如:0123,011
  3. 十六进制整数:由0x或0X开头,后跟0~9,a~f,A~F表示.如0x123,0Xff
  1. 整数在内存中的表示:在内存中用补码的形式存放。(P36)

  2. 整型变量
    (1) 整型变量的定义

  3. 整数常量的分类
     无符号基本型(unsigned int或unsigned)
     有符号短整型(short int或short)
     无符号短整型(unsigned short int或unsigned short)
     有符号长整型(long int或long)
     无符号长整型(unsigned long int或unsigned long)
     整型常量后加字母l或L,认为它是long int 型常量。比如123L、45l、0XAFL。
     无符号数也可用后缀表示,整型常数的无符号数的后缀为U或u。例如:358u, 0x38Au,235Lu 均为无符号数。
     前缀、后缀可同时使用以表示各种类型的数。如0XA5Lu表示十六进制无符号长整数A5,其十进制为165。
    (2) 实型数据

  4. 实型常量(实数或浮点数)
     十进制小数形式:由数字0~9和小数点组成 . 如:0.0,5.6,-5.
     指数形式:由十进制数,加阶码标志e或E以及阶码(只能为整数,可以带符号)组成.
     其一般形式为:aEn

  5. 实型变量
     单精度实型(float)
    float f = 3.14, g;
    这种定义的变量在内存中占4个字节(32位)的存储单元。
     双精度实型(double)
    double x, y;
    这种定义的变量在内存中占8个字节(64位)的存储单元。
     长双精度实型(long double)
    long double x, y;
    (3) 字符型数据和字符串常量

  6. 字符型常量
    (1) 定义:用单引号括起来的单个普通字符或转义字符
    (2) 字符常量的值:该字符的ASCII码值
    (3) 转义字符:反斜线后面跟一个字符或一个代码值表示
     /、‘、“作为字符常量要使用’’括起来’\’ , ’\’’ , ’\”’
     转义字符用到反斜杠,字符常量用到单引号,字符串用到双引号

  7. 字符串常量
    (1) 定义:用双引号(“”)括起来的字符序列
    (2) 存储:每个字符串尾自动加一个 ‘\0’ 作为字符串结束标志

  8. 字符型变量
     字符型数据类型符是char(字符character)
     在内存中占1个字节(8位)
     字符变量存放字符ASCII码
     char与int数据间可进行算术运算
     存在有符号和无符号之分。默认情况下为有符号
    (4) 简单数据类型的表示范围

第2节 C语言的运算符与表达式

五、 赋值运算符、赋值表达式

六、 强制类型转换符

(1) 自动转换
短长度的数据类型 → 长长度的数据类型
 有符号短长度的数据类型 → 无符号或有符号长长度的数据类型
长长度的数据类型 → 短长度的数据类型
长度相同的数据类型转换
(2) 强制转换
 无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。
例如,(double)a 只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。

七、 算术运算符、算术表达式

“-”负数时右结合

八、 自增自减运算符、符号运算符

(1) 负号运算符(“-”)
(2) 自增、自减运算符++ –

  1. 前置 ++i, --i (先执行i=i+1或i=i-1,再使用i值)
  2. 后置 i++,i-- (先使用i值,再执行i=i+1或i=i-1)
  3. 注意
     5++、–(a+b)都是非法的表达式。
     具有右结合性

九、 算术运算符中数据类型转换规则

十、 位运算符、位运算表达式

(1) 位运算

  1. 左移(<<)
    实现将某变量所对应的二进制数往左移位,溢出的最高位被丢掉,空出的低位用零填补
  2. 右移(>>)
    右移运算实现将某变量所对应的二进制数往右移位,溢出的最低位被丢掉,如果变量是无符号数,空出的高位用零填补,如果变量是有符号数,空出的高位用原来的符号位填补(即负数填1,正数填0)

十一、 逗号运算符、逗号表达式

优先级:优先级最低。
结合性:左结合性 。即逗号表达式的求值顺序是从左向右依此计算用逗号分隔的各表达式的值。
逗号表达式的值:最后一个表达式的值就是整个逗号表达式的值。
用途:常用于循环for语句中。

十二、 sizeof运算符、复合运算符

第3节 运算符的优先级和结合性

CSU 大一上 C语言实验报告 (1)教材第2章编程题第2题:编写计算球体体积的程序。 说明:本题声明适当变量,用户键入数据,运算并输出结果,较简单。 (2)教材第2章编程题第8题:编写程序计算第一、第二、第三月还贷后剩余贷款金额。 说明:本题要求用户输入总额、利率、每月还贷净额,输出每月剩余,对输入输出、类型定义考查。 (3)教材第3章编程题第2题:编写程序实现对用户输入的产品信息进行格式化。 说明:本题考查格式化输入输出、转义字符的运用。 (4)教材第4章编程题第4题:编写程序实现将输入的整数按八进制输出。 说明:本题重在考查简单的运算符和表达式运用。 (5)用户输入一个三位数,输出各位数字之和。 说明:本题重在考查如何从一个整数中取出每一个数字。 (6)教材第5章编程题第5题:编写程序计算用户输入所得额的税金。 说明:本题考查简单的选择结构。 (7)教材第5章编程题第11题:编写程序实现将用户输入的两位数转化为英文。 说明:本题考查switch语句的应用。 (8)教材第6章编程题第8题:编写程序显示单月日历,用户指定这个月的天数和该月起始日是星期几。 说明:本题考查循环结构和选择结构的综合应用,判断是否一个星期最后一天,换行符。 (9)教材第6章编程题第11题:编程序实现利用无穷级数法估计e的值。 说明:本题考查根据公式设计循环结构并实现。 (10)因子之和等于其本身的数称为完数,如28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28为完数。编程序找出2~5000中的完数。 说明:本题利用变量i在2~5000中变化,判断其是否是完数。 (11)教材第7章编程题第12题:编程计算从左至右求值的表达式的值。 说明:本题考查对运算符和操作数的判断。 (12)教材第7章编程题第14题:编程序用牛顿计算法计算浮点数平方根。 说明:本题考查对循环结构的掌握,对表达式的合理运用,对基本类型的理解。 (13)教材第8章编程题第14题:编写程序颠倒句子中单词的顺序。 说明:本题考查对字符数组的处理,对一些循环选择结构的理解。 (14)教材第8章编程题第15题:编写程序实现凯撒密码加密。 说明:本题考查对字符数组的掌握,对字符处理的理解。 (15)编程序实现将用户输入的数字字符串转化为整数输出。 说明:本题考察对字符、整数关系的掌握与理解,对循环结构的熟练运用。 (16)教材第9章编程题第1题:编写选择排序的函数,并递归调用。 说明:本题利用函数简化程序、使得结构更清晰、熟练掌握。 (17)教材第9章编程题第7题:编写计算xn的函数。 说明:本题考查函数定义、调用,并初步考察递归运用。 (18)教材第10章编程题第6题:编写程序实现逆波兰运算。 说明:本题考查对程序每部分的理解、掌握,外部、内部变量,主函数,小函数的编写与应用。初步了解栈的一些实现函数。 (19)编程序找出2~5000中满足条件的数x:x是素数且x的每位数字是素数、每位数字之和是素数,如23、223、2333等。 说明:本题考查函数方法与循环选择结构的综合运用。 (20)教材第11章编程题第3题:用指针变量编写简化一个分数的函数。 说明:本题用来解决函数无法传回传递的实际参数,指针变量。 (21)教材第12章编程题第2题:编写函数读入用户输入的一条消息,检测是否是回文,分别用数组、指针来解决。 说明:本题可以体会到数组与指针的特点,利用指针的便利。 (22)利用指针编写程序,实现从键盘键入字符串,将此字符串从m个字符开始的n个字符复制成另一个字符串。 说明:本题用指针指向字符串,进行跟踪和复制操作。 (23)教材第13章编程题第5题:编写程序实现对输入命令行参数求和。 说明:本题加深对命令行参数的理解、考查知识的综合应用。 (24)教材第16章编程题第5题:用结构变量解决搜索离用户输入时间最近的航班信息,并输出。 说明:本题考查结构与数组的结合运用,有助于理解结构。首先,定义一个存储起飞、到达时间的结构,再定义一个该类型的数组,循环搜索即可。 (25)教材第17章编程题第5题:用指针数组存储键入的字符串,对数组排序。 说明:本题应用动态分配内存、数组排序,考查综合能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值