资源预览内容
第1页 / 共142页
第2页 / 共142页
第3页 / 共142页
第4页 / 共142页
第5页 / 共142页
第6页 / 共142页
第7页 / 共142页
第8页 / 共142页
第9页 / 共142页
第10页 / 共142页
亲,该文档总共142页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C语言C语言概述C语言及标准化n 最早由Dennis Ritchie 于1973年为 Unix设计并实现,从贝 尔实验室到世界各地。 n 标准化 C89 ANSI(美国 国家标准委员会)于89年12月正式通过, 1990年被ISO批准为国际标准 C99 1999年ISO通过了新版的C标准,包含了一些重要的改 变 n 基于C的语言 C+ Java C# Perl C语言的特点n C语言是一种底层语言 n C语言是一种小型语言 有限的语言特性 依赖标准函数库 n C语言是一种包容性语言 更广阔的自由度 不强制进行详细的错误检查 n C语言不是一个强类型的语言。但类型检查机制已经得到 了加强。C语言的优点n 高效 n 可移植 n 功能强大 n 灵活 从嵌入式到商业数据处理 限制少 n 标准库 n 与Unix系统集成C语言的缺点n 更容易隐藏错误 n 有时会难以理解 n 有时会难以修改C语言基本概念编写一个简单的C程序n 一个简单的C程序 #include int main() printf(“Hello World!”); return 0; n 保存为xxx.c编译和连接n 预处理 预处理器执行#开头的命令(通常称为指令) n 编译 编译器会将程序翻译成机器指令(目标代码) n 连接 连接器把目标代码和所需的其他附加代码整合在一起,产生 可执行的程序。GCCn GNU C Compiler的简称,现指GNU Compiler Collection 新版本gcc可以编译ada, C, C+,fortran,java和Objective-C n GNU 为自由软件基金会的一个项目 n GCC可以免费获取,还可以在多个操作系统中运行 n GCC是许多 基于Unix系统(Linux, BSD, Mac OS X)的主 要编译器,并广泛应用于商业软件开发GCC使用n 选项 -c 编译 -o 自定义目标名 -std=c89或-std=c99 -pedantic 根据C标准产生警告消息 -Wall 编译器检测到可能的错误时生成警告消息 -O0 不优化 -O1 缺省优化 -O3最高优化 -E 仅预处理 -S 产生汇编 .Hello World中的语言特性n 指令 #include n 函数 自定义函数 库函数 main函数 n 语句 n 显示字符串 printf();注释n /* 注释 */ 注释的习惯使用方式 盒型注释 简化盒型 翼型注释 n 注释的嵌套是不合法的 n 忘记终止注释可能导致严重问题 n C99提供的新注释形式 /变量和赋值n 变量 n 类型 int float n 声明 int x; float y, z; 必须把声明放在语句之前 n C99中,声明可以不在语句之前 n 赋值 给float变量的赋值需要在数值后加f 混合赋值是可以的,但不一定安全变量的初始化n 用printf显示变量的值 printf(“%d”, x); printf(“%f”, y); printf(“%d, %.2f”, x, y); n 变量初始化 变量未初始化时访问 初始化标识符和关键字n 标识符,变量、函数、宏、其他实体的名称 以字母、下划线开头 可以包含字母、下划线、数字 大小写敏感 不能和关键字冲突 标识符长度有限制 吗? C89声称可以任意长,但编译器只记住前31个 C99中是63个 n 关键字 有特殊含义的一串字符 全部小写 标准库中的函数名全部小写C语言书写规范n 语句 可以分开放在任意多行内 n 空格使我们更容易区分 n 缩进有助于轻松识别程序嵌套 n 空行可以把程序划分成逻辑单元 n 驼峰命名方式和下划线区分方式 基本类型整数类型n C中,基本类型只有char 、int、float、double四种 n 有符号和无符号 Singed (默认) Unsinged n Short和long n 16位机和32位机上的整数类型的表示范围 n 表示范围并非C标准定义,根据编译器的不同而不同 n C99中增加的整数类型 Long long int Unsiged long long int 有些编译器支持非标准的128位整数字面值和常量n 整数常量(字面值) 3被认为是int 3.5被认为是double 3.5f被认为是float 3.5L被认为是long double 35L被认为是long int 35LL被认为是long long 35u被认为是unsigned int 35UL是unsigned long n 八进制和十六进制 0377 0x12ab浮点类型n C提供三种浮点类型 Float:单精度 Double:双精度 Long double :扩展双精度 n C标准没有说明精度的范围有多少 n IEEE提供了精度: Float 1.17548*10(-38)3.40282*10(38) Double 2.22507*10(-308)1.79769*10(308) n 浮点常量 以下浮点常量有效 57.0 57. 57.0e0 57E0 5.7e1 5.7e+1 .57e2 570e-1字符类型n char 各ASCII A 65 a 97 0 48 n 字符操作 Char c = a; C = 65; C = c + 1; C+; n 有符号和无符号char C标准没有说明普通char是有符号还是无符号 C语言对字符类型视为整数类型转义序列n 响铃 a n 退格 b n 换行 n n 回车 r n 水平制表 t n 垂直制表 v n 特殊字符 ? ”使用printf()输出各种类型的变量值 n printf(“格式字符串“, .); %i/%d int %f/%lf float/double %hd/%ld short int/long int %u unsigned int %cchar %s string %paddress %o八进制 %x/%X十六进制 %gfloat/double去尾零 %e/%E 科学计数法%Scanf()从键盘输入n scanf(“格式串“, 地址表); 格式串后的每个参数都必需是一个地址(指针) 函数返回实际被转换并赋值的输入项的数目 n 格式符 d 十进制整数型 i 整数型,可以是八进制,十进制,十六进制 o 八进制整数 u 无符号十进制整数 x 十六进制整数 c 字符 s 非空白符组成的字符串 e f g 浮点数 p 地址Sizeof()n sizeof(类型) sizeof(变量名) sizeof(表达式) n sizeof只关心类型,只会分析括号中的类型,不会对括号 中的内容进行运算。如: int i = 5; sizeof(i=10); 计算的结果,i是多少?运算符和表达 式运算符() - . ! + - + - * 是合法的 k = 1 + (j = i);是合法的 n 左值 左值 表示存储在计算机内存中的对象 ,而不是常量或计算 结果 赋值运算要求左操作数必须是一个左值 10 = I;/错 i + j = 0;/错 -i = j;/错 n 复合赋值自增和自减n + n - n 前+和后+ n 前- -和- - n 同一表达式多次出现+和- -运算,结果往往很难理解 i = 1; j = 2; K = +I + j+; - I = 1; J = 2; K = i+ + j+;逻辑表达式n 关系运算符 = n 判等 = != n 逻辑运算符 ! else 将两个数都转成unsigned long int; else if(一个是long int) 另一个转成long int else if(一个是unsigned int) 另一个转成unsigned int; else 两个数都转成int类型。 流程控制语句If语句 n if(表达 式)语句 if(0=n) n 复合语句 多条语句 n else子句 n 级联式if语句 n 悬空elseif(y!=0) if(x!=0) r = x / y; else printf(“Error: y is equal to 0n“);练习n 判断闰年 n 计算股票经纪人的佣金 当股票通过经纪人进行买卖时,经纪人的佣金通过交易额来 计算 计算表:交易额 范围佣金费用 低于2500元30元+1.7%2500625056+0.66%62502000076+0.34%2000050000100+0.22%50000500000155+0.11%超过500000255+0.09%条件表达式n 表达式1?表达式2:表达式3Switch语句n switch(控制表达式) case 常量表达式 :语句; . default : 语句; n 控制表达式被当做整数处理,可以是字符,但不能是浮点 数事项字符串 n 常量表达式必须是常量,如3 A 2+5 n 语句 可以是零到多条 n 不允许重复分支,default不一定在最后 n break练习n 将数字分级 输入一个1100的数,输出级别n 输入 年,月,输出 这个月有多少天?分数范围级别90100A8089B7079C6069D0;i-) n 在for循环中省略表达式 n C99中的for语句 for(int i=0; i0); for(.);退出循环n break n continue n goto练习n 账簿结算 开发一个程序用来维护账簿的余额,程序将为用户提供选择 菜单 清空账户余额 存钱 取钱 显示当前余额数组数组n 含有多个数据值的数据结构 n 每个数据值具有相同的数据类型,这些数据称为元素 n 数组下标 从0开始 C语言不检查下标的范围,当越界访问时,结果不可预知 对于某些编译器,以下代码会产生莫明其妙的结果 int a10, i; for(i=0; i头文件中的bool,true, false对数组使用sizeof()运算符n sizeof(数组名)可以确定数组的大小 n 以下表达式可以确定数组的长度 sizeof(数组名)/sizeof(数组名0) 这种用法比较灵活,但麻烦,可以使用宏来简化练习n 计算利息 在几年内100元投资在不同利率下的价值,由用户输入最低 利率和投资年数Years 6% 7% 8% 9% 10%1 106.00 107.00 108.00 109.00 110.002 112.36 114.49 116.64 118.81 121.003 119.10 122.50 125.97 129.50 133.104 126.25 131.08 136.05 141.16 146.415 133.82 140.26 146.93 153.86 161.05多维数组n 数组可以有任意维数 n C语言是按照行主序存储数组的,多维数组一样如此 n 多维数组的初始化 初始化式没有足够的数填满数组,则补0 甚至可以省掉内层花括号练习n 发牌 程序负责发一副标准纸牌,每张标准纸牌都在一个花色(梅 花、方块、红桃或黑桃)和
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号