Download presentation
Presentation is loading. Please wait.
1
C语言程序设计 (第二版) 主编 王曙燕 科学出版社
2
第一章 C语言概述
3
1.1 C语言的发展和特点 CPL语言:剑桥大学,1963年 BCPL语言:剑桥大学,1967年 B语言:Bell实验室,1970年
发展过程 B语言:Bell实验室,1970年 在PDP机器上用其编写UNIX系统 CPL语言:剑桥大学,1963年 BCPL语言:剑桥大学,1967年 C语言:Bell实验室,1972~1973年用其改写 UNIX系统 经简化 进一步简化 保持精练、接近硬件的优点, 克服数据类型过少的不足 【名词】 ●ALGOL(algorithmic language算法语言) ●CPL(复合编程语言) ●BCPL(基本复合编程语言) ●ANSI(美国国家标准化协会) ●ISO(国际标准化组织) 从软件类型来看—— ◆面向过程 常用—Turbo C(PC机版) ◆面向对象 常用—C++/Visual C++(可视化) 最新:为Windows和Web应用程序提供动态开发环境的Visual C++.NET(C#)
4
1.1 C语言的发展和特点 C标准与版本 1983年:ANSI C 1987年:87 ANSI C: 1990年:国际标准的ANSI C
从软件类型来看 面向过程:常用—Turbo C(PC机版) Visual C (可视化) 面向对象:常用—C++/Visual C (可视化) 最新:为Windows和Web应用程序提供动态开发环境的Visual C++.NET(C#)
5
1.1 C语言的发展和特点 学习编程好比学习写作 学语基:学习数据类型、控制结构、语法规则等 写文章:掌握程序分析、算法与编程等 循次渐进 阅读/分析程序→摹仿编程→掌握常见程序模块→简单程序→复杂编程 多看参考书和现有程序 重视上机,切实掌握程序调试技术
6
1.1 C语言的发展和特点 增加学习难度 语言简洁,表达能力强,易于理解 只有32个关键字,9种控制语句 数据构造能力强
运算符和数据结构丰富 程序书写格式自由 程序设计结构化、模块化 可直接访问物理地址,实现对硬件和低层系统软件的访问 语言生成的代码质量高 可移植性好 增加学习难度
7
1.2 C语言的程序结构 /* The first C Program*/ 注释 #include <stdio.h>
例1.1 第一个程序 Hello,World! /* The first C Program*/ #include <stdio.h> main() { printf(“Hello,World!”); } 注释 编译预处理 函数 printf(“Hello,World!\n”); 语句 输出: Hello,World!
8
C程序的上机步骤 用户 编辑 编译 连接 运行 对源文件进行语法和逻辑结构检查 将目标程序、库函数或其他目标程序连接成一个可执行文件 编译
出错 连接 出错 运行 出错 用户 C源程序 .c文件 目标程序 .OBJ文件 可执行程序 .exe文件 结 果 编辑 编译 连接 运行 对源文件进行语法和逻辑结构检查 将目标程序、库函数或其他目标程序连接成一个可执行文件
9
程序设计语言处理流程 名词: 【源程序】用汇编语言或高级语言编写的程序 【目标程序】经翻译程序翻译生成的程序
【可执行程序】经连接程序处理过的程序
10
#include <stdio.h> main( ) { int a, b, sum;
例1.2 求两个整数之和 /* Calculate the sum of two integers*/ #include <stdio.h> main( ) { int a, b, sum; printf(“Please input two intergers:”); scanf(“%d%d”, &a, &b); sum=a+b; printf(“sum=%d”, sum); } 输入:5 10 输出:sum=15
11
例1.3 求两个整数的最大值 输入:5 10 输出:max=10
/* Get the max-value of two integers*/ #include <stdio.h> int GetMax(int a, int b) { int max; if(a>=b) max=a; else max=b; return max; } main( ) { int a, b, max; printf(“Please input two intergers:”); scanf(“%d%d”, &a, &b); max=GetMax(a, b); printf(“max=%d”, max); 注释 例1.3 求两个整数的最大值 预处理命令 函数 输入:5 10 输出:max=10 语句
12
{ 说明语句; 执行语句; } int GetMax(int a, int b) { int max; if(a>=b) max=a;
else max=b; return max; } 函数类型 函数名(形参类型说明表) { 说明语句; 执行语句; }
13
例 求两个实数的最大值 输入:5.6 10.8 输出:max=10.8 #include <stdio.h>
float GetMax(float a, float b) { float max; if(a>=b) max=a; else max=b; return max; } main( ) { float a, b, max; printf("Please input two float number:"); scanf("%f%f", &a, &b); max=GetMax(a, b); printf("max=%f", max); 例 求两个实数的最大值 输入: 输出:max=10.8
14
1.2 C语言的程序结构 格式特点 习惯用小写字母,大小写敏感 不使用行号,无程序行概念 可使用空行和空格 常用锯齿形书写格式
main( ) { int i , j , sum; sum=0; for(i=1; i<10;i++) for(j=1;j<10;j++) sum+=i*j ; } printf(“%d\n”,sum); 格式特点 习惯用小写字母,大小写敏感 不使用行号,无程序行概念 可使用空行和空格 常用锯齿形书写格式 main( ) { ………………. ……………… ………….. ……… ………. …………… ……………. ………………. ……………….. } 优秀程序员的素质之一: 使用TAB缩进 { }对齐 有足够的注释 有合适的空行
15
1.2 C语言的程序结构 函数与主函数 程序由一个或多个函数组成 必须有且只能有一个主函数main()
程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。 程序语句 C程序由语句组成,用“;”作为语句终止符 注释 /* */为注释,不能嵌套,不产生编译代码 非法 例: /*This is the main /* of example1.1*/ */ 编译预处理命令 例#include <stdio.h>
16
1.3 C语言的基本语法成分 主要分为:基本字符,标识符两种。
字符集 字符是可以区分的最小符号,是构成程序 的基础。包括三方面: 英文字母:a~z和A~Z; 数字:0~9; 特殊字符:空格 !# % 等 由字符集可构成进一步的语法成分,例: 标识符、关键字和特殊运算符等。
17
长度:一般系统规定标识符的长度<=8。 标识符的选择要有意义:例如,name, city, data, sum, average等
标识符在程序中用来标识各种程序成分, 命名程序中的一些实体。包括三方面: 字母; 数字; 下划线:“_” 注意: 开头:必须是英文字母或下划线; 大小写敏感:大小写字母是不同的字符; 长度:一般系统规定标识符的长度<=8。 标识符的选择要有意义:例如,name, city, data, sum, average等
18
1.3 C语言的基本语法成分-标识符 标识符的分类 1.系统定义标识符 具有固定名字和特定含义的标识符 分为关键字和预定义标识符 2.用户定义标识符 用于对用户使用的变量、数组、函数等操作对象进行命名
19
1.3 C语言的基本语法成分-标识符 关键字,预定义标识符,用户标识符
32个关键字:(由系统定义,不能重作其它定义) 数据类型: int、char、float、double、short、long、void、signed、unsigned、enum、struct、union、const、typedef、volatile 存储类别: auto、static、register、extern 语句命令字: if、else、switch、case、default、for、do while、goto、 break、continue、return 运算符: sizeof
20
1.3 C语言的基本语法成分-标识符 关键字,预定义标识符,用户标识符
1.条件判断语句 if ( ) …else … switch ( ) { … } 2.循环控制语句 for ( ) … while ( ) … do … while ( ) 3.转移语句 break、continue、goto return 9种控制语句:
21
1.3 C语言的基本语法成分-标识符 关键字,预定义标识符,用户标识符
系统标准库函数 scanf、printf、putchar、getchar、strcpy、strcmp、sqrt等 编译预备处理命令 include、define等
22
1.3 C语言的基本语法成分 对用户定义标识符的规定 不能含有除字母、数字和下划线“_”外的其他字符 必须以字母或下划线“_”开头
标识符中大小写字母含义不同 长度:一般系统规定标识符的长度<=8。 标识符的选择要有意义:例如,name, city, data, sum, average等 不能使用关键字 C语言中有一些在系统中早已定义好的标识符——关键字,关键字不能作为一般标识符使用,如int,float,char,double等,因为编译程序对这些标识符已赋予了特殊的含义,已为语言本身专用,故不能使用。
23
1.3 C语言的基本语法成分 运算符----34种运算符:
算术运算符:+ - * / % 关系运算符:< <= == > >= != 逻辑运算符:! && || 位运算符 :<< >> ~ | ^ & 赋值运算符:= 及其扩展 条件运算符:? : 逗号运算符:, 指针运算符:* & 求字节数 :sizeof 强制类型转换:(类型) 分量运算符:. -> 下标运算符:[] 其它 :( ) -
24
1.4 如何学习C语言 记忆C语法规则,C关键字 记忆各种数据类型名称及取值范围 记忆变量、函数等命名规则
记忆变量、函数等命名规则 记忆常用的库函数(名称、功能、参数含义及返回值含义) 养成良好的编程风格:层次缩进显示程序流程 独立、认真完成作业和上机任务大量的上机编程练习
25
练习:编写一个area.c程序,输入半径,求圆面积。
#define PI #include <stdio.h> main( ) { float r,s; scanf(“%f ”,&r); s=PI * r * r; printf (“半径R=%f 时,面积S=%f \n”,r,s); } /*编译预处理--宏替换*/ /*编译预处理--文件包含*/ /*主函数*/ /*定义变量r、s类型为 单精度实型*/ /*变量r赋值*/ /*计算圆面积s*/ /*输出结果*/
26
练习:编写一个area.c程序,输入半径,求求圆面积。
#define PI #include <stdio.h> main( ) { float r,s; scanf(“%f ”,&r); s=PI * r * r; printf (“R=%f , S=%f \n”,r,s); } 练习:编写一个area.c程序,输入半径,求求圆面积。 程序的不足: 输入变量时候没有提示语句; 如果半径r为负值,也会有正常的s值输出。 输出结果的小数位数为6位,与习惯不符。
27
练习:编写一个area.c程序,输入半径,求求圆面积。
#define PI #include <stdio.h> main( ) { float r,s; printf(“Please input the r: ”); scanf(“%f ”,&r); if (r<0) printf(“the radius is negative!”) ; else s=PI* r *r; printf(“R=%.3f,S=%.3f \n”,r,s); } 练习:编写一个area.c程序,输入半径,求求圆面积。 positive negative
28
练习:求三个整数的平均值。 #include <stdio.h> main() { int a,b,c; float aver;
printf("please input the a,b,c: "); scanf("%d%d%d",&a,&b,&c); aver=(a+b+c)/3.0; printf("the average is %f.\n",aver); }
29
练习:求三个整数的平均值。 #include <stdio.h>
float average(int x,int y,int z) { float av; av=(x+y+z)/3.0; return av; } main() int a,b,c; float aver; printf("please input the a,b,c: "); scanf("%d%d%d",&a,&b,&c); aver=average(a,b,c); printf("the average is %f.\n",aver); 练习:求三个整数的平均值。
30
学习要点: 程序设计语言的概念和发展。 了解C语言的发展、标准以及特点。 熟练掌握C语言的基本语法成分, (字符集、标识符、运算符)。 熟悉C语言程序的结构和书写要求。 重点:掌握标识符构成规则,熟记关键字。
Similar presentations