C语言教案.docx
- 文档编号:18423228
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:67
- 大小:355.16KB
C语言教案.docx
《C语言教案.docx》由会员分享,可在线阅读,更多相关《C语言教案.docx(67页珍藏版)》请在冰点文库上搜索。
C语言教案
Chap.1程序设计基本知识
1.1程序程序设计程序设计语言
程序──指人们对所要处理或求解问题的对象、处理规则或过程的描述
●计算机的每一种基本操作,都用一条指令来实现
程序是计算机用以实现其功能的一组指令序列
Ex101#include
main(){inta,b,sum;/*int整型*/
a=123;b=456;sum=a+b;
printf("sumis%d\n",sum);/*%d整型*/
}
Ex102#include
main(){inta,b,c;
scanf("%d,%d",&a,&b)
c=max(a,b);
printf("max=%d\n",c);
}
max(intx,inty)/*定义整型函数max*/
{intz;/*x,y:
形参*/
if(x>y)z=x;
elsez=y;
return(z);/*返回函数值z*/}小结:
①C程序是由函数构成的函数是C程序的基本单位
②一个函数由两部分组成
③一个C程序是从main()函数开始执行的
④C程序书写格式自由:
一行内可以写几个语句;一个语句也可以分写在几行中
⑤每个语句和数据定义的最后必须有一个分号
⑥注释/*注释部分*/
程序设计─编写编辑编译调试连接运行分析整理结果
算法─为解决某个特定问题而采取的有限的步骤
●分析问题
●建立数学模型
●确定数据结构
●设计算法
●编写编辑程序
●编译调试程序
●运行分析结果
●有穷性
●确定性
●可行性
●有零个或多个输入
●有一个或多个输出
计算机语言──人和计算机交流使用的人和计算机都能接受和理解的语言,即人用以编写程序的语言,因此又叫程序设计语言。
C语言就是一种程序设计语言。
C语言的特点
①结构化语言基本结构:
顺序结构选择结构循环结构
②语言表达能力强
③数据类型较丰富不足之处:
④语言简洁●类型转换较随便,不够安全
⑤可移植性好●没有数组界限检查
⑥生成的代码质量高●运算优先级太多
1.2C语言的词汇集
一字符集ASCII码
英文大、小写字母数字空格回车换行制表符
特殊字符:
+-*/=_,;:
!
?
()[]
{}<>&%$#'".|^~\
二标识符
1关键字(保留字)具有特定语法含义的英文单词
autobreakcasecharconstcontinue
defaultdodoubleelseenumextern
floatforgotoifintlong
registerreturnshortsignedsizeofstatic
structswitchtypedefunionunsignedvoid
volatilewhile
2预定义标识符如:
标准库函数名
3用户标识符用来表示常量、变量、类型、函数等的名字
规定:
●标识符必须以字母或下划线开头,后跟字母、数字或下划线
●标识符不能与关键字同名
●大写字母与小写字母被认为是两个不同的字符
命名:
见名知义原则
1.3常量和变量
一常量在程序的运行过程中,其值不能改变的量
1整型常量
十进制120100-100
八进制015-072
十六进制0x15-0x1fa
●long型的后缀:
l或L
●整型常数在内存中以补码的形式存储
补码
符号位0正数补码=原数(二进制)
1负数Ex求[-5]补
①写出相反数的二进制数0000000000000101
②各位求反1111111111111010
③末位加11111111111111011
【负数补码求原数】1111111111111011=[]补
①各位求反0000000000000100
②末位加10000000000000101
③化为十进制数,添加符号-5
2实型常量
小数形式
指数形式±X.XX...Xe±XXe前必有数e后必为整
3字符
单个ASCII字符转义字符
''32\n换行\b退格
'0'48'A'65'a'97\00\t水平跳格
'1'49'B'66'b'98\\\'\"
………………\ddd1-3位8进制数表示的字符
'9'57'Z'90'z'122\xhh1-2位16进制数表示的字符
4字符串
"Computer"字符串长度存储字节数字符或转义字符序列89('\0'结束符)
二变量在程序的运行过程中,其值可以改变的量1变量的命名
2先说明后引用
变量说明:
[存储类型]数据类型变量名表;
变量名[=表达式],…
Exinta=1,sum=0,i,j,k;
3变量的类型
整型
2个字节-32768~32767
int
shortint
long[int]4个字节-2147483648~2147483647
unsignedint0~65535
unsignedlong0~4294967295
实型
float4个字节7位3.4e-38~3.4e+38
double8个字节15-16位1.7e-308~1.7e+308
③字符变量
char1个字节
字符数据←→整型数据Exinti;i='a';→97
charc;c=97;→'a'
1.4运算符
1赋值运算符=变量名=表达式
Exa=5v=(a+b-c)/u
2算术运算符+-*/%优先级:
*/%→+-
Ex10/3=3结合性:
自左向右
●+=-=*=/=%=
a+=3相当于a=a+3
a%=b+3相当于a=a%(b+3)
m=20求m+=m*=m/10
3自增减运算符++--前缀:
++i先加后用
后缀:
i++先用后加
●++,--只能用于变量,不能用于常量和表达式
10++++(x+y)(-i)--等都是错误的
●结合性:
自右向左
Exi=j=5;x=++i;/*i=6x=6*/
y=j++;/*y=5j=6*/
4逗号运算符,(取第二个表达式的值)
优先级:
最低结合性:
自左向右
Exy=10;
x=(y-=5,45/y);/*x=9*/
x=y-=5,45/y;/*x=?
*/
表达式:
运算对象
运算符号
算术表达式
赋值表达式
逗号表达式
1.5表达式
●类型转换
①同类型数据运算结果类型与运算对象类型相同
不同类型数据运算先化后算
②赋值号两端类型不同,以变量为主
Ex1设a=2,b=3,x=3.5,y=2.5
(float)(a+b)/2+(int)x%(int)y
2.5+3%2(=3.5)
●赋值运算的两种值变量的值表达式的值
Ex2a=(b=10)/(c=2)a=5b=10c=25
Ex3自增减运算符++--
前缀:
++i先加后用后缀:
i++先用后加
用变量的值作为表达式的值
a=5++aa++
变量a的值①6②6
表达式的值②6①5
TC30上机的主要命令
Alt-E编辑F2存盘
Alt-F-A换名存盘Alt-F-N编辑新程序
Ctrl-F9运行Alt-F5看运行结果
F3将程序调入内存Alt-X退出
Chap.2顺序结构程序设计
赋值语句
表达式语句
复合语句
空语句
选择语句ifswitch
流程控制语句循环语句whiledo-whilefor
转移语句gotobreakcontinuereturn
2.1赋值语句表达式语句
赋值表达式后加分号即为赋值语句;表达式后加分号即为表达式语句
Ex1inti;floata=3.5;
i=1;
i=i+a;
Ex2inta,b,c,s=0,p=1;
a=b=c=10;
s+=a;p*=b;
Ex3inta=5,b=8,temp;
temp=a;a=b;b=temp;(语句作用?
)
●顺序结构
先执行A,后执行B
2.2数据的输入和输出
一数据输出
1printf()函数
形式:
printf("格式控制",参数表);
格式说明符以%开头
%c%d%o%x%u
字符整数:
十进制八进制十六进制无符号
%f%e%s
实数:
小数形式指数形式字符串
●在%与格式字符间可插入:
l长整型双精度型
m.n共m位,取小数n位
-向左对齐
②转义字符以\开头
\n\b\\\'\"\ddd\xhh\0
③普通字符原样输出
2putchar()函数
形式:
putchar(c);c─char型
在显示器上输出c的值(一个字符)
Ex201printf("a\bre\'hi\'y\\\bou\n");(分析语句的输出)
Ex202
#include"stdio.h"
main()
{inta=16;chare='A';unsignedb;
longc;floatd;
b=65535;c=123456;d=123.45;
printf("a=%d,%4d,%-6d,c=%d\n",a,a,a,c);
printf("b=%o,%x,%u,%d\n",b,b,b,b);
printf("d=%f,%10.5f\n",d,d);
printf("%c,%s,%7.3s\n",e,"China","Guilin");
}
输出结果:
a=16,16,16,c=-7616
b=177777,ffff,65535.-1
d=123.449997,123.45000
A,China,Gui
二数据输入
1scanf()函数
形式:
scanf("格式控制",地址表);
格式说明符以%开头:
%c%d%f%s
在%与格式字符间可插入:
l
普通字符原样输入
说明:
①地址:
&变量名、数组名
②用"%d"、"%f"格式输入数据时,两个数据之间可以用空格、回车符分开
③用"%c"格式输入字符时,空格、回车和转义字符都作为有效输入字符
Excharc1,c2,c3;
scanf("%c%c%c",&c1,&c2,&c3);
输入:
abc则c1='a',c2='',c3='b'
④输入数据时不能规定精度
Exscanf("%8.6f",&t);
出错,应改为%f
⑤输入数据时,遇到下列情况,认为数据已输入结束
a空格或回车
b宽度结束如"%md",则取m列
c非法输入
Exscanf("%d%c%f",&a,&b,&c);
输入:
1234a123o.26则a=1234,b='a',c=123
2getchar()函数
形式:
getchar()从键盘输入一个字符,作为函数值
2.3程序举例
Ex203设变量x=10.2,y=20.5,编程实现两个变量的值的互换
#include
main()
{doublex,y,t;
printf("Enterxandy:
\n");
scanf("%lf%lf",&x,&y);
t=x;x=y;y=t;
printf("x=%f,y=%f\n",x,y);
}
Ex204求一元二次方程ax2+bx+c=0的根
对一元二次方程ax2+bx+c=0,若b2-4ac≥0,则方程有两个实根:
#include
#include
voidmain()
{floata,b,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;x2=p-q;
printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
}
Ex205输入两个整数a和b(设a=1500,b=350),求a除以b的商和余数,编写程序并以如下形式输出结果(表示空格)。
a=1500,b=350
a/b=4,theamodb=100
#include"stdio.h"
main()
{inta,b,c,d;
scanf("%d,%d",&a,&b);
c=a/b;d=a%b;
printf("a=%5d,b=%4d\n",a,b);
printf("a/b=%3d,theamodb=%4d\n",c,d);
}
Chap.3选择结构程序设计
3.1关系表达式与逻辑表达式
关系运算符>>=<<===!
=
逻辑运算符!
&&||
!
a求反
a&&ba与b都是真吗?
a||ba或b中有真吗?
●表达式的值真1假0;运算对象非0为真0为假
●注意=与==的区别比较x=3与x==3
●比较10 ()! *+<==&&||? : =, []++/-<=! =+= --%>-= ±>=*= &/= *%= (类型名) 自右向左自右向左 Ex1a=4求d=! a结果为0 Ex2x=1,y=1求(! x||y--) 01(先用后减)结果为1 Ex3c为小写字母,表示成c>='a'&&c<='z' 3.2if语句 一if语句的形式 形式1: if(e)s1; e表达式s1语句 形式2: if(e)s1; elses2; e—表达式s1、s2—语句 说明: 先计算表达式e的值,若表达式e的值为 真(非0),执行语句s1;否则执行语句s2 Ex301求给定整数的绝对值 #include main() {intx,y; scanf("%d",&x); y=x; if(x<0)y=-x; printf("x=%d,|x|=%d\n",x,y); } Ex302输入三个数,从大到小排序后输出 算法: 1定义变量,输入三个数a、b、c 2对a、b、c从大到小排序 ①将a、b进行比较,大数存入a,小数存入b ②将a、c进行比较,大数存入a,小数存入c (此时a为最大数) ③将b、c进行比较,大数存入b,小数存入c (b比c大,从大到小排序为a、b、c) 3输出从大到小排序后数a、b、c #include main() {floata,b,c,t; 复合语句: 用{}括起来 的几个语句,在语法上作为一个语句使用。 printf("Inputa,b,c: "); scanf("%f%f%f",&a,&b,&c); if(a if(a if(b printf("%5.2f%5.2f%5.2f\n",a,b,c); } 二if语句的嵌套 在if语句中又包含一个或多个if语句,称为if语句的嵌套 Ex303编程计算分段函数: x+1x>0 y=xx=0 x-1x<0 #include main() {intx,y; scanf("%d",&x); y=x; if(x! =0) if(x>0)y=x+1; elsey=x-1; if(x<0)y=x-1; else if(x==0)y=x; elsey=x+1; if(x>=0) if(x>0)y=x+1; elsey=x; elsey=x-1; printf("x=%d,y=%d\n",x,y); } ●嵌套的if语句的配对 else总是和在它前面离它最近尚未配对的那个if配对 Ex设a=4,b=3,c=2,执行下面的if语句后,c=? if(a if(b<0)c=0; elsec++; ●如何改变嵌套的if语句的配对 ⑴加语句括弧if(a elsec++; ⑵用if语句的第②种形式if(a else; elsec++; Ex304输入某学生的成绩,输出该学生的成绩和等级 (A级: 90-100;B级: 80-89;C级: 60-79;D级: 0-59) #include main() {intx; printf("Pleaseinputx(0<=x<=100)\n"); scanf("%d",&x); if(x>100||x<0)printf("x=%ddataerror! \n",x); elseif(x>=90)printf("x=%d--A\n",x); elseif(x>=80)printf("x=%d--B\n",x); elseif(x>=60)printf("x=%d--C\n",x); elseprintf("x=%d--D\n",x); } 三条件运算符(三目运算符) e1? e2: e3 e1、e2和e3是三个表达式。 若e1的值为真(非0),则表达式的值为e2,否则表达式的值为e3 Ex308charc; c=getchar(); c=('A'<=c&&c<='Z'? c+32: c); 若c是英文大写字母,则转变为小写字母 3.3switch语句 形式: switch(整型表达式) {case常量表达式1: 语句序列1; case常量表达式2: 语句序列2; …… case常量表达式n: 语句序列n; default: 语句序列(n+1); } Ex设x=1,a=0,b=0 switch(x) {case0: b++; case1: a++; case2: a++;b++; } Ex305用switch语句解Ex304 #include main() {intx; printf("Pleaseinputx(0<=x<=100)\n"); scanf("%d",&x); switch(x/10) {case9: case10: printf("x=%d--A\n",x); case8: printf("x=%d--B\n",x); case7: case6: printf("x=%d--C\n",x); case5: case4: case3: case2: case1: case0: printf("x=%d--D\n",x); default: printf("x=%ddataerror! \n",x); } } Ex306求ax2+bx+c=0的解 讨论d=b2-4ac 1a=01次方程 2d=0有两个相等实根 3d>0有两个不等实根 4d<0有两个共轭复根 算法 1输入a,b,c 2if(a==0){解一元一次方程的根-c/b; 结束程序; } else解一元二次方程: 先计算d=b*b-4*a*c; 3if(d==0)输出两个相等的实根-b/(2*a); elseif(d>0){x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); 输出两个不相等的实根x1,x2; } else{根的实部rp=-b/(2*a); 根的虚部ip=sqrt(-d)/(2*a); 输出两个共轭复根; } N-S图: 程序: #include #include"math.h" main() {floata,b,c,d,x1,x2,rp,ip; printf("Inputa,b,c: "); scanf("%f,%f,%f",&a,&b,&c); if(a==0){printf("x=%f\n",-c/b);gotoexit;} elsed=b*b-4*a*c; if(d==0)printf("x1=x2=%f\n",-b/(2*a)); elseif(d>0){x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); printf("x1=%f,x2=%f\n",x1,x2); } else{rp=-b/(2*a);ip=sqrt(-d)/(2*a); printf("complexroot: \n"); printf("x1=%f+%fi\n",rp,ip); printf("x2=%f-%fi\n",rp,ip); } exit: ; } gotoexit;无条件转向语句,exit是语句标号 exit: ;带标号的空语句 Chap.4循环结构程序设计 4.1循环的基本概念 Ex求1+2+3+4+5+6+7+8+9+10=? s=1+2+3+4+5+6+7+8+9+10 如果求1+2+3+…+100呢? 或者求1+2+3+…+n(n为某一任意指定的数)呢? 计算机的操作是一步一步执行的,步步分解 Exs=1+2+3+…+n 分解1分解2 s=0;s=0;i=1; s+=1; s+=2; …… s+=n; 变量赋初值s=0;i=1; 循环三要素循环体s+=i;i++; 循环条件i<=n 循环变量: 在循环中表示循环增量的变量i 步长语句: 在循环语句中循环变量的变化语句i++ 当型先判断循环while 循环的实现方法当型后判断循环do_while 步长型循环for 解法1while语句 main() {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 教案