C语言
C语言程序与设计
第一章 程序设计的基本概念
历史:1972-1973 贝尔实验室在B语言的基础上设计出了C语言
1989年(C89)1999年(C99)标准不一,但都可行(C99为C89标准的扩充)
C语言特点
- 运算符丰富880
- 数据类型丰富
- 用函数作为程序的模块单位
- 程序可移植性好
- 允许直接访问物理地址
- 可以直接硬件进行操作
计算机程序
- 一组计算机能识别和执行的命令
- 一个特定的指令序列用来完成一定的功能
- 软件
- 与计算机操作有关的计算机程序,规则,以及可能有的文件,文档及数据。
- 软件
语言的分类
- 机器语言
- 二进制代码的机器指令
- 汇编语言
- 符号语言,汇编指令。英文字母与数字
- 高级语言
- 自然语言,数学语言 源程序通过编译程序转换为目标程序
C
C语言的编译
字符的表示
第一个C语言程序
#include <stdio.h> //编译预处理指令
int mian(){ //定义主函数
printf("this is a c program.\n");//输出函数
return 0; // 函数执行完毕后返回函数值0
}
# include <stdio.h>
int mian() //C99
void mian() //C89
mian() //C99
{
printf(""tset\n")
} //单行注释,注释不参与编译
/*多行注释
这是一个多行注释*/
/ 斜杠
\ 反斜杠
C语言的程序结构

- 一个程序由一个或者多个源程序文件组成
- 源程序文件
- 预处理命令
- 全局声明
- 函数定义
2.函数是C程序的主要组成部分
- 一个C语言程序是有一个或多个函数组成的其中必须包含唯一一个mian函数
- 函数中被调用的函数可以是系统提供的库函数,也可以是用户根据自己编制设计的函数
3.程序总是从mian函数开始执行
4.程序中的操作是由函数中的C语句完成的
5.在每个数据声明和语句的最后必须要有一个分号
6.C语言本身不提供输入输出语句,输入输出操作由函数完成
7.程序应当适当注释
- 算法的特性
- 有穷性:一个算法应该包含有限的操作步骤,而不是无限的
- 确定性:算法中的每一个步骤都应该是确定的,不能模糊
- 有零个或多个输入:输入指在执行算法时需要从外界取得必要的信息
- 有一个或多个输出:算法的目的是为了求解,“解”就是输出
- 有效性:算法中的每一个步骤都能有效执行,并得到确定的结果
第二章 C程序的初步知识
C语言执行顺序
- 编辑
- 在**.C**源文件中编辑
- 编译
- 转换成**.OBJ**文件交给计算机编译
- 链接
- 库函数+OBJ 生成 .EXE文件
- 执行
- 执行EXE文件
函数是C程序的主要组成部分
C语言的基本结构
1 输入输出
输入输出是以计算机为主体而言的
2 C语言本身不提供输入输出语句输入输出功能由C标准函数库中的函数来实现的
**printf(**格式控制,输出列表)
printf("i=%d,c=%c\n",i,c)
格式控制是用双引号括起来的一个字符串,称为格式控制字符,简称格式字符串
- 格式声明格式声明由%和格式字符组成。作用是将字符格式化输出
- 转义字符
- 普通字符。 输出时原样输出
输出列表是程序需要的一些数据可以是常量,变量或表达
scanf(格式控制,地址列表)
scanf("a=%f,b=%f,c=%f",&a,&b,&c) // & 取地址运算符
格式控制 是用双括号括起来的一个字符串,含义同printf函数。
- 格式声明 以%开始,以一个格式字符结束,中间可以插入附加字符
- 普通字符 原样输出
地址列表 是由若干个地址组成的列表,可以是变量的地址,或字符串的首地址
3还在程序文件的开头用预处理(编译前处理)指令—#include把有关头文件放在本程序中
//三种形式
#include"c:\cpp\inulude\myfile.h"//按指定路径查找文件
#include"myfile.h" //源程序文件所在目录
#include<myfile.h> //C编译系统指定的include目录
常量,变量,标识符
标识符就是一个对象的名字,用于标识变量,符号常量,函数,数组,类型等
命名规则
- 只能由字母,数字和下划线等三种字符组成
- 第一个字符必须为字母或者下划线
- 不能使用关键字(都是小写字母)
- 区分大小写字母
- 见名知义
常量&变量
常量——在程序运行过程中不能改变的值
变量——在程序运行过程中可以发生改变的值
常量
整形常量
- 十进制数
- 八进制数
- 每一位上的有效数字 0—7
- 必须以数字0开头
- 转换成十进制数:每一位的有效数字*该位的权,再求和
- 十六进制数
- 每一位上的有效数字:0—9 a—f或A—F
- 必须以数字0x或0X开头
- 转换成十进制数 :每一位的有效数字*该位权,再求和
实型常量
- 小数形式
- 指数形式:以“e”或“E”后跟一个整数表示以10为底的幂数(E前后必须有整数)
字符常量
单引号引起来的一个字符

字符串常量
双引号引起来的字符序列
计算字符串长度:双引号中字符的个数
符号常量
预处理指令,宏定义#define PI 3.1416
- 在编译前,用常量3.1416替换程序中所有的PI
const double a=3.14 (只读)
#define指令,是预编译指令,它只是用符号常量代表一个字符串,在编译时仅进行字符替换,在预编译之后,符号常量就不存在了(全部被置换成数字了)
用const定义语句的符号常量的优点,使用更方便。
变量
变量代表一个有名字的,具有特定属性的一个存储单元。
变量用来存放数据,也就是存放变量的值。
在程序运行期间,变量的值是可以改变的
变量必须先定义,后使用
整型数据
只有整形(包括字符型)数据可以加signed和unsigned修饰符实型数据不能加
整形变量
- int 4b
- short 2b
- long 4b
- unsignde int
int main() {
int a,b,c;
a=10;
b=010;
c=0x10;
printf("%d\n",a);
printf("%o\n",b);
printf("%x\n",c)
return 0;
}// %d 带符号十进制 %o八进制无符号 %x 十六进制无符号
标识符命名规则
- 数字字母下划线组成
- 第一个字符必须是字母或者下划线
- 不能是关键字
#define pi=3.1415926 预处理指令,宏定义,在编译前用常量去执行
const float pi = 3.1415926 增加只读属性
实型数据
算数表达式
赋值表达式
自加自减,逗号运算符
类型转换
变量
数据类型 变量名
int a=b
变量代表一个名字,具有特定属性的一个存储单元
变量用来存放数据,也就是存放变量的值
在程序运行期间,变量的值是可以改变的
变量必须先定义,后使用