C语言教案.docx

上传人:b****0 文档编号:18423228 上传时间:2023-08-16 格式:DOCX 页数:67 大小:355.16KB
下载 相关 举报
C语言教案.docx_第1页
第1页 / 共67页
C语言教案.docx_第2页
第2页 / 共67页
C语言教案.docx_第3页
第3页 / 共67页
C语言教案.docx_第4页
第4页 / 共67页
C语言教案.docx_第5页
第5页 / 共67页
C语言教案.docx_第6页
第6页 / 共67页
C语言教案.docx_第7页
第7页 / 共67页
C语言教案.docx_第8页
第8页 / 共67页
C语言教案.docx_第9页
第9页 / 共67页
C语言教案.docx_第10页
第10页 / 共67页
C语言教案.docx_第11页
第11页 / 共67页
C语言教案.docx_第12页
第12页 / 共67页
C语言教案.docx_第13页
第13页 / 共67页
C语言教案.docx_第14页
第14页 / 共67页
C语言教案.docx_第15页
第15页 / 共67页
C语言教案.docx_第16页
第16页 / 共67页
C语言教案.docx_第17页
第17页 / 共67页
C语言教案.docx_第18页
第18页 / 共67页
C语言教案.docx_第19页
第19页 / 共67页
C语言教案.docx_第20页
第20页 / 共67页
亲,该文档总共67页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言教案.docx

《C语言教案.docx》由会员分享,可在线阅读,更多相关《C语言教案.docx(67页珍藏版)》请在冰点文库上搜索。

C语言教案.docx

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()

{

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2