我们可以下载C-free程序对C语言进行学习。
放在C盘,否则会出现问题。
用户名:tianfang
电子邮件:quart@163.com
注册码:2NnUqd3shO2agta0xNjcusfK1LXO
下载过后会需要通行证,如上。
2.1编写简单的程序
首先编写一段简单的程序:
#include<stdio.h>
int main(void)
{
printf("Hello world\n");
return 0;
}
第一行#include <stdio.h>是必不可少的,它包含了C语言标准输入\输出库的相关信息。
程序的可执行代码都在main函数中,这个函数代表主程序。
main函数的第一行代码是能够在屏幕上打出相应信息的。
prinf函数来自标准输入输出库,可以产生完美的格式化输出。
代码\n告诉prinf函数执行完消息显示要进行换行操作。
第二行 return 0
表明程序终止时会向操作系统返回0.
2.1.1 编译和链接
C语言是高级语言,而计算机识别的是机器语言。
对于C语言程序到计算机中具体运行,会包含下列3个步骤
· 预处理
首先程序被交付给预处理器, 它执行以#开头的命令(指令)。预处理可以给程序添加内容,也可以进行修改。
· 编译
修改后的程序可以进入编译器了,然后编译器会把程序翻译成机器指令(目标代码),但是现在还是不可以运行的。
· 链接
链接器把由编译器产生的目标代码和所需的其他附加代码整合在一起,最后才最终产生了完全可执行的程序。
2.2 简单程序的一般形式
简单程序一般具有如下形式:
指令
int main(void)
{
语句
}
在这里,{}用来标识main函数的开始和结尾,事实上这是C语言中函数和各种结构的常用标识,目前可以记住为可。
2.2.1 指令
预处理执行的命令是指令。到14、15章会详细说明,现在只需要关注#include指令。
对于刚刚的程序#include<stdio.h>,这条指令说明,在编译前把<stdio.h>中的信息包含到程序中。
<stdio.h>包含了关于C标准输入\输出库的信息。C语言有大量类似的头。每个头都包含包含一些标准库的内容。
这段程序包含<stdio.h>的原因是:C语言没有内置的读写命令,这些命令由标准库中的函数才能实现。
所有指令都是'#'开头的,这个字符可以把C程序中的指令和其他代码区分开来。
一条指令默认只占一行,而且结尾没有分号(语句有)或其他特殊标记。
2.2.2 函数
事实上,C语言就是函数的集合。
函数分为两类,一类是程序员编写,一类是作为C语言实现的一部分提供的函数,也被称为库函数。
函数在数学中:
f(x) = x+1
g(y,z)=y^2-z^2
C语言的函数是在数学定义扩充了使用,在C语言中的函数仅仅是一系列嘴和在一起被赋予了名字语句。某些函数计算数值,某些函数不这样做。计算数值的函数用return来指定返回的值。
例如对参数进行加1操作的函数可以执行语句 return x + 1;
C语言可以有多个函数但是只有main函数是必须有的。
int main(void)
{
printf("Hello world\n");
return 0;
}
main函数前面的int表示该函数会返回一个整数值,圆括号的void表示这个函数没有参数。
main函数通常有的return 0会向操作系统返回一个状态码(表示成功执行)
当然return 0;没有写程序依然可以终止。
2.2.3 语句
语句是程序运行时执行的命令。
上面的程序只用到了两个语句,一个是返回(return)语句,另一个是函数调用语句(要求某个函数执行分派给它的任务称为调用这个函数,这里的print函数的任务就是输出一段话。)
C语言规定每条语句都要以分号结尾,但是指令可以不用(比如#include<stdio.h>)
2.2.4 显示字符串
printf是一个功能强大的函数。我们目前只是用它显示了一条字符串字面量(用一对双引号包围的一系列字符)。当显示的时候,双引号并不会被显示。同时显示结束的时候,光标不会换到下一行。为了让其跳到下一行,必须加入\n(换行符)。写了\n表示终止当前行,然后把后续的输出转到下一行。
2.3 注释
注释就是为方便识别这个程序的相关信息和作者以及用图等。
/*......用途*/
/*是开头,*/是结尾。
有多种用法,/********
* *
* *
*********/
这种被叫做盒型注释。
同时直接用//.......BLABLA也可以有注释的功能。
不过//只能用于一行,本行中//以后的都会变成注释。
注释只是用来看的。程序编译的时候会忽略它(实际上是删去)
2.4 变量和赋值
大多数程序在产生输出之前会需要执行一系列的计算,所以需要在程序执行过程中有一种临时存储数据的方法。我们称C语言中的这类存储单元为变量。
2.4.1 类型
每个变量都必须有一个类型。类型用来说明变量所存储的数据的种类。现在我们只考虑两种类型 int类型和float类型(double是范围和精度更大的float)。
int存放的是整数,而float,double可以存放带小数点的数。而且float是会有浮点数的误差的。比如float存储0.1,在以后会发现变成了0.099999999999999999987。
2.4.2 声明
在使用变量以前必须对其进行声明(为编译器所做的描述)。
格式为:变量的类型+变量的名字(由我们决定)
int height;定义一个整数,名字为height高度。
同时如果几个变量的类型相同,可以合并声明--->int a,b,c;
当main函数包含声明的时候,必须放在最前面。
int main()
{
声明
语句
}
因为你在语句中使用变量之前,必须有对这个或这些变量的声明。
2.4.3 赋值
变量通过赋值的方式获得值。例如:
height = 8;
length = 12;
width = 10;
8、10、12我们都称之为常量。
变量在赋值以前必须声明:
int a;
a=8;
如果这样是错误的:
a=8;
int a;
赋给float型变量通常都带有小数点。
profit = 2.8;
2.4.4 显示变量的值
printf("Height : %d",height);
占位符%d用来指明在显示过程中变量height的显示位置。
%d仅限于int型变量。如果要使用float,需要用%f来代替%d。
默认情况下%f会显示出小数点后6位数字。