C语言是古老而长青的编程语言,它具备了现代程序设计的基础要求,它的语法是很多其他编程语言的基础,在系统程序、嵌入式系统等领域依然是无可替代的编程语言,在各类编程语言排行榜上常年占据前两名的位置。 本课程是零基础的编程入门课,是后续的操作系统、编译原理、体系结构等课程的基石
1. 程序设计与C语言
编程语言就是用来描述我们要计算机如何做事情的语言。
1.1. 编程语言和计算机
计算机里的CPU可以直接运行人类编写的程序吗?为什么说编程语言不是和计算机交谈的语言?
不可以,计算机只可以读懂二进制语言,人类编写的语言需经过程序翻译成计算机语言,计算机才可以运行。
1.2. 编译执行与解释执行
编译
:借助一个程序,就像一个翻译,把程序翻译成计算机真正能懂的语言—机器语言—写的程序,然后这个机器语言写的程序就能直接执行了。
解释
:借助一个程序,程序能试图理解程序,按照要求执行。
有的编程语言,源代码经过编译后形成目标代码,但是这样的目标代码不能直接在CPU上执行,而是需要由一个仿真器程序来解释执行。这样的执行方式称为解释执行。
语言本身没有解释/编译之分
,我们不能说它是编译型语言或者解释型语言,只是编译或者解释是我们常用的方式。如Java是需要编译的,但是没有直接编译成机器语言,而是编译成字节码,然后在Java虚拟机上用解释的方式执行字节码。
1.3. C语言
编程语言排名: https://www.tiobe.com/tiobe-index//
1.3.1. 介绍
C语言在工业界有重要的地位,在很多领域无可替代,几乎所有和硬件打交道的地方都得要用C语言。
现代的编程语言在语法上的差异很小,几乎都是C-like语言
C语言是伴随着Unix一起起来的,作为一个有着40多年历史的语言,它是当代很多新兴语言的基础参考体系,但是它也无可避免地带着1970年代的时代烙印。今天的编程语言,基本上都是一家主持的,标准统一,编译运行环境单纯。而C语言只有所谓的标准,每个实现C语言编译器和运行库的厂家都在往里面加入自己的方言。
1.3.2. 版本
1989年ANSI发布了一个标准——ANSI C
1990年ISO接受了ANSI的标准——C89
C的标准在1995年和1999年两次更新——C95和C99
所有当代编译器支持C99
1.3.3. 编译软件
在线开发环境:https://clin.icourse163.org/
Windows:Dev C++ 5.11、Dev C++ 5.10、Code::Blocks
macOS:Xcode、Sublime Text
1.3.4. GCC
听到有人说他学的是Visual C,有人学的是Turbo C,不是我们学的什么Dev C,是他们的比我们的高级吗?还有GCC到底是什么?
不是,GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。 GCC是自由软件过程发展中的著名例子,由自由软件基金会以GPL协议发布。GCC是一种编译器,visual C也是一种编译器上面编译运行的C语言。Turbo C,Dev C等都分别指的是在不同的编译器上运行的C语言,其本质是相同的,但具体的语法规则会有细微的不同。都是不同的c语言的编译器而已,没有更高级。
2. 计算
2.1. 变量定义
变量需要一个名字,变量的名字是一种“标识符”,意思是它是用来识别这个和那个的不同的名字。
标识符的构造原则是只能由字母,数字和下划线
组成,数字不可以出现在第一个位置上,C语言的关键字不可以用来做为标识符。
2.2. 变量初始化
<类型名称> <变量名称> = <初始值>;
int price = 0;
定义了一个变量,变量的名字是price,类型是int,初始值是0。
这里的”=”是一个赋值运算符,表示将“=”右边的值赋给左边的变量。
跟数学不同,数学中a=b表示关系,a和b值一样,而在程序设计中,a=b表示要求计算机做一个动作:将b赋值给a。关系是静态的,而动作是动态的。在数学中,a=b等价,而在程序设计中,两者意思完全相反。
2.3. QA
给定:int a,b; scanf(“%d %d”, &a, &b); 则以下哪些输入方式是正确的?
A. 1 2
B. 1,2
C. 1(回车)2
D. 1、2
【AC】
3. 数组运算
4. 指针与字符串
5. 编程练习
5.1. 水仙花数
N位正整数,它的每个位的数字的N次幂之和等于它本身。例如:153=$1^3$+$5^3$+$3^3$,求所有N位水仙花数
输入
3
输出
153
370
371
407
1 |
|
5.2. 打印九九口诀表
1 | 1*1=1 |
要求对任意给定的1位正整数N,输出从1*1
到N*N
的部分口诀表。等号右边数字占4位,左对齐。
1 | /* |
5.3. 前N项和
多项式前N项和,每一项分子是前一项分子分母之和,分母是前一项的分子
2/1+3/2+5/3+8/5…
输入
20
输出
32.66
1 |
|