C语言程序设计电子教案.doc

上传人:豆**** 文档编号:33581046 上传时间:2022-08-11 格式:DOC 页数:35 大小:193.50KB
返回 下载 相关 举报
C语言程序设计电子教案.doc_第1页
第1页 / 共35页
C语言程序设计电子教案.doc_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《C语言程序设计电子教案.doc》由会员分享,可在线阅读,更多相关《C语言程序设计电子教案.doc(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流C语言程序设计【精品文档】第 35 页C语言程序设计第1章 基本概念本章主要内容 明确C语言的产生及发展史 了解C语言特点 掌握C语言的表述环境 明确C语言及其程序的基本形式1.1 C语言的产生及发展史C语言属于ALGOL语言族系, 产生于1972年. 是编程者设计的一种结构化程序设计语言. 它首先是为了编写PDP-11型计算机上的UNIX操作系统而产生出来, 但后来发展成为一种独立的程序设计语言, 并广泛地应用在大型, 小型,微型计算机上.1967年英国剑桥大学的Matin Richards对CPL语言做了简化,推出了BCPL语言。1970年美国贝尔实

2、验室的Ken Thompson以BCPL语言为基础,又做了进一步简化,设计出了很简单的而且很接近硬件的B语言,并用B语言写了第一个UNIX操作系统,在PDP-7上实现。1972年至1973年间,贝尔实验室的D.M.Ritchie在B语言的基础上设计出了C语言。C语言的设计者Dennis M. Ritchie1973年,K.Thompson和D.M.Ritchie两人合作把UNIX的90以上用C改写,即UNIX第5版,由此确立了C语言的地位。Ritchie和Thompson在开发UNIXC语言的设计者D.M.Ritchie和Unix的设计者Ken Thompson接受美国国家技术勋章C语言是一种

3、中级语言, 它介于高级语言(BASIC,FORTRAN .)和低级语言(汇编语言)之间. 它即具有高级语言功能(直接的人-机对话和数学计算),又具有低级语言功能(移位,位处理), 从而使其功能大大地增强, 成为一种先进的程序设计语言.1.2 C语言特点 语言简炼 使用的关键字仅为27个, 而BASIC语言为150多个. 利用符号代替语句,表达简洁. 许多工作由大量的库函数完成, 并且库函数可以自定义, 所以C语言的关键字及其功能是无限的. 功能强 它集高级语言的特点和低级语言的特点于一身, 即能完成高语言的功能 又能完成低级语言的功能, 是一种强功能的语言. 由它编写的软件有: UNIX, d

4、BASE III, C编译. 模块化结构 C语言支持各种库函数和用户定义的函数(模块)相互调用构成程序, 完 成功能. 并且, 不允许嵌套定义, 因此, 具有很强的模块化结构. 移植性好 利用C语言编的程序不加改动或稍加改动, 就可以由一个环境移植到另一个环境上. 因为, 不同计算机上的C语言编译代码的80%左右相同. C语言及其程序的基本形式这里介绍几个简单的C语言程序,从中明确C语言及其程序的基本形式。例 1.1main ( ) printf (“This is a C program.n);本程序的作用是输出以下一行信息,主要说明C语言程序的基本组成部分,C语言程序的具体形式。例.mai

5、n ( ) /* 求两数之和*/ int a,b,sum; /* 这是定义变量*/ a=123; b=456;/* 为变量赋初值*/ sum=a+b; /* 将两个变量的值相加后赋给另一个变量*/ printf (“sum is %dn”, sum);/* 输出相加后的结果*/本程序的作用是说明一个较为全面的C语言程序,以及注释的使用。第2章 数据类型、运算符与表达式本章主要内容 理解数据类型引入的目的、意义和具体类型 明确常量与变量 掌握C语言的运算符和表达式表2.1 基本数据类型大千世界存在着各种各样、各种类型的数,人们利用不同类型的数去描述不同的事物。然而,哪些“类型”的数据可以在C语言

6、中使用?C语言中允许使用的“类型”又是什么呢? 3.1.1 数据类型:某一类数据(值)的特征形式(表示意义、取值范围、符号取向). 基本形:整数(int)、浮点(float)、字符(char)、无值(void)。构造(组合、集合)型:数组、结构(struct)联合(union)、枚举(enum)。指针类型空类型1. 1.整数和整数类型整数在C语言中称为“整型常量”,因为它即表示了值,又表示了一定的意义。类型字节数取值范围signed int2-32768 - 32767Unsigned int20 - 65535signed shot int2-32768 - 32767Unsigned sh

7、ot int20 - 65535long int4-2147483648 - 2147483647Unsigned long int40 - 4294967295注:方括弧内的部分是可以省略的。例如:signed shot int 与shot等价,尤其是 signed 是完全多余的,一般都不写signed。2. 浮点类型(float)类型字节数有效数字取值范围float46 7-3.4X10(-38) - 3.4X10(38)double815 16-1.7X10(-308) - 1.7X10(308)long double1618 - 19-1.2X10(-4932) - 1.2X10(49

8、32)3. 字符类型(char)类型字节数意义char1表示一个字符2.2 常量与变量在3.1节学习了几种数据的类型,可以用它们表示客观世界中的数值。那么,如果要表示客观世界中的“事物”(事和物)怎么办?C语言中使用“量”来表达客观事物,其中,自身数值不变的量用“常量”表示,自身数值变化的量用“变量”表示。因此,为了全面地表达客观事物,在C语言中则必须使用(定义)常量和变量(表示事和物)。同时,给出它们的类型(表示数值)。3.2.1 常量:程序执行中其值不变的量。 类型:一般(短整)常量、长整常量、浮点常量、字符常量、字符串常量。符号常量定义式: #define 符号常量名;例: #defin

9、e PI 3.14 意义:3.2.2 变量:程序在执行过程中其值变化的量。 类型:一般(短整)变量、长整变量、浮点变量、字符变量、字符串变量。定义式: 数据类型 变量名; 例: int k; 意义:定义整型变量k。3.2.3 变量赋初值在C语言中常需要对变量预先设置初值,可以使用数的三种表示形式:十进制数、八进制数、十六进制数和数据类型为变量赋初值。例3.1#define PRICE 30main ()int num,total;num=10;total=num*PRICE;printf (“total=%dn”,total);本程序的作用是说明常量的定义、赋值和使用。例3.2main ( )

10、 int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf (“a+u=%d,b+u=%dn”,c,d);本程序的作用是说明整型变量的定义、赋初值、运算和其值的输出。例3.3main ( ) char c1,c2; c1=97; c2=98; printf (“%c %cn”,c1,c2);printf (“%d %dn”,c1,c2);本程序的作用是说明字符型变量的定义、赋初值和输出。例3.4main ( ) int a=3; float f=3.1415926;char c=a; printf (“nnn%d %f %cn”

11、,a,f,c);本程序的作用是说明整型、字符、浮点变量的定义、赋初值和输出。注:标识符:由字母、数字和下线符构成,标志和识别一定意义的字符串。 类型:关键字、特定字、一般标识符(由用户设定)。 作用:代表常量、变量、数据类型、函数名字。关键字:在C语言中,具有严格特定含义的标识符。 见教材 P365 附录B2.3 运算符 在客观事物使用数和量表示完以后,还要对它们进行处理,进行运算,这就要涉及C语言中的运算符。还要表达它们之间的关系,又要用到C语言中的表达式。那么C语言中提供了哪些运算符和表达式让我们使用呢?3.3.1 运算符C语言中的运算符分为以下几类:1. 1.算术运算符 + - * /

12、%2. 2.关系运算符 = = !=3. 3.逻辑运算符 & | !4. 4.位运算符 | &5. 5.赋值运算符 =6. 6.条件运算符 ? :7. 7.逗号运算符 ,8. 8.指针运算符 * &9. 9.求字节数运算符 sizeof10. 10.强制类型转换 (类型)11. 11.分量运算符变 . - 12. 12.下标运算符 13. 13. 其它 函数调用运算符 ( )见教材 P365 附录C3.3.2 算术运算符 自增、自减算术运算符+i; -i; 意义:在使用i之前,先使i的值加1(减1)。i+; i-; 意义:在使用i之后,使i的值加1(减1)。 例: int m,n,s,t,k=

13、10; m=+k; n=k+; s=-k; t=k-;3.3.3 复合运算符 a+=3; 等价于 a=a+3; x*=y+8; 等价于 x=x*(y+8); x%=3; 等价于 x=x%3; 2.4 表达式表达式:使用运算符将运算(操作)对象连接起来的、符合C语法规则的式子。算术表达式、逻辑表达式、字位表达式、强制类型转换表达式、逗号(顺序)表达式、赋值表达式、条件表达式、指针表达式。例3.5main ( ) int a,b,c; float d,f=3.1415926; a=b=c=9; d=a/f; printf (“nnn%d %d %d %f n”,a,b,c,f);printf (“

14、n%f n”,d);本程序的作用是说明赋值表达式、算术表达式的使用。例3.6main ( ) int m=10;n=3; int s,t; s=m/2; t=n%2; printf (“nnn%d %d n”,s,t);本程序的作用是说明除法运算符和取余运算符的区别。例3.7main ( )int i,j,k,l;i=2,j=3;k=i+;l=-j;printf (“%d %d %d %d”,i,j,k,l);本程序的作用是说明自加、自减运算符的使用。例3.8main ()int num=1,total=11;num+=5;total%=num;printf (n %d %dn,num,tot

15、al);本程序的作用是说明复合运算符的使用。例3.9main ( ) float x; int i; x=3.6; i=(int)x; printf (“n x=%f i=%dn”,x,i);本程序的作用是说明强制类型转换的问题。2.5 逗号运算符与逗号表达式以前我们学过 + - * /(特别) %(特别) = % 要求两边的操作数必须是整数如: 5%3 结果为 2 这个运算符通常用作判断一个数是否能被另一个数整除。这节课我们学习逗号运算符,我们通过逗号表达式来看一下逗号运算符是怎么回事。逗号表达的定义:用逗号连接的表达式,叫逗号表达式格式: 表达式1, 表达式2, 表达式3, 表达式4,表达

16、式n逗号表达式的运算顺序:表达式1 表达式2 表达式3表达式4表达式n逗号表达式结果:最后一个表达式的结果将作为整个表达式的结果。例1、 例1、看如下程序,写出结果#include stdio.hmain()int k;k=(2+3,7,0,88);printf(k=%dn,k); /结果是 88例2、 例2、看如下程序,写出结果#include stdio.hmain()int k;k=2+3,7,88;printf(k=%dn,k); /结果是 5说明:赋值符号的优先级要高于逗号运算符,逗号运算符的优先级在所有的运算符当中是最低的。 例3、看如下程序,写出结果#include stdio.

17、hmain()int k,i=5;k=(i+,i+,i+5); / k=(i=i+1),(i=i+1),(i+5);printf(k=%dn,k); /结果为 12例4、看如下程序,写出结果#include stdio.hmain()int k,i=5;k=i+,i+,i+5; / k=(i=i+1),(i=i+1),(i+5);printf(k=%dn,k);复习以前的知识运算符+ 和 - - 运算的规则是一样的,我们以+为例进行讲解。+运算符只能用于单变量身上,如i+, (a+b)+ 这样写就不对了。用于单变量身上表示单变量本身自增1。自增运算符有两种情况,一种作为前缀,别一种作为后缀。一

18、、当+作为前缀或是后缀时,变量执行的结果都是一样的#include stdio.hmain()int i=5;i+;printf( %d n,i); / 6 #include stdio.hmain()int i=5;+i;printf( %d n,i); / 6 说明:无论是前缀还是后缀,i+(或+i) 都是使i自增1(i=i+1)二、+作为前缀与+作为后缀,表达式的值是不一样的#include stdio.hmain()int k,i=5;k=i+;printf(%d %d n,k,i); /5 6#include stdio.hmain()int k,i=5;k=+i;printf(%d

19、 %d n,k,i); / 6 6说明:在上面的两个程序中,K存放的都是自增表达式的值,两个自增表达式的值是不同的。 (1) +i K得到的是i自增后的结果,我们用一句话表示:先运算,后取值。(2) (2)i+K得到的是i自增后前的结果,我们用一句话表示:先取值,后运算。总结一下:i+ 和 +i 主要区别只是表达式的值不同,但是他们功能是一样的,都是使i自增1.第三章 顺序结构在这一章中,我们主要讲printf和scanf的使用,若在程序中使用printf和scanf,则应在程序的第一行用#include 将”stdio.h”文件包含进来。3.2 数据输出3.2.1 printf函数的使用以前

