C语言基础阶段学习总结

一、C语言发展史

1.什么是机器语言

    
  机器语言是低级语言 ,是机器指令的集合。计算机使用由二进制数组成的一串指令来控制计算机的操作,二进制数是由数字0和1组成。 机器语言的特点是:计算机可以直接识别和解读,不需要进行任何形式的翻译。

2.什么是汇编语言

  
  由于机器语言的二进制代码使用起来太费劲,于是在机器语言的基础上发展出了汇编语言,汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。 汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。

3.什么是高级语言

  
  由于汇编语言依赖于硬件体系,并且该语言中的助记符号数量比较多,所以运用起来仍然不够方便,为了使得程序语言能更加贴近人类的自然语言,同时又不依赖于计算机硬件,于是产生了高级语言。其语法形式类似于英文,因为 远离对硬件的直接操作,而且易于理解和使用。其中影响较大的、普遍使用的高级语言有Fortran、ALGOL、Basic、COBOL、PROLOG、C、C++、VC、VB、Delphi、Java等。 C语言程序通过编译转换成机器指令。
  从程序语言的发展过程可以看到,以前的操作系统等系统软件主要是用汇编语言编写的。但由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都不是很好,为了提高可读性和可移植性,人们开始寻找一种语言,这种语言应该既具有高级语言的特性,又不失低级语言的优点。于是,C语言产生了。

4.C语言的特点

  C语言是由UNIX的研制者 Dennis Ritchic(丹尼斯·里奇)Ken Thompson(肯·汤普逊)于1970年在BCPL语言(简称B语言)的基础上发展和完善起来的。20世纪70年代初期, 从AT&T Bell实验室的程序员丹尼斯·里奇第一次把B语言改为C语言。
  C语言是一种 面向过程 的语言,同时具有高级语言和汇编语言的优点。C语言被广泛应用于不同的操作系统,如UNIX、MS-DOS、Microsoft Windows及Linux等。

     

  

5.算法的基本概念

  
概述:
  通常,一个程序包含算法,数据结构、程序设计方法及语言工具和环境这几个方面, 其中算法是核心,算法就是解决某一问题的方法和步骤 通俗的说,算法就是解决‘’做什么”和“如何做”的问题。
  (1)算法与程序设计与数据结构密切相关,是解决一个问题完整的步骤描述,是解决问题的策略、规则和方法。
  
  (2) 正如著名计算机科学家Nkiklaus Wirth(尼克劳斯·沃斯)提出的公式: 数据结构+算法=程序
算法的特性:算法是为了解决某一特定类型的问题而设计的一个实现过程,它具有以下特性:
(1)有穷性:是指一个算法必须在执行有限的步骤后结束,并且每一步都在有限时间内完成,不能无限的执行下去。 (类比线段)
        !例如要编写一个由大到小累加的程序,这时要注意一定要设置一个整数的最上限,若没有这个最上限,程序将无限制的运行下去,也就是常说的死循环。
(2)确定性
         算法的每一个补助都应当有确切的定义,对于每一个过程都不能有二义性。
(3)可行性
         算法中的每一步都应当有效的运行,也就是说算法是可执行的,并要求最终能得到正确的结果。
(4)有输入  
         一个算法可以有一个或多个输入,也可以没有输入,输入就是在执行算法时有必要从外界获取的,如算法所需的初始量等一些信息。
(5)有输出
        一个算法有一个或多个输出,输出就是算法最终所求的结果。如果一个程序运行下来没有任何结果,那么这个程序本身也就失去了意义。
衡量算法的优劣:
(1)正确性:所写的算法能满足具体问题的要求。
(2)可读性:算法被写好之后,该算法能别理解的难易程度。 
(3)健壮性 :是指当输入的数据非法时,算法也会做出相应的判断,而不会因为输入的错误造成瘫痪。
(4)时间复杂度与空间复杂度:时间复杂度就是算法运行所需要的时间,空间复杂度是指算法运
行所需的存储空间的多少。

二、C语言基础

1.关键字

