21天学通C语言-学习笔记(1)

C语言与程序概述

C语言是现在世界上应用最广泛、最受欢迎的计算机语言之一。C语言已经经历了30多年的发展,并且仍在继续进步。

1.1 C语言的历史沿革

本节将介绍C语言的诞生、标准化过程及重要特点:

  1. C语言的诞生 :A语言——B语言——C语言
  2. C语言的发展历程 :K&R C标准——C89或ANSI C标准——C99标准(本学习遵循C99标准);
  3. C语言的特点
    ▪ 使用方便(32个关键字);
    ▪ 结构化编程(函数,控制语句);
    ▪ C语言是中级语言(结合了低级语言的直接访问物理内存的优点,和高级语言的便于结构化编程的优点);
    ▪ 执行效率高(对代码位级操作);
    ▪ C程序可移植性好(不同计算机和不同操作系统)。
  4. 第一个C程序——Hello,world!
    这个程序的功能是向屏幕打印一个字符串“Hello,world!”

范例1-1

#include <studio.h>

int main(void){                                   /*main函数*/
    printf("Hello,world!\n");                    /*输出"Hello,world!"*/
    return 0;
}

【运行结果】
在这里插入图片描述
【代码解析】这是一个简单的C语言源程序,它必须在一个编译环境中编译链接后才能运行。所有的C程序都有一个main函数,即程序第3行。main函数是程序的入口,程序运行时,先进入main函数,然后依次执行main函数体中的语句。在范例1-1中,进入main函数,先执行第4行语句调用printf函数,输出字符串“Hello,world!”;再执行第5行return语句,return语句会导致函数结束,程序随之结束。

1.2 数据结构与算法

一般来说,程序由 数据结构 和 算法 两个部分组成。数据结构是一个个的实体,而算法是将它们联系在一起的各种手段。

1.2.1 什么是数据结构

数据结构是程序存储、组织数据的方式。

数据结构描述了数据元素之间的逻辑关系,数据必须存储在内存中。数据在内存中的存储结构是数据结构的实现形式,是数据结构在内存中的物理表示。数据结构是程序中处理数据的基本单位,在程序中作为一个整体来使用。

数据结构1——数组结构

数组是一种可以存放数据的容器,其数据在内存中连续存放,访问数组时,可 以直接使用数组名加下标的形式,比如一数组存有42名学生的信息,数组名是stuArray,数组序号从0开始排。

若要访问第三个学生的信息,只需使用stuArray[[2]]即可。这种数据结构适用于频繁读取数据的情况。

数据结构2——链表结构

链表也是一种可以存放数据的容器,但其数据在内存中分散存放的。链表中的相邻元素间存在一些关系,这种关系有很多种形式,最典型的一种是每个链表元素都包含下一个元素的地址信息,通过该元素的信息就可以查找到下一个元素。

若同样访问第三个同学的信息,需要先访问第一个同学的信息,从中获得第二个同学的地址信息,然后访问第二个同学的内存,从中获得第三个同学的地址信息,之后才能访问第三个同学的信息。也就是说,在数组中访问一个元素,必须先按顺序从第一个元素往后依次访问,直至得到要访问的元素。这种数据结构适用于删除数据的操作。

1.2.2 什么是算法

算法就是解决一个问题的完整的步骤描述,是指完成一个任务准确而完整的步骤描述。

算法的优劣有两个判别标准:
▪ 空间复杂度——执行算法需要占用的内存空间(代价)
▪ 时间复杂度——执行算法需要消耗的时间资源(效率)

1.3 程序设计概述

结构化程序设计之设计方法——自顶向下、逐步细化,同时严格使用三种基本控制结构(顺序结构、选择结构和循环结构)来构造程序。

▪ 顺序结构:按照它们出现的先后顺序执行的。
▪ 选择结构:程序中存在一些分支,程序通过对一些条件的判断选择执行的分支。
▪ 循环结构:反复执行一系列操作,直到条件为假时跳出。

算法描述方法——算法语言、图形描述、形式语言

▪ 算法语言:有伪代码、各种程序设计语言、计算机语言等;
▪ 图形描述:有流程图、N-S图,图的描述应与算法语言的描述对应;
▪ 形式语言:用数学的方法,可以避免自然语言的二义性。

伪代码:介于程序语言和自然语言之间的算法描述。在编程时,当设计好一个算法后,都要先将它们使用伪代码描述出来,再使用程序语言来实现,其作用就像写文章要先列好提纲一样。

程序流程图:算法的图形描述方式。
在这里插入图片描述
N-S流程图:按照结构化设计的思想,N-S流程图为三种基本结构设计了特殊的结构图,并以它们为基础来描述其余所有的算法。

练习:使用伪代码描述使用冒泡排序法将序列从混乱到达排序的算法,并画出其程序流程图或N-S流程图。

伪代码:

算法开始:
		设i值为N-1;
		当i>0
		{
               设j值为0;
               当j<1
               {
                     如果array[j] > array[j+1]
                     {
                            交换第j个元素和第j+1个元素;
                     }
                     j自增1;
               }
               i自减1;
         }
算法结束

在这里插入图片描述
在这里插入图片描述

小结

本笔记介绍了C语言的历史,包括C语言的诞生和C语言的标准化过程。同时,为学习C语言预备了一些基本知识,包括数据结构、算法和结构化程序设计等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值