20、我们上讲过一个例子:#include stdio.hmain()double a,b;a=1.2;b=1.2;printf(a=%f,b=%f n,a,b);说明:在上面的printf中,存在一个格式符 %f ,%f是专门用来输出double变量内容,那么上面程序的执行结果:printf的使用方法:printf(“字符串”,输出的变量);说明:1、双引号中的字符除了格式符(是用来输出变量的)之外,其它字符是原样输出。2、我们主要学习哪些格式符呢?double %f(%lf) float %fint %d long %ld例1、写出程序结果#include stdio.hmain()float

21、x,y;x=33.0; y=66.0;printf(x=%f,y=%f,x,y);例2 写出程序结果#include stdio.hmain()int k;int a=11,b=3;k=a%b;printf(k=%d n,k);例3写出程序结果#include stdio.hmain()long k;long a=9,b=3;k=a%b;printf(k=%ld n,k);3、printf(“字符串”,输出的变量); 该格式中第二部分是可以省略,那么就输出字符串。#include stdio.hmain()printf(*Hello World*n);4、可以在%d之间加上一个数字,用来指定输

22、出数所占的宽度,如%5d,则数占5个字符的宽度,字符默认向右对齐。例1、#include stdio.hmain()int a=3;int b=50;int c=500;printf(%5dn,a);printf(%5dn,b);printf(%5dn,c);例2、#include stdio.hmain()int a=3; int b=50;int c=500; int d=5000;printf(%5dn,a);printf(%-5dn,b);printf(%dn,c);printf(%3dn,d);若实际宽度 指定的宽度,则%nd数字默认向右对齐若实际宽度 指定的宽度,则正常输出5、对于