在C语言程序中,关键字是指被赋予特定意义的一些单词, 不可以把这些单词作为标识符来使用 ,C语言一共有32个关键字,具体如下:
关键字(Keywords) 是由 C 语言规定的具有特定意义的字符串,通常也称为保留字。根据用途,可分为四类:
第一类:变量数据类型关键字:14 个
char: 单字节整型数或字符型数据
short:短整型数
int:基本整型数
long:长整型数
float:单精度浮点型数
double:双精度浮点型数
signed:有符号数
unsigned:无符号数数据
void:无数据类型、空数据类型
volatile:该变量在程序执行中可被隐含的改变
typedef:重新进行数据类型定义
struct:结构类型数据
enum:枚举类型数据
union:联合类型数据
第二类:9 条基本语句用到的关键字:12 个
if: 构成选择语句
else: 构成选择语句
switch: 构成选择语句
case: 构成选择语句
break: 跳出最内层循环
default: 构成选择语句
for: 构成循环语句
do:构成循环语句
while:构成循环语句
continue:转向下一次循环
goto:无条件转移语句
return:函数返回
第三类:存储类型关键字:5 个
const: 在程序执行过程中不可更改的常量值
extern: 在其它程序模块中说明了的全局变量
static: 静态变量
register: 使用 CPU 内部寄存器的变量
auto: 用以说明局部变量,缺省值为此类型变量
第四类:运算符关键字:1 个
sizeof: 运算符,计算表达式或数据类型占用的,内存的字节数

2.标识符

标识符可以简单的理解为一个名字,用来标识变量名、常量名、函数名以及数组名等。
在C语言中标识符可以设定成容易理解的名字,但要遵循一定的规则,具体规则如下:
(1)所有C语言标识符必须以字母或下划线开头,而不能以数字或者符号开头。
(2)在设定标识符时,除了开头外,其他位置都可以由字母、下划线或数字组成。
(3)英文字母的大小写代表不同的标识符,也就是说,在C语言中是区分大小写字母的
(4)标识符不能是关键字。关键字是进行定义一种类型使用的特殊字符,不能使用关键字作为标识符。
(5)标识符的命名最好具有相关的含义。(见名知意)
(6)***ANSI规定,标识符可以为任意长度,但是外部名必须至少能由前6个字符唯一的区分,并且不区分大小写。这是因为某些编译程序(IBM PC的 MS C)仅能识别前6个字符。
!!!常见错误
         (1)标识符大小写书写错误,在写标识符的时候要注意字母大小写的区分。(2)标点符号中英文状态忘记切换 ,在书写代码时应该采用英文半角输入法输入。

3.常量

概述:C语言的常量,就是其值在程序运行过程中不可以改变的数值。例如(身份证号码)
常量的分类:
(1)数值型常量,包括字符型常量和实型常量。
(2)字符型常量。
(3)符号常量。

3.1 整型常量

整型常量就是指直接使用的整型常数,例如:0,-100,200等,都是整型常数。
整型常量可以是长整型、短整型、符号整型和无符号整型,这几种整数类型就像容积大小不同的烧杯,虽然用法一样,但在不同场景就用不同容量的烧杯。
数据类型
长度
取值范围
unsigned short
16 位
0~65535
[signed] short
16 位
-32768~32767
unsigned int
32 位
0~4294967295
[signed] int
32 位
-2147483648~2147483647
[signed] long
64 位
-9223372036854775808~9223372036854775807
在编写整型常量时,可以在常量的后面加上符号L或者U进行修饰,L表示该常量是长整型,U表示该常量为无符号整型,例如:
LongNum= 1000L;                  /*L表示长整型*/
UnsignLongNum=500U;              /*U表示无符号整型*/
注:U或L可以使用大写,也可使用小写。
概述:字符型常量与之前的常量有所不同,即要对其字符型常量使用指定的定界符进行限制。字符型常量分为两种,一种是字符常量,另一种是字符串常量。

3.2 字符常量

使用一对英文单引号括起来的一个字符,就是字符常量。例如:'A'、'#'、'b'、'l' 等。
注意:(1)字符常量中只能包括一个字符,不是字符串。例如'A'是正确的,'AB'是错误的。
          (2)字符常量是区分大小写的。
          (3)这对单引号是定界符,不属于字符常量的一部分。
          (4)给char类型赋值的时候不能使用三个单引号,这样写编译器会不知道从什么地方开始,什么地方结束。例如:
char Cchar='A''             /*错误使用三个单引号为字符型赋值*/

3.3 字符串常量

