C程序设计学习笔记1

第一章 程序设计基础

1.1 计算机系统和工作原理

1.1.1 计算机系统的组成
组成
一个完整的计算机系统由硬件系统和软件系统两部分组成,硬件是基础,软件是灵魂。
现代计算机系统的基本结构和基本工作原理最初由冯诺依曼提出,以此为基础的计算机称为冯诺依曼计算机,他的主要特点由以下两点:
1:计算机由5个基本部分组成,分别是控制器、运算器、存储器、输入设备、输出设备。当计算机在工作时,有两种信息在流动:控制流、数据流。
2:采用的是”存储程序“思想,程序与数据均以二进制形式表示,以相同方式存放在存储器中,按地址寻访。
1.1.2 指令和程序
指令
指令是计算机执行某种操作的机器命令,它可以被计算机硬件直接识别和执行,计算机指令常用二进制代码表示,一条指令通常由操作码+操作数两个部分组成。
操作码指示该指令要完成的具体操作,如取数、加法、移位、比较等,操作数指明操作对象的数据或所在的内存单元地址。
一台计算机的所有指令的集合称为指令系统。
计算机的工作过程实际上是快速执行指令的过程,指令的执行过程分为以下3个过程:取指令-分析指令-执行指令。
为了提高计算机执行指令的速度,现代i计算机普遍采用指令流水线技术来并行执行指令。
程序
计算机程序是指能完成一定功能的指令的有序集合。运行一个程序就是依次执行每条指令的过程,每条指令的功能是有限的。
计算机程序是数据流和控制流的工作过程。数据流是对数据形式的表示和描述,即程序所用的数据的数据结构和组织形式,控制流是对数据所进行的操作的描述,即指定操作的步骤和方法,称为算法,因此一个程序包含数据结构和算法两部分,数据是对象,算法是灵魂。
软件
软件是指程序、程序运行所需要的数据以及开发、使用和维护这些程序需要的文档的集合。
1.2 信息的表示与存储
1.2.1 计算机的数字系统
二进制:B
八进制:D
十进制:O
十六进制:H
1.2.2 进位计数制的转换
十进制转换为r进制数
例1.1 将十进制数(123.45)D转换为二进制数
例1.2 将十进制数(12345)D转换为二进制数
例1.3 将十进制数(123)转换为二进制数
r进制数转换为十进制数
二进制、八进制、十六进制数相互转换
1.2.3 数值数据的表示
整数在计算机中的表示
最高位为符号位,0正1负
字长:在计算机中,作为整体参与运算、处理、和传送的一串二进制的位数称为字长。
一个数在计算机中的表示形式称为机器数。
原码、反码、补码:
整数的原码、反码、补码都一样。
负数的反码是原码的符号位不变,其余位按位取反,补码是反码的符号位不变,反码的数值位加1.
例1.4 计算-9+9的值
例1.5 计算-9+8的值
例1.6 计算66+65的值
例1.7 求补码10000000对应的十进制数
无符号整数
例1.8 计算无符号整数65+66的值
整数在计算机中是以补码的形式存在的
浮点数在计算机中的表示
IEEE754标准
例1.9 求单精度浮点数50.0在计算机中的表示
例1.10 求单精度浮点数-2.5在计算机中的表示
1.2.4 非数值数据的表示
西文字符的表示
西文字符包括英文字符、数字、各种符号,以ASC码存储,一共有128个字符、
0:48
A:65
a:97
汉字字符
多媒体信息
二进制编码形式
1.3 程序设计语言
1.3.1 机器语言与汇编语言
程序设计语言是用来编写计算机程序的工具,只有用机器语言编写的程序才能直接被计算机执行,其他任何语言编写的程序都需要翻译协成机器语言。
机器语言是由二进制0和1由一定规则组成的、能被计算机直接理解和执行的指令集合。机器语言中的每一条语句其实是一条指令。
机器语言和汇编语言是面向机器的。
1.3.2 高级语言
高级语言是一种接近人的自然语言和数学公式的程序设计语言。
高级语言翻译成机器语言有两种方式
编译:用编译器编译链接形成可执行程序
解释:用解释器逐句翻译,解释一句,执行一句。
1.4 程序设计概述
1.4.1 计算机问题求解的基本特点
确定数学模型和数据结构
算法分析和描述
编写程序
执行测试
1.4.2 算法的定义与特性
算法是为了求解问题而采取的确定的按照一定次序进行的操作步骤。
有穷性、确定性、有效性、0个或一个或多个输入、一个或多个输出
1.4.3 算法的表示
用自然语言表示算法
用流程图表示算法
流程图有顺序结构、选择结构、循环结构
用N-S图表示算法
用伪代码表示算法
UML:统一建模语言
例1.11
1.4.4 结构化的程序设计
结构化程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。
结构化程序设计的基本思想是:
1.自顶向下、逐步细化
2.模块化设计
3.使用三种基本结构
结构化程序设计特点是代码和数据分离。
1.4.5 面向对象的程序设计
结构化程序设计方法作为面向过程的设计方法,将解决问题的重点放在描述实现过程的细节上,使得数据和对数据的操作分离,淡化了数据的主题地位。
面向对象的程序设计方法吸收了结构化程序设计的优点,以现实世界的实体作为对象,每个对象都有自身的属性和行为特征,多个相同类型的对象的共同特性的抽象描述形成类。
1.4.6 程序设计技术前沿
并行程序设计
组件技术
面向切面编程
1.5 C语言概述
1.5.1 C语言的历史与特点