23、输出(float 或 double ) 的%f,可以在%和f之间,加上m.n ,%m.nfm:是指定整个数所占宽度 n:指定小数位数如:a=3.145678 若想保留两位小数输出,则 %4.2f#include stdio.hmain()double a=3.145678;printf(a=%4.2f n,a); / 3.15有时出题人比较懒,他容易将%4.2f写成 %.2f,%.2f的意思:小数按两位输出,整数部分要原样输出的。#include stdio.hmain()double a=300.145678;printf(a=%.2f n,a); / 300.15 /%1.2f 是先保证小

24、数位输出,然后整数位原样输出3.3 数据输入如何能过键盘给程序中的变量赋值呢?#include stdio.hmain()double a,b,area;a=1.2;b=1.2;area = a*b;printf(a=%.2f,b=%.2f,area =%.2f n,a,b,area);通过 scanf函数给变量赋值,看一下scanf函数的使用形式:scanf(“字符串”,变量的地址);说明1、给变量赋值也要能过格式符 double %lf float %fint %d long %ld现在我们举一个最常见的例子:#include stdio.hmain()double a,b,area;sc

25、anf(%lf%lf,&a,&b);area = a*b;printf(a=%.2f,b=%.2f,area =%.2f n,a,b,area);注意:scanf(%lf%lf,&a,&b); 双引号内的格式符要挨着,不要加一些其它字符,要赋值的变量前加&2、如何给变量赋值#include stdio.hmain()double a,b,c,area;scanf(%lf%lf%lf,&a,&b,&c);area = a*b+c;printf(a=%.2f,b=%.2f,c=%.2f,area =%.2f n,a,b,area);1) 1 2 3 回车2) 1 回车 2 回车 3 回车3) 1

