C语言编程.docx
《C语言编程.docx》由会员分享,可在线阅读,更多相关《C语言编程.docx(159页珍藏版)》请在冰点文库上搜索。
C语言编程
教案一C语言设计概述
授课年级
二年级
授课班级
11计算机1、2、3
授课节次
2
教学课题
C语言概述
教学
目标
了解C语言出现的历史背景
正确理解C语言特点
熟悉简单C程序结构、特点、执行过程
掌握运行C程序步骤与方法
重点
难点
正确理解C语言特点
熟悉简单C程序结构、特点、执行过程
教学资
源准备
教案、实例
教学活动流程设计
旁注
第1章C语言概述
§1.1C语言出现的历史背景
1、程序设计语言的发展
(1)机器语言:
计算机能直接识别的语言。
(2)汇编语言:
助记符编写的语言。
(3)高级语言:
面向对象程序设计语言(如VB程序设计语言、JAVA程序设计语言)和面向过程程序设计语言。
2、C语言出现历史背景
(1)时间:
1972–1973
(2)地点:
美国贝尔实验室
(3)目的:
开发UNIX操作系统
§1.2C语言特点
1、语言简洁、紧凑、灵活
2、运算符和数据类型丰富
3、程序设计结构化、模块化
4、生成目标代码质量高
5、可移植性好
§1.3简单C程序介绍
例1.1第一个程序Hello,World!
教学活动流程设计
旁注
#include
main()
{
printf(“Hello,World!
”);
}
说明:
1、#include是文件包含编译预处理命令,stdio.h是标准输入输出头文件
1、main为主函数,每个C程序有且必须有一个主函数,无论其位置在哪,程序总是从main函数开始执行
2、printf是C语言中的输出函数,双引号中的字符串原样输出
3、;分号是C语言中的语句结束标志
例1.2求两数之和
#include
main()
{
inta,b,sum;/*Definatethreevariables*/
a=123;
b=456;
sum=a+b;
printf(“Sumis%d”,sum);
}
说明:
1、%d是输出格式字符,控制输出时的数据类型和格式,表示十进制整数
2、/**/为注释
例1.3求任意两数之和
#include
main()
{inta,b,sum;
scanf(“%d,%d”,&a,&b);
sum=add(a,b);
printf(“Sum=%d”,sum);
}
intadd(intx,inty)
{intz;
z=x+y;
return(z);
}
说明:
1、scanf是C语言中的输入函数,从键盘读入两个十进制整数,分别放入变量a和b对应的
地址单元中
2、调用函数add,定义函数add,函数返回值为整型,形参x和y为整型
3、return将z值返回,赋给sum
C语言的格式特点:
v习惯用小写字母,大小写敏感
v不使用行号,无程序行概念
v可使用空行和空格
结构特点:
ØC程序由函数构成
ØC程序由语句组成
Ø/**/为注释,不产生编译代码
教学活动流程设计
旁注
§1.4C程序的上机步骤
1、C程序开发步骤
(1)编辑源程序:
扩展名为.c
(2)编译目标程序:
扩展名为.obj
(3)连接成可执行程序:
扩展名为.exe
2、VC++6.0集成开发环境的使用方法
(1)启动VC++6.0,建立一工作区
(2)在此工作区中建立一工程
(3)在此工程中建立一文件(注意扩展名为.c)编辑后执行程序
作业
1、简述C程序的特点;
2、编写一个简单的C程序,在屏幕上显示“IStudyCProgramming”
板
书
设
计
第一章C语言设计概述
1、C语言的历史背景
2、C语言的特点
3、简单C程序介绍
4、C程序的组成
5、C程序的上机步骤
6、作业
教
学
后
记
教案二算法
授课年级
二年级
授课班级
11计算机1、2、3班
授课节次
2
教学课题
算法1
教学
目标
算法的表示形式-----流程图
C中数据类型的分类
常量与变量
整型数据表示方法、存储形式、分类
重点
难点
整型数据在内存中的存放形式
如何解决整数的溢出问题
教学资
源准备
教案、实例
教学活动流程设计
旁注
算法的概念
1、算法:
为解决一个问题而采取的方法和步骤。
2、程序=算法+数据结构
3、算法是程序的灵魂
简单算法举例
1、求1×2×3×4×5
§2.3算法的特性
1)有穷性
2)确定性
3)有0个或多个输入
4)有一个或多个输出
5)有效性
怎样表示一个算法
一、算法的表示形式
1、用自然语言表示
2、用流程图表示
3、用伪代码表示
4、用计算机语言表示
二、流程图:
传统流程图、N-S流程图
1、传统流程图的表示方法
2、三种基本结构传统流程图与N-S流程图
教学活动流程设计
旁注
一、数据与数据类型
1、数据:
程序加工处理的对象。
2、数据类型:
具有某种性质数据的集合。
二、C中数据类型
整型
字符型单精度型
基本类型浮点型双精度型
枚举型
数组
C中数据类型构造类型结构体
共用体
指针类型
空类型
常量与变量
一、常量
1、定义:
在程序运行过程中其值保持不变的量。
2、常量类型
Ø数值型整型(123)、实型(12.3)
Ø字符型字符型(‘a’)、字符串型(“a”)
Ø符号常量:
#definePAI3.1415926
二、变量
1、定义:
在程序运行过程中其值可以改变的量。
2、变量在内存中存放形式:
一个变量有一个名字,并在内存中占一定的存储单元,用来存放变量的值。
4、变量的定义格式(变量必须先定义后使用)
类型说明符变量名1,变量名2,………..,变量名n;
例:
inta,b,c;
3整型数据
一、整型常量的表示方法
1、十进制:
123
2、八进制:
0123=(123)8
3、十六进制:
0x123=(123)16
二、整型变量
1、整型数据在内存中的存放形式
Ø在内存中以二进制补码的形式存放,占用2个字节的内存空间
Ø数的编码:
原码、反码、补码
原码:
数的二进制编码。
反码:
正数等于原码,负数将原码逐位变反(符号位为1)
补码:
正数等于原码,负数将原码变反末位加1。
2、整型变量分类
基本型:
无符号unsignedint、有符号int
短整型:
无符号unsignedshortint、有符号shortint
长整型:
无符号unsignedlongint、有符号longint
教学活动流程设计
旁注
3、例题(整型数据的溢出问题)
main()
{inta,b;
a=32767;
b=a+1;
printf(“%d,%d”,a,b);
}
作业
1、简述C程序中有哪些常用的数据类型;
2、P15/3,5
板
书
设
计
算法
7、算法的基本概念;
8、C语言中的数据结构;
9、常量;
10、变量;
11、变量的种类;
12、例题分析
教
学
后
记
教案三浮点型数据
授课年级
二年级
授课班级
11计算机1、2、3班
授课节次
2
教学课题
浮点型数据
教学
目标
浮点型数据与字符型数据的分类、表示方法与存储形式
变量的赋值形式
各种类数值型数据间相互转换的规则与方法
重点
难点
灵活掌握各种数据的存储形式
教学资
源准备
教案、实例
教学活动流程设计
旁注
一、浮点型常量的表示方法
1、十进制小数:
数字+小数点
例:
0.123,123.0,.456
2、指数形式:
123×102=123e2=1.23e4
要求:
E前必须有数字,E后数字必须为整数。
规范化指数形式:
小数点左侧有且仅有一位非零数字。
二、浮点型变量
1、浮点型数据在内存中存放形式
指数形式存放,占用4个字节,如图所示
小数符号
小数
指数符号
指数
例:
1.23e4
+
1.23
+
4
结论:
小数位数越多,精度越高;指数位数越多,范围越大。
2、浮点型变量分类
单精度:
float
双精度:
double
长双精度:
longdouble
3、舍入误差:
见书中例题。
教学活动流程设计
旁注
字符型数据
一、字符常量
1、定义:
用一对单引号括起来的一个字符或以\开头的字符序列。
‘a‘,\n(又称转义字符)
2、转义字符(见书中表)
例:
\101=1*80+1*82=65即表示字母A
二、字符变量
1、定义格式:
charc1,c2;
2、作用:
存放一个字符
4、字符串常量
v定义:
用一对双引号括起来的字符序列
v在内存中存放形式:
末尾加串结束标志\0(系统自动加)
例:
“HELLO”
H
E
L
L
O
\0
v字符串常量不能赋给一个字符变量。
例:
charc1;/*字符变量*/
c1=”hello”/*赋值错误*/
变量赋初值
一、赋值形式
1、定义变量时赋值
inta=3;
floatf=3.56;
charc=’a’;
2、部分赋值
inta,b,c=5;
3、赋同一个初值
inta=3,b=3,c=3;
教学活动流程设计
旁注
浮点型数据与字符型数据的分类、表示方法与存储形式
变量的赋值形式
各种类数值型数据间相互转换的规则与方法
作业
1、P17/1,2
2、P18/3
板
书
设
计
浮点型数据
12、浮点型常量的表示方法;
13、浮点型变量的分类(单精度、双精度、长双精度);
14、常量;
15、变量;
16、字符常量;
17、字符变量;
18、例题分析;
教
学
后
记
教案四简单程序的调试及数学运算符
授课年级
二年级
授课班级
11计算机1、2、3
授课节次
2
教学课题
简单程序的调试及数学运算符
教学
目标
通过上机调试程序掌握各种数据类型的表示方法、存储形式
掌握各种不同数据间混合运算的运算规则
掌握各种运算符的使用方法
通过程序调试正确理解各种表达式的运算结果
重点
难点
掌握各种运算符的使用方法
教学资
源准备
教案、实例、上机操作
教学活动流程设计
旁注
上机按要求调试下程序
1、输入并运行下程序
main()
{inta,b;
a=32767;b=a+1;
printf(“%d,%d\n”,a,b);
}
2、输入并运行下程序
main()
{charc1,c2;
c1=’a’;c2=’b’;
printf(“%c,%c\n”,c1,c2);
}
1)将上面printf语句改成printf(“%d,%d\n”,c1,c2);结果?
2)将charc1,c2;改成intc1,c2;结果?
3)将c1=’a’;c2=’b’;改成c1=“a”;c2=“b”;结果?
4)将c1=’a’;c2=’b’;改成将c1=300;c2=400;改成结果?
3、输入并运行下程序
main()
{charc1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;
printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);
printf(“%c%c\n”,c4,c5);
}
教学活动流程设计
旁注
4、输入并运行下程序
main()
{inti,j,m,n;
i=8;j=10;
m=++i;n=j++;
printf(“%d,%d,%d,%d\n”,i,j,m,n);
}
1)将m=++i;n=j++;改成m=i++;n=++j;结果?
2)将m=++i;n=j++;删除并将printf(“%d,%d,%d,%d\n”,i,j,m,n);改为printf(“%d,%d,%d,%d\n”,i,j,i++,j++);结果?
算术运算符和算术表达式
一、算术运算符和算术表达式
1、基本算术运算符
+(加法或正值运算)1+2,+100
-(减法或负值运算)1-2,-100
*(乘法运算符)1*2
/(除法运算符)1/2两整数相除结果为整数。
½=0
%(模或取余运算符)要求运算符两侧均为整数如5/3=1
2、算术表达式和运算符的优先级与结合性
1)算术表达式的定义:
由算术运算符、括号将操作数连接起来符合C语法规则的式子。
2)优先级与结合性
*/%高(左至右结合)
+-低(左至右结合)
例题:
X/(67-(12+Y)*A)判断计算先后顺序?
3、强制类型转换运算符
1)转换格式:
(类型名)(表达式)
作用:
将表达式转换成所需的格式。
main()
{floatx;intI;
x=3.6;
I=(int)x;
printf(“x=%f,I=%d”,x,I);
}
4、自增、自减运算符
1)++i,--i(先使i的值加1或减1,再使用i)
2)i++,i--(先使用i,再使i加1或减1)
3)++与--只能用于变量,不能用于常量或表达式
例:
5++,(3*8)++错误
4)++与--结合方向自右向左。
-I++=-(I++)
I=3;printf(“%d,%d”,I,I++);
教学活动流程设计
旁注
赋值运算符和赋值表达式
一、赋值运算符
1、运算符:
为等号“=”
2、与数学运算的区别
•数学运算符是判断等号两侧的数值是否相等。
•赋值运算符是将等号右侧的数值赋给左侧。
3、类型转换
1)将实数赋给整数,舍去小数部分。
2)将整数赋给单双精度变量时,数值不变,但以浮点形式存储到变量中。
3)将一个double赋给float时,截取前7位有效数字。
4)将字符型赋给整型时,无符号时高8位补零,有符号时,高8位补1
5)将一个intshortlong赋给一个char时,只将低8位赋给char
4、复合赋值运算符
定义:
在赋值运算符前加其他运算符
a+=b等价a=a+b
x%=y+3等价x=x%(y+3)
5、赋值表达式
格式:
<变量><赋值运算符><表达式>
作业
1、上机调试课堂上所学的实例;
2、写出上机调试程序时出现的错误及解决方法;
3、P19/4,5
板
书
设
计
程序调试及算术、关系运算符
19、上机调试课件中的程序;
20、上机调试例1及例2;
21、算术运算符和算术表达式;
22、关系运算符及关系表达式;
23、理解赋值号与数学中等于号的区别;
教
学
后
记
教案五运算符与表达式详解
授课年级
二年级
授课班级
11计算机1、2、3班
授课节次
2
教学课题
运算符与表达式详解
教学
目标
运算符的各类
表达式的种类
算术运算符
自增自减运算
重点
难点
算术运算符
自增自减运算
教学资
源准备
教案、实例、上机操作
教学活动流程设计
旁注
运算符与表达式详解
【问题】日常生活中我们会进行各种各样的数据运算。
在C语言中将如何表示这些运算呢?
C语言的运算符非常丰富。
除控制语句、输入输出语句以外的几乎所有的基本操作都作为运算符处理的。
运算符的使用方法也非常灵活,这是C语言的主要特点。
C语言运算符一般可分为以下几类:
1.算术运算符+-*/%
2.关系运算符>>=<<===!
=
3.逻辑运算符!
&||
4.位运算符<<>>~|^&
5.赋值运算符=及其扩展赋值运算符
6.条件运算符?
:
7.逗号运算符,
8.指针运算符*&
9.求字节数运算符sizeof
10.类型转换运算符(类型)
教学活动流程设计
旁注
11.分量运算符.->
12.下标运算符[]
13.其他如函数调用运算符()
本节将重点介绍算术运算符、赋值运算符、逗号运算符,其他运算符将在以后各章中陆续介绍。
详细的运算符列表见附录。
算术运算符与算术表达式
1.算术运算符
C语言中基本的算术运算符共有5种:
+(加),-(减),*(乘),/(除),%(取模,或称求余运算符)
C语言规定:
(1)%(取模运算符),仅用于整型变量或整型常量的运算,如:
7%3,其值为1。
(2)/(除运算符),当对两个整型的数据相除时结果为整数,如:
7/3,其值为2,舍去小数部分,相当于整除操作。
2.算术表达式
(1)算术表达式定义
由算术运算符、括号以及操作对象组成的符合C语言语法规则的表达式称为算术表达式。
如:
a+b-c/d*(a-c)。
(2)优先级
一个表达式中若有多个运算符混合在一起,则计算的先后次序为先算括号,再根据相应运算符的优先级,高的优先。
乘、除、取模运算符的优先级高于加、减运算符的优先级,即先乘、除、取模,后加、减。
算术运算符的优先级在所有运算符中是较高的,仅次于括号、单目运算符、类型转换运算符和求字节数运算符。
(3)结合方向
当一个运算对象两侧的运算符的优先级别不同时,应遵循优先级高的先处理的规则。
当一个运算对象两侧的运算符的优先级别相同时,应遵循运算符的结合方向。
算术运算符的结合方向是从左至右。
3.自增自减运算符
C语言中,增1运算也可以写为++运算;减1运算也可以写为--运算。
++和--运算是C语言中两个较为独特的单目运算符。
它们既可以放在操作数前,也可以放在操作数后,并且操作对象只能是变量,不能是常量或表达式。
自增自减运算符的作用是将操作对象的值增加1或减去1。
虽然自增自减运算符既可用于前缀运算,也可用于后缀运算,但其意义不同。
i++,i--/*表示在使用i值之后将i的值加(减)1*/
++i,--i/*表示在使用i值之前将i的值加(减)1*/
例如:
设i的原值为5,则执行下面的赋值语句:
j=i++;/*先将i的值赋给j,i再自增1,赋值语句执行完后i的值为6,j的
教学活动流程设计
旁注
值为5*/
j=++i;/*先将i的值自增1,再赋给j,赋值语句执行完后i的值为6,j的值为6*/
【例】输出下面程序中i的值
/*EX2-3.C*/
main()
{
inti=5,j;
j=++i+i++;/*一个前增1使i变成6后才进行加法运算,实际是6+6*/
printf("%d%d\n",i,j);
j=(++i)+(++i)+(i++);
printf("%d%d\n",i,j);
printf("%d%d\n",i+j,j++);
}
运行结果为:
712
1027
3827
作业:
P27/1,2,3P29/3
板
书
设
计
运算符与表达式详解
24、运算符的种类;
25、表达式的种类;
26、常用的算术运算符;
27、自增与自减运算
28、习题分析
教
学
后
记
教案六赋值运算符与逗号运算符
授课年级
二年级
授课班级
11计算机1、2、3班
授课节次
2
教学课题
赋值运算符与逗号运算符
教学
目标
赋值运算
逗号表达式
复合运算
重点
难点
赋值运算符与数学中等号的区别
逗号表达式
教学资
源准备
教案、实例、上机操作
教学活动流程设计
旁注
一、赋值运算
1.赋值运算符
C语言中赋值运算符为“=”,它的作用是将赋值运算符右边表达式或常量的值赋给其左边的变量。
例如:
a=5;/*表示把一个常量5赋给变量a*/
x=a+5;/*表示将表达式a+5的值赋给变量x*/
【注意】如果赋值运算符两侧的类型不一致,在赋值时要进行类型转换。
我们将在下一节“赋值转换”中给大家作说明。
2.复合赋值运算符
C语言允许在赋值运算符“=”之前加上其他运算符以构成复合的赋值运算符。
凡是双目运算符,都可以和赋值运算符一起组合成复合的赋值运算符。
在C语言中,可以使用的复合赋值运算符有:
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
例如:
a+=5; 等价于 a=a+5;
教学活动流程设计
旁注
a*=b+5;等价于a=a*(b+5);
a%=5;等价于a=a%8;
C语言中采用这种复合运算符,一是为了简化程序,使程序精练;二是为了提高编译效率,产生质量较高的目标代码。
3.赋值表达式
(1)赋值表达式的一般形式为:
(变量)(赋值运算符)(表达式)
其功能是将赋值运算符右边的“表达式”的值赋给赋值符号左边的变量。
整个赋值表达式的值就是被赋值的变量的值。
例如:
b=4;/*表示把4赋值给变量b,整个赋值表达式的值为4*/
赋值表达式也可以包含复合的赋值运算符,例如:
a+=a-=a*a;
设a的初值为5,其求解步骤为:
①先计算表达式a-=a*a的值,它相当于a=a-a*a=5-5*5=-20
②再计算a+=-20的值,它相当于a=a+(-20)=-20-20=-40
赋值表达式中的“表达式”又可以是一个赋值表达式,例如:
a=(b=5);
括号内的b=5表示一个赋值表达式,其值为5。
整个赋值表达式相当于是由b=5和a=b两个赋值表达式组合而成的。
因此a的值为变量b的值,也为5。
这个赋值表达式的值为变量a的值,也为5。
(2)优先级
赋值运算符的优先级较低,在所有运算符中,它的优先级仅高于逗号运算符。
例如:
a=b+6;/*由于赋值运算符的优先级低于算术运算符,所以先算b+6再做赋值运算*/
(3)结合性
赋值表达式按照自右向左的顺序结合,例如:
a=5+(b=6);
先做表达式b=6,得到变量b的值为6,表达式的值为6;再做a=5+6,由于赋值运算符的优先级低于算术运算符,所以先算5+6的结果为11,再做a=11的赋值运算。
二、逗号运算符与逗号表达式
1.逗号运算符