




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言课件,为什么从C语言开始,开发能力最强,应用最广泛 操作系统开发、应用程序开发、单片机程序开发、网络程序设计 专业水平的试金石 各种专业考试首选程序设计语言:研究生入学考试、程序员考试、等级考试 后续主干课程的重要基础 数据结构、数据库程序设计、Java程序设计、可视化程序设计、网络编程,如何学习C语言编程?,编程似写作 先学“字词句”和“语法”,目标是“写作”。 学习数据类型、控制结构、语法规则等学语基 掌握程序分析、算法与编程写文章 仅仅读书是不够的 程序是编出来的,程序是调出来 在编程实践中消化知识。 没有天生的程序员 初学者:有点难。 没有学不会的,只有学不精的除非自己放弃。 出
2、于蓝胜于蓝:超过你的老师完全可能。 循次渐近很重要 阅读/分析程序摹仿编程掌握常见程序模块简单程序复杂编程 仅是起点,而非终点 从此编程与你相伴而行真正的程序员从此起步。,听课要求: 切实掌握各章主要内容(预习/听课/消化/归纳) 在预习基础上,听课为主,笔记为辅,课后弄懂课件和 教材中的程序(会分析,会流利写出) 考核方式: 作业(书面/上机)、期中考、期末考,第一章 C语言概述,目的要求: 了解C语言的特点 掌握C程序的组成及书写要求 熟悉C程序的上机步骤 了解算法的概念及其常用表示形式 重点难点: C程序的组成及书写要求 C程序的上机步骤,1.1 C语言的特点 语言简洁,语法限制少,灵活
3、性大 运算符、数据结构丰富 程序的可移植性好,1.2 简单的C程序介绍,例1 main( ) printf(“this is a c program.n”); 例2 main( ) int max(int x,int y) int a,b,c; int z; scanf(“%d,%d”, ,格式特点 习惯用小写字母 可使用空行和空格 常用锯齿形书写格式,main( ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum); ,优秀程序员的素质之一: 对齐 有足够的注释 有合适的
4、空行,结论:,C程序由函数构成,函数是C程序的基本单 位,一个C源程序至少包含一个main函数 也可以包含一个main函数和若干其他函数 函数的组成 函数的首部。包括函数名、函数类型、函数参数名、函数参数类型 int max(int x,int y) 函数体 声明部分 执行部分,C程序的执行及主函数的位置 C程序书写格式自由,一行内可写多条语句,一个语句也可以分写在多行上,语句和数据定义的最后必须加一个分号 语言中没有专门的输入语句 用可对程序的任何部分作注释,1.3 上机步骤,进入urbo C环境的步骤(设urbo C安装在c盘tc子目录下) 进入DOS 在盘根目录下键入CD TC(回车)
5、在TC目录下再次键入TC(回车),运行程序的步骤 上机输入与编辑源程序 对源程序进行编译 与库函数连接 运行目标程序,进入Turbo C 2.0集成开发环境中后, 屏幕上显示: File Edit Run Compile Project Options Debug Break/watch Edit Line 1 Col 1 Insert Indent Tab File Unindent c:NONAME.C Message F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu ,file.exe,程序代码的录入, 生成源程序*.
6、c,语法分析查错,翻译 生成目标程序*.obj,与其它目标程序或库 链接装配,生成可执行 程序*.exe,第一步:选择主菜单的edit菜单 第二步:选择主菜单中的compile菜单并在其下拉菜单中选compile to obj 第三步:选择compile菜单的下拉菜单中的compile/line exe file 第四步:按F10(ctrl+f9)键,选RUN下拉菜单中的run命令,程序:计算机能识别和执行的指令 程序=数据结构+算法,1.4 算法,算法:为解决一个问题而采取的方法和步骤 例:求1+2+3+100 算法1:顺序加 算法2:简便方法,算法的常用表示形式,三种基本结构 顺序结构,A
7、,B,选择结构,A,P,B,成立,不成立,循环结构 当型循环结构 直到型循环结构,P,A,成立,不成立,A,P,成立,不成立,例:打印5个“*”,j=0,j5,j=j+1,打印“*”,Y,N,j=0,j=j+1,打印“*”,j5,Y,N,高级语言程序设计,第二章 数据类型、运算符与表达式,目的要求: 了解基本数据类型及其常量的表示方法 掌握变量的定义及初始化方法 掌握运算符的运算规则与表达式的概念 领会C语言的自动类型转换、强制类型转换和赋值的概念。 重点难点: 整型数据的溢出 转义字符的含义及具体使用 +、-的运算规则,基本类型 整型 字符型 实型 C的数据类型 构造类型 数组类型 结构体类
8、型 共用体类型 指针类型 空类型,基本类型 字符型(char) 1字节 整型短整型(short int ) 2字节 基本型(int) 2字节(-3276832767) 长整型(long int ) 4字节(21亿) 实型单精度(float) 4字节 67位有效数字 长单精度(long float) 8字节 1516位有效数字 双精度(double) 8字节 1516位有效数字 长双精度(long double)10字节 20位有效数字,可知对不同数据类型占用的存储空间: charshort=intlong =floatdouble,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3
9、. 其上可进行的操作,常量:在程序运行过程中,其值不会被 改变的量 类型:整型常量:15,0,-7 实型常量:1.2,-3.0 字符常量:a,b,c 注:符号常量,2.1常量,#define WIDTH 80 #define LENGTH (WIDTH+40) main() int k,num; num=20; k=LENGTH*num; printf(%d,k); ,结果:2400,使用符号常量的好处:见名知意 一改全改,2.2 变量,变量:其值可以改变的量 int a; a=30; a 变量名 变量值 存储单元,30,标识符:用来标识变量名、符号常量名、 函数名、数组名、文件名的有 效字符
10、序列 组成:只能由字母、数字、下划线组成, 且第一个字符必须为字母或下划 线,不能为C语言中关键字,_123,temp,p_9 合法 B-a,1a0,goto 不合法,说明:大、小写被认为是不同的标识符 不同系统对标识符长度的规定不同 在变量使用时,一定要先定义,后使用,2.3 整型数据,整型常量 P41 十进制数 12 -12 0 八进制数 012 -012 十六进制数 0 x12 -0 x12 整型变量 分类:基本类型: int 短整型:short int 或short 长整型:long int或long 符号数和无符号数的表示,整型变量的定义 格式:变量类型 变量名,变量名; 例:int
11、 a,b; short int c; unsigned long d,e;,注意事项,整型整数 int 的范围: 3276832767 Example: #include #include main() int a ; clrscr( ); printf(“Input :”); scanf(“%d”, ,运行结果: Input:12345 a=12345 Input:1234567 a= -10617,Why?!,Because: 12345的补码是 0011000000111001 1234567的补码是 100101101011010000111 截去多余部份(超过2个字节的左边部分)后
12、其原码为1010100101111001(-10617) 参见教材P44“整型数据的溢出”。,可用下图表示: 32767 32766 32765 -32766 -32767 -32768,有趣的结果,2.4 实型数据,实型常量 P45 十进制形式 123.45 2.0 ( 必有小数点) 指数形式 2.45e-4 1.13E3 (e或E前为数,后为整数) 实型常量本身无单或双精度,其机内精度取决于赋给那类变量(影响有效数字位数,见P15示例) 实型变量 分类:单精度型( float) 双精度型(double) 长双精度型(long double),Float x,y; Double z; Lon
13、g double t;,实型数据的舍入误差 main() float a,b; a=123456.789e5; b=a+20; printf(“%f”,b); 实型常量的类型,2.5 字符型数据,字符常量 普通字符(可显示字符) A ? (只能单字符单引号) 错误:ABC “A” ” 转义字符(以开头) 如回车符、单引号、反斜杠等 在程序中这些符号用表3.3所示的“转义字符”表示。 字符串(用双引号括起) “A” “?” (以0为字符串结束标志) 注意:用char定义的字符变量只能接受字符常量,而不能接受字符串常量(C语言中无字符串变量) char a=U ; char b=“U”; (b被置
14、为某随机值),Example: main() char c1=a ,c2; c2=98; printf(“%d,%dn”,c1,c2); ,结果: 97,98,Example:main() char c1=“a” ,c2; c2=98; printf(“%d,%dn”,c1,c2); ,结果: -108,98 若让c1分别等于“U”、“ABC”、“A”结果不变,随机值,转义字符例题分,Example: main() char ch; ch=362; printf(“%c,%d”,ch,ch); 运行结果: ,14 ch = 3628=24210=111100102 111100102 化为原码
15、为 10001110= 1410,转义字符例题分析,Example: P49例3.5 main() printf( “_ _ a b _ c t _ d e r f t g n ”); printf( “h t I b b j _ _ _ k” ); 运行结果:,_ _ a b _ c,_ _ a b _ c _ _ _ d e,f _ a b _ c _ _ _ d e,f _ _ _ _ _ _ _ g d e,h,h _ _ _ _ _ _ _ l,h _ _ _ _ _ _ _,h _ _ _ _ _ _,h _ _ _ _ _ _ j _ _ _ k,什么时候要使用转义字符?,转义字
16、符只在特殊情况下才使用: C程序中需要实现某些特定打印或显示动作时 如 printf(“123t56n”); C程序中需要打印或显示以下三个字符时 (斜杠) (双引号) (单引号) 如 printf(“Youre a ”a bad egg!” ” ); C程序中需要打印或显示ASCII表中非键盘字符时 如 printf(“ Look 16 and x80 !”);,注意:使用转义字符时,后的八进制或十六进制数不应大于char类型所允许的范围(十进制值256)。,字符变量 char a,b;,说明: C允许字符数据和整数直接进行算术运算 例:B+32 字符数据和整数之间可以进行赋值 例:int
17、I;char c; I=a;c=97;,字符串常量,字符串常量:由一对双引号括起来的字 符序列 例:“sum”, “a”,“program”,字符串常量有关问题,与“”的区别 问题(判断正误): char c=“China”; char c=China; “China”占几个字节?141占几个字节?,等于十进制数97 即字符a,2.6 变量赋初值,变量名必须符合标识符命名规则 变量必须先定义后使用 int a; a=3; 定义变量时可以对变量初始化 int a=3; 例: b=(a=3+5) a=b=c=d=3+5 (结果均为8) 例:int a=b=c=d=3+5 (语法错误,除非b,c,d
18、定义过) 正确:int a, b=a=3+5; 例: c=3+(a=5)*6 结果:c=33,a=5(一个语句可以有几个赋值运算),2.7 数据间的转换(混合运算),数据的类型级别 P54图3.10 Double float Long Unsigned Int char, short,高,低,基本规则 不同类型运算量参加运算,遵守“向高看齐”的类型一致化规则:将长度较短的运算量转换为长度较长的运算量,以保证不丢失信息。 注:向左为必定转化方向 例:int i; float f; double d; long e; 10+a+i*f-d/e 判断运算后的数值类型,2.8 强制类型转换 P56,例
19、一: (int)3.5 的值是多少?,例二: main() int x=5; float y=3.5; printf(“%d”, (int)y+x); 结果是什么?,8,一般形式: (类型名)(表达式) 转换后表达式的数据类型为新的类型,但表达式中变量本身类型不变。,3,程序执行后y的类型是什么?,2.9 算术运算符和算术表达式,C语言运算符 P55 1、算术运算 算术运算符 + * / % 例: 14%(-4)=2 -14%(-4)=-2 20.4%2(出错) 例:若int a=7;float x=2.5,y=4.7; 则表达式 x+a%3*(int)(x+y)%2/4 的值是什么? 2.5
20、00000 (1/4为0) 例: float x,y; x%y; (出错),自反算术赋值运算符(复合的赋值运算符) P62 += -= *= /= 等 解法:将b*=看作b=b*(),其余类推 例: c=b*=a+3 相当于(1)a+3 (2)b=b*(a+3) (3)c=b 例:若 i 、j 的初值分别为3和4,则执行 j+=i- =1 后i 、j 的值为多少?,解题步骤: i=i-1=3-1=2 j=j+i=4+2=6 结果:i=2, j=6,关于优先级和结合方向: P56 C语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行。如果在一个运算对象两侧的运算符
21、的优先级别相同,则按规定的结合方向处理。 (各种运算符的优先级和结合性见P375附录) 【例】设i、j初值分别为3和4,则执行 j+=i-=1;后 i ,j的值为多少? 【例】若x=7;则x+=x-=x+x的值是多少?,(i=2,j=6),(-14),解法:从右到左,先做x=x-(x+x)=-7, 再做x=x+x=-14,自加、自减运算符 P57 +(自加运算符)-(自减运算符) 用法: +1 -1 运算 a、前缀形式 int i=5; x = + i ; y= i ; (x=6, i =6, y=6) int i =5; + i ; y= i ; ( i =6, y=6) b、后缀形式 in
22、t i =5; x = i +; y= i ; (x=5, i =6, y=6) int i =5; i +; y= i ; ( i =6, y=6),若对某变量自加/自减而不赋值,结果都是使该变量自身1;若某变量自加/自减的同时还要参加其他运算,则前缀运算是先变化后运算,后缀运算是先运算后变化。注意:运算对象只能是变量, 5+或(x+y)+均为错,例一: main() int a=100; printf(“%dn”,a); printf(“%dn”,+a); printf(“%dn”,a+); printf(“%dn”,a); 运算结果:100 101 101 102,例二: 若 int x
23、=3,y; 求下列运算后y和x的值 y=x+ -1; (2 4) y=+x -1; (3 4) y=x - - +1; (4 2) 分析思路:先对右边的表达式进行扫描,如果x+,先取x值完成表达式运算后再让x自加1,如果+x,则先将x自加1后再代入表达式进行其他运算,逗号运算P63-64 C语言中逗号可作分隔符使用,将若干变量隔开 如 int a,b,c; 又可作运算符使用,将若干独立的表达式隔开,并依次计算各表达式的值。其一般形式 表达式1,表达式2,表达式n; 逗号表达式的求解过程:先求表达式1的值,再求表达式2的值,最后求表达式n的值。整个逗号表达式的值是最后一个表达式n的值。 在C语言
24、所有运算符中,逗号表达式的优先级最低。,【例一】 main( ) int x,a; x=(a=3*5,a*4,a+5); printf(“x=%d,a=%dn”,x,a); ,【例二】 main( ) int x,a; x=(a=3*5,a*4),a+5; printf(“x=%d,a=%dn”,x,a); ,运算结果:x=20,a=15,运算结果:x=60,a=15,【例三】main() int a,b,x; x=(a=8,b=15,b+,a+b); printf(“a=%d,b=%d,x=%dn”,a,b,x);,运算结果:a=8,b=16,x=24,第三章 顺序程序设计,程序 数据描述:
25、定义数据类型和数据初值 数据操作:对数据进行加工,由语句 实现,目的要求: 掌握算法的基本概念 掌握结构化程序设计的基本概念 了解C的语句组成及分类 掌握C语言常用的输入/输出方式。 重点难点: 各种格式字符的输出格式 地址的含义及取地址符号”作分隔符,编译后产生机器指令. C语句分类 控制语句,表达式语句:表达式加分号构成。 函数调用语句 空语句 复合语句:用 括起来的一组语句 一般形式: 数据说明部分; 执行语句部分; 说明: “”后不加分号 语法上和单一语句相同 复合语句可嵌套,3.2 数据的输入输出,标准输入输出库函数 putchar(输出字符) getchar(输入字符) print
26、f(格式输出) scanf(格式输入) puts(输出字符串) gets(输入字符串) 标准输入输出库函数 stdio.h #include 或 #include “stdio.h”,一、字符数据的输入输出,1、字符输出函数 P71 格式: putchar(c) 其中 c为字符型或整型的常量、变量及其表达式 功能: 每次向屏幕输出一个字符供显示。,【例】求以下程序运行结果 #include main() char x=a; putchar(x); putchar(b); putchar(x+2); putchar(b+2); ,结果:abcd,2字符输入函数 格式: getchar( ) 功能
27、: 从键盘上读入一个字符, getchar( )包含在stdio.h中,,【例一】 #include main() char a,b; a=getchar();b=getchar(); printf(“a=%c,b=%cn”,a,b); 运行时,如果 输入:Student 输出结果为 a=S,b=t,二、格式输入输出,1.格式输出函数 格式:printf(“格式控制串”,输出表列) 功能:按指定格式向显示器输出数据 输出表列:要输出的数据(可以没有,多个时以“,”分隔) 格式控制串:包含两种信息 格式说明:%格式字符,用于指定输出格式 普通字符或转义序列:原样输出 格式字符,int a=567
28、;printf ( “%d”,a);,int a=255;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=567;printf(“%u”,a);,char a=65;printf(“%c”,a);,printf(“%s”,“ABC”);,float a=567.789;printf(“%e”,a);,float a=567.789;printf(“%f”,a);,float a=567.789;printf(“%g”,a);,printf(“%”);,567,ff,101,567,A,ABC,5.677890e+002,567.789000,567
29、.789,%,说明 除x、e、g外,其它格式字符要用小写 格式字符与输出项个数应相同,按先后顺序一一对应 格式字符与输出项类型不一致,自动按指定格式输出,附加格式说明符(修饰符),int x=1,y=3; printf(“x=%d y=%d *sum*=%dn”,x,y,x+y);,int x=7281; printf(“x=%3d,x=%6d”,x,x);,long a=135790; printf(“%ld,%8ld”,a,a);,int x=-1; printf(“%x,%o,%d,%12x”,x,x,x,x);,main() printf(“n*s1=%15s*”,”chinabeij
30、ing”); printf(“n*s2=%-5s*”,”chi”); printf(“n*s3=%15.3s*”,”chinabeijing”); printf(“n*s4=%.4s*”,”chinabeijing”); printf(“n*s5=%-15.3s*”,”chinabeijing”); ,main() float a=123.444; printf(“%fn”,a); printf(“%14.3fn”,a); printf(“%6.4fn”,a); printf(“%.4fn”,a); ,例题:,例 int a=1234; float f=123.456; printf(“%08
31、dn”,a); printf(“%010.2fn”,f); printf(“%0+8dn”,a); printf(“0+10.2fn”,f);,例 int a=123; printf(“%o,%#o,%X,%#Xn”,a,a,a,a);,2.格式输入函数,格式: scanf(“格式控制串”,地址表) 功能:按指定格式从键盘读入数据,存入地址表指 定的存储单元中,并按回车键结束 地址表:变量的地址,常用取地址运算符 scanf(%f,%f,%f, ,输入:3,4,6 输出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33,3.3 顺序结构程序设计举例,例
32、从键盘输入大写字母,用小写字母输出,#include stdio.h main() char c1,c2; c1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2); ,输入:A 输出:A,65 a,97,#include #include main() float a,b,c,disc,x1,x2,p,q; scanf(a=%f,b=%f,c=%f, ,输入:a=1,b=3,c=2 输出:x1=-1.00 x2=-2.00,第四章 选择结构程序设计,学习目的: 掌握关系运算符和逻辑运算符的运算规则及优先级关系 掌握条
33、件语句的语句格式和执行顺序 学会进行选择结构程序设计 重点难点: 条件语句的嵌套 选择结构程序的分析方法和设计方法,4.1 关系运算符和关系表达式,关系运算符 = (优先级相同)高 = != (优先级相同)低 算术运算符 (高) 关系运算符 赋值运算符 (低) 例:,ca+b cb=a a=bc,关系表达式 概念:由关系运算符将两个表达式连接起 来的式子 如:d+ab+c (ab)(cd) 关系表达式的值 真 以1代表 假 以0代表,例:当a=3,b=2,c=1 求 f=abc的值 当a=5,b=4,c=2 求ab!=c的值,4.2 逻辑运算符和逻辑表达式,逻辑运算符 ,形式二 格式:if (
34、expression) statement1 else statement2 执行过程: :,例:if (xy) max=x; else max=y;,形式三: 格式: 执行过程:,if ( expr1 ) statement1 else if (expr2 ) statement2 else if (expr3 ) statement3 . else if (exprm) statementm else statementn,例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) inde
35、x=0.2; else if (salary400) index=0.1; else index=0;,说明: if后面的表达式类型任意 语句可以是复合语句 if(x) if(x!=0) if(!x) if(x=0),如:if(a=b,例 考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”, ,Compile Error!,例:,求一个数的绝对值,#include main() int x,y; printf(Enter an integer:); scanf(%d, ,运行:Enter an integer:-12 integer:-12-
36、absolute value :12,比较两个数,求其中的大者,main() int a,b; printf(Enter integer a:); scanf(%d, ,求y= x(x+2) 2x=10 2x -1x=2 x-1 x=-1,main() int x,y; scanf(“%d”, ,4.4 If 语句的嵌套,注:if else 配对原则:缺省 时,else总是和它上面离它最近的未配对的if配对,结果:-1,main() int a=2,b=3,c; c=a; if(ab) c=1; else if (a=b) c=0; else c=-1; printf(“%d”,c); ,对函
37、数y= -1 (x0) 编程序,输入x的值,输出y的值 程序1: 程序2:,main() int x,y; scanf(“%d”, ,main() int x,y; scanf(“%d”, ,程序3: 程序4:,main() int x,y; scanf(“%d”, ,main() int x,y; scanf(“%d”, ,读程序写结果,main() int a=1,b=3,c=5,d=4; if(ab) if(cd) x=1; else if (ac) if(bd) x=2; else x=3; else x=6; else x=7; printf(“x=%d”,x); ,结果:x=2,4.5 switch语句(开关分支语句) 一般形式: switch( 表达式) case E1: 语句组 1;break; case E2:语句组 2;break; . case En:语句组 n;break; default:语句组 n+1; ,说明: E1,E2,En是常量表达式,且值必须互不相同 语句标号作用,必须用break跳出 case后可包含多个可执行语句,且不必加 switch可嵌套 多个case可共用一组执行语句,如: case A:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省南京市南京师范大附属中学2024-2025学年八上物理期末质量跟踪监视模拟试题含解析
- 天津市蓟州区上仓镇初级中学2025届九年级化学第一学期期末统考试题含解析
- 公司员工入职劳动协议
- 农业园区资源共享协议书
- 服务外包合作意向协议书
- 线上商城运营与市场推广协议
- 农村电力配套设施建设及运营合同
- 广告业务发布与收益分配合同协议
- 远程网络技术咨询服务合同
- 企业网络通讯服务外包协议
- 大连海事大学毕业成绩表
- 尾矿库模施袋筑坝工艺在施工中的应用
- 公路施工组织与概预算教学课件汇总整本书电子教案全套教学教程完整版电子教案(最新)
- 中国34个省级行政区轮廓图
- 人教版三年级下册数学(全册)同步随堂练习一课一练
- 肺小结节定位和肺段切除规划PPT学习课件
- 精品专题资料(2022-2023年收藏)国家电网公司智能电网知识竞赛题目
- 0上海市康复治疗质量控制中心推荐病史及记录单
- (完整word版)sppb简易体能状况量表
- 民用航空安全信息管理规定培训考试
- AHRI 的标准目录
评论
0/150
提交评论