26、tab 23总之:数据之间可以任意加空格,回车,Tab,最后用回车表示数据输入结束。3、在scanf中,我们可以指定所要读取数的宽度#include stdio.hmain()int a,b,c,area;scanf(%3d%2d%4d,&a,&b,&c);area = a*b+c;printf(a=%3d,b=%3d,c=%3d,area =%3d n,a,b,c,area);说明:若在键盘中输入1234567890时,此时%3d读取了123赋给了a,%2d读取了45赋给了b,%4d读取了6789赋给了c,4、用%*d可以是跳过一个数#include stdio.hmain()int a,b

27、,area;scanf(%d%*d%d,&a,&b);area = a+b;printf(a=%3d,b=%3d,area =%3d n,a,b,area); /若输入123 456 789说明:此时第一个%d读取了123,遇空格结束,第二%*d会跳过456,第三个%d读取了789。例1、#include stdio.hmain()int a,b,area;scanf(%3d%*3d%3d,&a,&b);area = a+b;printf(a=%3d,b=%3d,area =%3d n,a,b,area); /若输入123 456 789例2、#include stdio.hmain()int

28、 a,b,area;scanf(%2d%*3d%2d,&a,&b);area = a+b;printf(a=%3d,b=%3d,area =%3d n,a,b,area);输入1234567890说明:读取了12送给了a,跳过345,读取了67赋给了b.最后注意,同学们在上机的时候总爱出现这样的毛病:#include stdio.hmain()int a,b,area;scanf(%d,%d,%d,&a,&b,&c);area = a+b+c;printf(a=%3d,b=%3d,c=%3d,area =%3d n,a,b,c,area);同学们千万要注意:在scanf的双引号,一定要按着双引