字符串常量是 用一组英文双引号括起来 的若干字符序列,例如:''ABC''、''abc''、''1314''、''您好''等都是正确的字符串常量。
注意:(1)如果在字符串中一个字符都没有,将其称作空字符串,此时字符串的长度为0,例如:""""。
           (2)C语言中存储字符串常量时,系统会在字符串的末尾自动加一个‘’\0‘’作为字符串的结束标志。例如:ABC\0。
字符常量和字符串常量的区别:
(1)定界符的使用不同:字符串使用单引号。字符串常量使用双引号。
(2)长度不同。字符常量只能有一个字符,那么字符常量的长度为1。字符串常量的长度也可以是0,但是需要注意的是,即使字符串常量的字符数量只有1个,长度却不是1。如字符串常量H,其长度为2,因为系统自动增加了字符串的结束标志\0。
(3)存储的方式不同,在字符常量中存储的是字符的ASCII码值,如''A''等于65,''a''为97,而在字符串常量中,不仅要存储有效的字符,还有存储结尾处的结束标志‘\0’。

3.4 计算机中的数据表示

1.八进制整数
  使用的数据表达形式是八进制,需要在常数前加上0进行修饰,八进制所包含的数字是0~7之间。
OctalNumber1=0520;    /*在常数前面加上一个0代表八进制*/
2.十六进制整数
  常量前面使用0x作为前缀(注意:0x中的是数字0,不是字母O),表示该常量是用十进制表示的。十六进制中包含数字0~9,字母A~F或a~f。
HexNumber1=0x460;
HexNumber2=0x3ba4;       /*加上前缀0x表示常量为十六进制*/
3.十进制整数
  十进制是不需要在常量前面添加前缀的。十进制中所包含的数字为0~9。
Algorisnumber1=569;
Algorisnumber2=285;

3.4.1原码、反码和补码

(1)整型数据都是以二进制的形式存放在计算机的内存之中,其数值是以补码的形式进行表示的。
(2)正数的补码=正数的原码=正数的反码
(3)负数的补码是将该数绝对值的二进制形式按位取反再加1。
举例:11 在内存中的表示    
                                                                  
0
0
0
0
1
0
1
1
 -11在内存中的表示(求补码)
(1)求其绝对值 
0
0
0
0
1
0
1
1
(2)取反↓  
1
1
1
1
0
1
0
0
(3)再加1
1
1
1
1
0
1
0
1
(对于有符号整数,其在内存中存放的最左边的一位表示符号位,若0表示该数为正,1表示该数为负)

4.变量

变量是指在程序运行时其值可以改变的量。变量的功能就是存储数据。

5.数据类型

6.三种基本结构

1966年,计算机科学家Bohm和Jacopini为了提高算法的质量,经过研究提出了3种基本结构,即 顺序结构、选择结构和循环结构,因为任何一个算法都可由这3种基本结构构成。这3种基本结构之间可以并列,可以相互包含,但是不允许交叉,不允许从一个结构直接转到另一个结构的内部。

1)顺序结构

    顺序结构是简单的线性结构,在顺序结构的程序中,每个操作是按照它们出现的 先→后顺序执行的。
    结构特点:在执行完一个操作后,接着执行下一个操作,这个结构中只有 一个入口一个出口

 

(2)选择结构

  
  选择结构也称之为分支结构,在选择结构中必须包含一个判断框
  有两种结构特点: 1.判断给定的条件P是否成立,成立则执行A语句,否则执行B语句。 2.判断给定的条件P是否成立,成立则执行A语句, 否则什么也不做

 

 

(3)循环结构

  在循环结构中,反复的执行一系列操作,直到条件不成立时才终止循环,按照判断条件出现的位置,可将循环结构分为当型循环结构直到型循环结构

  当型循环是先判断条件P是否成立,如果成立,后执行A语句;执行完A语句后,再判断条件P是否成立,如果成立,接着再执行A语句;如此反复,直到条件P不成立为止,此时不执行A语句,跳出循环。

  

  直到型循环是先执行A语句,然后判断条件P是否成立,如果条件P成立则再执行A语句,然后判断条件P是否成立,如果成立,接着再执行A语句;如此反复,直到条件P不成立,此时不执行A语句,跳出循环。

 

三、学习心得

学习C语言的过程是一个循序渐进的过程,经过多种途径去了解所编写代码的意义,是非常重要的。很多人在学习C语言的过程中会遇到很多问题,咨询了很多老师,得到的答案是:只有参与到其中用多种方法去解决问题,善于总结,勤于思考,认真实践,再加以时日。才能提高能力。回顾这一阶段的学习,学到比较好用的方法有画图分析,代码验证、替换其中的某一数值进行测试等,只有每日精进,才能体会到学习编程的乐趣。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值