1.5.2 C语言的基本词法
C语言字符集:大写字母、小写字母、数字字符、符号、空白符
空白符是作为C语言语法间隔的符号,连续多个空白符和一个空白符的效果是一样的
三元符
关键字又称保留字,是C语言规定的特有的含义的词语。
标识符
与自然语言类似,C语言使用各种词语描述名字元素,除关键字外,所有来标识的字符序列称为标识符。
标识符规则:
只能由大小写字母、数字、下划线组成,第一个字符必须是字母或者是下划线
字母区分大小写
不能是C语言的关键字
注意长度
标识符先声明定义后使用
1.5.3 简单的C程序

#include<stdio.h>

int main()
{
	printf("hello world!\n");
	return 0;
}

第一行是预处理命令
第二行是C程序的启动函数,称为主函数,每个程序都是从启动函数开始执行的
main函数标准写法为

int main()
{
	...
	return 0;
}

{}大括号内为函数体,里面是程序代码,每句需要以;结尾。
例1.13 编写求两个数之和的程序。

#include<stdio.h>

int main()
{
	int a,b;
	printf("请输入两个数:");
	scanf("%d%d",&a,&b);//为取址符
	printf("a+b=%d",a+b);
	return 0;
}

例1.14 编写求a-b开根的程序

#include<stdio.h>
#include<math.h>

double root(double a,double b);
int main()
{
	int a,b;
	printf("请输入a和b");
	scanf("%lf%lf",&s.&b);
	printf("a-b的根是%lf",root(a,b));
	return 0;
}
double root(double a,double b)
{
	if((a<b) return 0;
	else return sqrt(a-b);
}

1.5.4 C程序基本结构
C程序是由若干函数构成的,函数是程序的基本单位。
函数结构
函数=函数头+函数体,一般格式为
返回类型 函数名(形参列表)
{
//函数体
声明部分(在前);
执行语句(在后);
}
返回类型省略则为整型,函数可以没有参数,但()不能省略
文件结构
C源程序文件包括预处理命令和若干个函数。
一个程序有且只有一个主函数,程序执行从主函数开始,随主函数结束而结束。主函数的函数顺序不限。
程序结构
程序是函数的集合,一个程序可以写在一个文件里面也可以写在好几个文件里面。

1.5.5 C程序开发步骤
问题分析,程序设计,编辑源程序,编译链接,运行调试
1.5.6 C程序编码风格

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pekingkenny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值