29、号的字符原样输入,这样才是正确的,如上题:123,456,789#include stdio.hmain()int a,b,c,area;scanf(please input a,b,c: %d%d%d,&a,&b,&c);area = a+b+c;printf(a=%3d,b=%3d,c=%3d,area =%3d n,a,b,c,area);此时正确的输入方法是:please input a,b,c:123 12 13.4 复合语句3.4.1 复合语句复合语句的概念:就是用 括起来的0个或多个语句叫复合语句。复合语句在C语言语法上来说,是作为一个整体(也可以说作为一条大的语句)如:#inc

30、lude stdio.hmain()int a,b,c,area;scanf(%d%d%d,&a,&b,&c);area = a+b+c;printf(a=%3d,b=%3d,c=%3d,area =%3d n,a,b,c,area);这个C语言程序从上到下一共3条语句。3.4.2 空语句空语句:就是一个单分号,空语句也是一条合法的语句。#include stdio.hmain()int a,b,c,area;scanf(%d%d%d,&a,&b,&c);area = a+b+c;printf(a=%3d,b=%3d,c=%3d,area =%3d n,a,b,c,area);该程序一共是5条

31、语句,当计算机执行到第四条语句(空语句)时,计算机什么也不干。3.5 程序举例例3.1 从键盘输入两个整数,给x和y赋值,在程序中使x和y的值交换,然后再输出交换后的x和y的值。#include stdio.hmain()int x,y,t;scanf(%d%d,&x,&y);t=x; x=y; y=t;printf(x=%d,y=%d n,x,y);例3.2 输入一个double 数给n,输出该数时,要对小数点的第三位进行四舍五入,后输出n。#include stdio.hmain()double n;scanf(%lf,&n);n=n*100;n=n+0.5;n=(int)n;n=n/10

32、0;printf(n=%.2f,n);第4章 选择结构4.1 关系运算与逻辑运算4.1.1 关系运算关系运算主要是由 = 2;printf( 12 de zhi %dn, k); / 0k=1=2;printf( 1=2 de zhi %dn, k); / 0k=1!=2;printf( 1!=2 de zhi %dn, k); /14.1.2 逻辑运算逻辑运算符主要是由 &(并且)、|(或者)、!(非)等运算符组成。现在说一下运算规则: !T 结果为 F!F 结果为 T |T | T T T | F TF | T TF | F F &T & T T T & F FF & T FF & F F

33、例1、(T & T T)#include stdio.hmain()int k;k=32 & 31;printf(%d,k);例2、(F & T F)#include stdio.hmain()int k;k=312 & 31;printf(%d,k);例3、(T | F T)#include stdio.hmain()int k;k=1312 | 311;printf(%d,k);例4、(!T 结果为 F)#include stdio.hmain()int k;k=!(1312);printf(%d,k);说明:在逻辑表达式中,若其中一个表达式是非0的,那么在逻辑判断中,计算机认为是真#in

34、clude stdio.hmain()int k;k=(1312) & -3;printf(%d,k);4.2 if语句if语句一共和2种基本的使用形式,还有2种嵌套的使用形式,当然考试主要考两种基本的使用形式,关于嵌套同学们认识一下就可以了。基本形式1、1、使用形式:if(条件)语句2、执行过程:若条件成立,则执行if中的语句,否则执行if语句后面的语句。3、例1:从键盘输入两数,输出最大数:#include stdio.hmain()int m,n; int max;scanf(%d%d,&m,&n);max=m;if(maxn)max=n;printf(max=%d n,max);例3、

35、 例3、从键盘输入三数给a,b,c变量,再输出a,b,c变量时,三数是由大到小的顺序输出#include stdio.hmain()int a,b,c;int t;scanf(%d%d%d,&a,&b,&c);if(a b)t=a; a=b; b=t;if(a c)t=a; a=c; c=t;if(b c)t=b; b=c; c=t;printf(%d %d %d n,a,b,c);#include stdio.hmain()int a,b,c;int t;scanf(%d%d%d,&a,&b,&c);if(a b)t=a; a=b; b=t;if(a c)t=a; a=c; c=t;if(b

36、 c)t=b; b=c; c=t;printf(%d %d %d n,a,b,c);运行:没有达到预期,因为if语句中,若条件成立时,同时执行多条语句,多条语句必须用括起来,构成复合语句,才可以。上面程序中,if后面的多条语句没有被括起来,if只与最近的语句搭配。正确的写法如下:#include stdio.hmain()int a,b,c;int t;scanf(%d%d%d,&a,&b,&c);if(a b)t=a; a=b; b=t;if(a c)t=a; a=c; c=t; if(b n)max=m;elsemax=n;printf(max=%d n,max);从键盘输入一个整数,若能

37、被3整除,打印Yes ,否则打印No#include stdio.hmain()int n;scanf(%d,&n);if(n%3=0)printf(Yes);elseprintf(No);if 语句是一条特殊的语句,所以他可以替换if语句中的语句。嵌套形式一:#include stdio.hmain()int s; scanf(%d,&s);if(s=60)if(s=90)printf(youxiu n);elseprintf(jige n);elseprintf(Faild! n);if(条件)if(条件)语句1else语句2else语句2#include stdio.hmain()int

38、 s; scanf(%d,&s);if(s=90)printf(youxiu n);elseprintf(jige n);嵌套形式二:if(条件)语句2else if(条件)语句1else语句2例如:输入一成绩到变量S中,根据学生成绩的等级分别输出ABCDE等。#include stdio.hmain()int s; scanf(%d,&s);if(s=90)printf(A n);else if(s=80)printf(B);else if(s=70)printf(C);else if(s=60)printf(D);else printf(E);4.3 条件表达式先择结构呢我们学习了if结构,现在我们还要学习另外一种选择结构,叫条件表达式。我们首先看一下条件表达式的构成:条件 ? 表达式1 : 表达式2 条件表达式的执行过程:若条件成立,则计算机执行e1,否则执行e2。例1:#i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com