C语言教案.docx

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

C语言教案.docx

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

C语言教案.docx

C语言教案

C语言教案

第一章导论

一、对学习程序设计语言的一些说明

程序、程序设计、程序设计语言

程序设计语言的分类、作用

当前实用的程序设计语言

C语言的特点

二、C语言基础

●字符集:

大、小写字母,数字,特殊字符,不可打印字符

●标识符:

标识符是用来标识常量、变量、类型、函数及程序的名字。

标识符的组成规则:

以字母或下划线开头的字母、数字串。

特殊标识符:

关键字如int,char,do,if,_ax,pascal,include等(见P6)

特殊标识符不能用作自定义标识符。

●C语言的程序结构:

由一个或多个函数构成,有且仅有一个名为main的主函数,程序的执行是从主函数开始的。

函数由函数头和函数体两部分组成,函数头包括函数类型说明、函数名、函数标志和参数等;函数体由语句组成并用花括号({})括起。

如程序:

#includemain(){intw,x=30,y=60;intz=10;

printf(“\nEnteraint_num:

”);

scanf(“%d”,&w);z=max(x,y);

w=max(z,w);

printf("max=%d\n",w);

}

intmax(inta,intb)

{if(a>b)return(a);elsereturn(b);}

对照此程序说明C语言的程序结构。

●C语言程序上机操作步骤(TurboCVER2.0)

建立源程序,编译与连接,运行

(解释方式与编译方式的区别在哪?

可用TCC进行编译。

TC的集成开发环境:

启动(Options项中工作目录的设置)

输入上面给出的示例源程序,指定文件名保存

ALT+R让编译、连接、运行一次过

ALT+F5查看运行结果

说明程序中第一行的功能、执行过程

C语言的书写格式说明:

一般语句以“;”号结束,一行内可写多个语句,也可把一个语句分成几行来写,关键字都使用小写字母。

程序出错的修改处理:

语法错误——去掉if语句中间的分号试试看;

逻辑错误——去掉scanf语句中w前的&看看。

一个程序验证完成后怎样开始新的程序

常用菜单项说明。

第二章基本数据类型及表达式

一、基本数据类型

每一个数据在使用前必须给出其数据类型,数据类型分基本类型和扩展类型。

基本类型有:

整型(int)

字符型(char)

实型(又分单精度型——float,双精度型——double)

无值型(void)

其中char和int类型双可用signed、unsigned、long、short来修饰。

(各种类型的存储和取值参见P13表2-3)

扩展类型如数组类型、结构类型、指针类型等。

二、常量及变量

1.常量

●整型常量

十进制:

如25,0,-38

八进制:

如025,-038(以0开头)

十六进制:

如0x25,0X1f(以0X或0x开头)

[注]在整型常量后加l或L表示longint类型,如25L。

●实型常量(浮点型常量)

有小数和指数两种表示形式。

如:

-1.23,1234.567,2.5E3,2E+4,2.3E-2.

但下列表示是不合法的:

E3,2.5E,4.3E2.5

●字符型

用单引号引起的单个字符或转义序列。

如:

‘A’,‘5’,‘\012’(回车动作)

●字符串常量

用双引号引起的字符序列或转义序列。

如:

”Computer”

C语言编译程序在存储字符串常量时,自动在结尾处加空操作字符’\0’作为字符串结束标记。

因此sizeof(“Computer”)测试结果字符串长度为9。

2.变量

变量用一般标识符来命名(不区分大小写)。

使用变量前必须事先说明并指明数据类型,也可以给变量赋初值。

变量说明的一般格式为:

<类型说明符><变量名列表>;

类型说明符是上面说过的数据类型,如int,char等。

例如:

inta1,b1,c1;

longww=5825125,vv;

floatx,y=123.45,z=18;

doubled;

char_c1=’A’,_c2=’0’;

【说明】①整型与字符数据之间可以相互赋值。

给字符型变量赋值时要注意数值的大小,赋值超过255时将输出一个不认识的图形字符。

②整型与实型数据之间可以相互赋值。

如在上面的变量说明后,可以进行如下赋值:

_c2=48;a1=_c1;

d=128;b1=y;

3.转义序列

以“\”开头,后跟一个规定字符。

如‘\n’表示输出换行。

也可以是形如\ddd(八进制)或\xhh(十六进制)的表示方式。

如‘\012’。

三、运算符

1.赋值运算符

赋值语句又称赋值表达式,格式为:

<变量名>=<表达式>

如:

a=a+b;

b=a+b/c;

运算结果的类型按预先说明的变量类型进行转换。

二目运算符与赋值运算符一起构成得合运算符。

如A+=B,相当于A=A+B;A/=B相当于A=A/B。

2.算术运算符

有+,-,*,/,%(取余);

*,/,%的优先级高于+,-运算,同一优先级自左向右处理。

可用圆括号改变运算顺序。

如:

X+Y*Z

(X+Y)*Z

3.关系运算符

有六种:

<,<=,>,>=,==,!

=

优先级:

==和!

=的优先级低于前四种;

关系运算符的优先级低于算术运算符,高于赋值运算符。

如:

A+B>C+D

结果只有两种:

(1)、假(0)。

4.逻辑运算符

优先级从高到低有:

!

&&,||

·前述四种运算符的优先级从高到低的顺序为:

!

→*,/,%→+,-→>,>=,<,<=→==,!

=→&&,||→赋值符(=)

5.Sizeof运算符(应该叫函数)

得到操作数所占存储空间的字节数。

如:

sizeof(int);/*结果为2*/

sizeof(5+6.3)/*结果为8,所有实数按double处理*/

6.自增减运算符

++〈操作数〉/--〈操作数〉/*操作数使用前先自动加(减)1*/

〈操作数〉++/〈操作数〉--/*操作数使用前后再自动加(减)1*/

·自增减运算只能用于变量,不能用于常量和表达式。

-I++相当于-(I++)。

7.地址和地址运算符

C语言具有低级语言的功能,提供对计算机存储单元地址的访问。

有地址运算符&和*,若a为变量名,则:

&a——表示取变量a存储的首地址;

a——称间址运算,说明变量a是一个指针变量。

指针变量的值是另一个变量的地址(用*a可访问另一变量的值)。

8.其他运算符

·条件运算符“?

”——如result=a

a+b:

a-b;

·园括号和方括号操作符——园括号改变优先级别,方括号用于标识数组元素的下标。

·点.与箭头操作符——用于结构和联合类型。

·逗号,操作符——用于连接几个表达式。

假设y=10,则x=(y-=5,25/y)相当于y=y-5;x=25/y;

四、表达式

由操作数和运算符按一定顺序连接起来的式子。

如:

a+b/2

!

(a<=100)&&!

(a>=200)

注意表达式的运算结果的类型。

例:

若有以下定义:

chara;intb;

floatc;doubled;

则表达式a*b+d-c值的类型为double。

表达式中可以利用强制类型转换运算将一个表达式转换成所需类型,但不影响原变量的类型。

如(int)a+(int)(x+y).

第三章程序控制语句

一、程序的三种基本控制结构

·顺序结构——按语句书写的自然顺序执行

·分支结构——根据判断条件的真

(1)与假(0)执行不同的语句序列

·循环结构——在一定条件下多次重复执行某一相同的语句序列

(控制结构的框图表示,框图形状的说明)

·程序设计规范

限制使用goto语句、设计风格(从属关系低格书写,注释,易读)、模块程序

设计方法。

二、简单及其程序设计

1.赋值语句

C语言中有赋值表达式,又有赋值语句。

如赋值语句:

a=b=c+d;

这在很多高级语言(如FoxBASE)中是错误的语句,但在C语言中是正确的,相当于

a=(b=c+d);

可把右边的等号看成是赋值运算符,左边的等号看成赋值符号。

从C语言的赋值运算

从右向左结合的规则看也应是这样的。

2.函数调用语句

C语言程序是由一个一个函数组成的,函数间互相调用形成完整的系统。

函数有两种:

标准库函数和用户编写的函数(如第一章例中的max函数)。

这里介绍的是几个标准输入输出函数,使用这些函数时应在源程序中加入程序行:

#include

函数调用语句的一般格式为:

<函数名>([<参数表>]);

[注意<参数表>在不同函数中的使用格式,并对照各函数加以说明]

(1)putchar()函数——输出单个字符

例:

#includemain(){chara='2';putchar(a);putchar('5');putchar('\n');}

输出结果为:

25

(2)printf()函数——格式输出函数

调用格式为:

printf(<格式控制>,<参数表>);

其中<格式控制>是用双引号括起来的字符串,可用“%”加规定的控制字符组成输出格式(如%d,%c,%f,%s),其他字符原样输出;<参数表>中是要输出的数据或表达式,参数个数必须与<控制格式>中说明的控制字符个数相同,且按顺序一一对应。

C语言规定的控制字符有%c,%d,%e,%f,%g,%o,%s,%u,%x,%%,另有附加格式字符l,m,n,-。

各控制字符的格式控制说明见P34表3-1、表3-2。

(举例说明各种控制字符控制的输出格式)

例:

.....................

(3)getchar()函数——从键盘输入单个字符

无参数,只接收一个字符,可以赋给字符或整型变量,也可作为表达式使用。

程序运行时为了看清结果可用此函数实现暂停。

例:

#include

main()

{inta,b,c;

a=5;b=3;

c=a+b;

printf(“%d+%d=%d\n”,a,b,c);

c=getchar();/*若输入多个字符,只接收第一个字符。

回车也作为一个字符*/

}

(4)scanf()函数——格式输入函数

调用格式为:

scanf(<格式控制>,<参数表>);

其中<格式控制>中的控制字符与printf()相似(见P39表3-3、表3-4);<参数表>中的参数一般是变量的地址,不能是变量名,参数表中地址变量必须与格式控制字符一一对应。

例:

#include

main()

{floata,b,c;

printf(“Enter3Number=”);

scanf(“%f%f%f”,&a,&b,&c);

/*变量中前加“&”表示取变量的地址,数组除外*/

printf(“%f,%f,%f,%f\n”,a,b,c,(a+b+c)/2);

}

程序运行时若输入数据为:

582<回车>

输出结果为:

5.000000,8.000000,2.000000,7.500000

◆若输入数据为:

5,8,2<回车>

结果为:

5.000000,0.000000,0.000000,2.500000

若输入数据为:

58<回车>

2<回车>

结果为:

5.000000,8.000000,2.000000,7.500000

改scanf()函数控制格式为:

scanf(“%f,%f,%f”,&a,&b,&c)再试试看,结果如何?

【注】①格式控制中的空白字符(或无任何字符),在输入数据时可用空格、制表符和换行符;若在控制字符间有非空白字符,则在输入时,数据项间一定要加上与之相同的字符。

②输入数据时不能规定精度,但可指定输入数据所占列数。

③“*”号紧随%之后,表示跳过与之相应的数据。

④在输入数据时,遇下列情况时认为输入已结束:

空格、宽度结束、非法输入。

4.空语句

只有一个分号(;)

5.复合语句

用花括号({})括起来的一组语句。

用于条件语句和循环语句的循环体。

三、条件语句及其程序设计

1.条件

有关系表达式和逻辑表达式两种,表达式的结果不是真

(1)就是假(0)。

(六种关系运算符,三种逻辑运符,可以与其他运算符、表达式混合使用)

所有非零值均视为真。

◆注意条件的构成形式,如(a&&b)+5,!

a+5将永过为真,不是你想要的,且不会提示语法错误。

2.if语句

格式:

if(<条件>)<语句1>;

[else<语句2>];

用框图表示,看执行方法。

说明:

<条件>一定要用园括号括起;

语句1、语句2可以是简单语句,也可以是复合语句或空语句;

else部分用方括号括起表示可选;

else之前要有分号(;)或“}”号;

所有关键字一律用小写。

例:

从键盘输入一个整数,判断它的正负(不考虑0)。

main()

{intx;

printf(“Enterainteger=”);

scanf(“%d”,&x);

if(x>0)

printf(“x=%d,>0\n”,x);

else

{printf(“x=%d,”,x);printf(“x<0\n”);}

}

3.if语句的嵌套

在if语句的语句1或语句2中又包含另一个if语句时,称为if语句的嵌套。

常见形式有:

if...if...

elseif...if....

..............else....

elseif...else

else...if...

else...

例:

从键盘输入一个整数,判断它的正负(考虑0)。

main()

{intx;

printf(“Enterainteger=”);

scanf(“%d”,&x);

if(x>0)

printf(“x=%d,>0\n”,x);

else

if(x<0)

{printf(“x=%d,”,x);printf(“x<0\n”);}

}

在if语句的嵌套结构中要注意if与else的配对关系:

else总是与上面最近的if配对,但可使用复合语句格式改变这种配对关系。

如:

if(条件1)

if(条件2)语句1;

else语句2;

比较:

if(条件1)

{if(条件2)语句1;}

else语句2;

4.开关语句switch

是多路分支语句,可以替代有规律的if语句嵌套结构。

格式为:

switch(<表达式>)

{case<常量1>:

[<语句1>]

case<常量2>:

[<语句2>]

......

case<常量n>:

[<语句n>]

[default:

<语句n+1>]

}

说明:

◆switch后的表达式结果只能是整型或字符型(有序类型);

◆执行时依次判别常量值是否等于表达式的值,当某一常量值等于表达式值时,执行该常量后的语句;后面的所有语句将自动执行而不再判断,因此每个case分支的末尾应加上break语句以跳出switch语句;

◆若所有常量值均不等于表达式的值,则执行default后的语句而结束switch结构;

◆每个case后常量的值应互不相同;

◆case的书写顺序不影响程序的执行;

◆多个case可共用一组语句(见P46例3-20)

例:

main()

{inta;

scanf(“%d”,&a);

switch(a)

{case1:

printf(“1”);

case1:

printf(“2”);

case1:

printf(“3”);

case1:

printf(“4”);

default:

printf(“error.\n”);

}

}

程序运行时,若输入2,则输出为:

234error.

可在每一printf函数后加一个break语句。

这种语句常可用于编写象FoxBASE一样的菜单程序。

四、循环语句及其程序设计

C语言中提供了三种循环语句:

for、while、do—while

1.while语句

格式:

while(<条件>)

<语句>/*循环体*/

先对<条件>进行判断,为真(非0)时执行循环体。

若<条件>一开始就为假,则循环体一次也不执行。

例:

从键盘输入一组整数,统计正整数个数并求它们的和(输入0时结束)。

#include

main()

{intx,n=0;

longs=0;

scanf(“%d”,&x);

while(x<>0)

{if(x>0)

{s=s+x;n=n+1;}

scanf(“%d”,&x);

}

printf(“n=%d,s=%d\n”,n,s);

}

说明:

while语句一般用于循环次数未知的情况;<条件>中使用的变量要先赋初值,且使其值在每次循环中不断变化,以免造成死循环;防止将<条件>中的“==”误写成“=”而造成死循环(这在任何<条件>中都应注意)。

2.do—while语句

格式:

do

<语句>/*循环体*/

while(<条件>)

与while语句相似,只是先执行循环体,后判断条件,<条件>为假时结束。

◆循环体至少执行一次。

问:

用do—while语句如何改写上例程序?

例:

输入一个正整数,判断该数是否为素数。

#include

main()

{intx,i=1,f=0;

scanf(“%d”,&x);

do{

i++;

if(x%i==0)f=1;

}while(i<=x/2);

if(f)printf(“No\n”);

elseprintf(“Yes\n”);

}

例:

求两个数的最大公约数和最小公倍数。

#include

main()

{intx,y,i,flag;

printf(“Enter2integer:

”);

scanf(“%d%d”,&x,&y);

i=x;flag=0;

if(x>y)i=y;

do{

if(x%i==0&&y%i==0)flag=1;

elsei--;

}while(!

flag);

printf(“%d%d\n”,i,x*y/i);

}

3.for语句

for语句一般用于循环次数已知的情况。

格式为:

for([<表达式1>];[<条件>];[<表达式2>])

<语句>

这里,<表达式1>是给循环控制变量赋初值;<条件>是用循环控制变量的值与终值进行比较;<表达式2>是修改循环控制变量的值(增加或减少步长)。

如:

for(i=1;i<=100;i++)

sum=sum+i;/*sum=1+2+3+…+99+100*/

说明:

for语句可以用while语句来实现,等价于

<表达式1>;

while(<条件>){

<语句>;

<表达式2>;

}

for语句中各表达式可以省略,形如:

for(;;)<语句>;

将是一个死循环,要想结束循环,可通过其它手段完成(如用break)。

例:

用for语句编写程序,判断一个正整数是否是素数。

(程序略)

例:

输入20个数,按每行5个数输出,并求最大数和最小数。

4.break语句和continue语句

这两个语句都不带任何参数。

break用于跳出switch和循环结构;continue用于结束本次循环,重新开始下一次循环。

在其它地方不能使用它们。

五、goto语句及标号

C语言虽然提供了goto语句,但应尽量不用,它会影响程序质量。

goto语句的一般格式为:

goto<标号>;/*标号只能是标识符*/

标号用来标识某语句的位置,格式为:

<标识符>:

<语句>;

说明:

goto语句只能在所在函数内进行跳转,且标号唯一;

goto语句可与if语句一起构成循环结构;

gogo语句可用来从循环体内跳到循环体外,但不能从循环体外跳到循环体内。

六、多重循环及举例

循环体内又包含另一循环称多重循环(循环不能交叉)。

结构说明:

.......................

例1:

输出1-100间的所有素数。

#include

main()

{intx,i,f,n=0;

for(x=2;x<=100;x++)

{f=0;i=1;/*对每个x都假定它是素数f=0,注意语句的位置*/

do{/*内循环判断x是否为素数*/

i++;/*这样的内循环会少输出一个素2,应改用while语句,怎么改?

*/

if(x%i==0)f=1;

}while(i<=x/2);

if(!

f)

{printf(“%5d”,x);n++;/*按5位字符宽度输出一个素数*/

if(n%5==0)printf(“\n”);/*实现每行输出5个数*/

}}

}

例2:

打印如下数字图形。

1

121

12321

1234321

...................

程序如下:

#include

main

{inti,j,n=8;

for(i=1;i<=n;i++){

for(j=1;j<=n+1-i;j++)printf(““);/*打印每行左边的空格*/

for(j=1;j<=i;j++)printf(“%2d”,j);/*打印前半行*/

for(j=i-1;j>=1,j--)printf(“%2d”,j);/*打印后半行*/

printf(“\n”);/*换行*/

}

getchar();/*暂停*/

}

[问]:

如何实现一个循环控制输出一整行?

用for(j=-i+1;j<=i-1;j++)if......

★阅读下列程序或程序段,写出运行结果或回答问题:

1.main()

{intx,i;

for(i=1;i<=50;i++)

{x=i;

if(++x%2==0)

if(x%3==0)

if(x%7==0)

printf("%d",i);

}

}

/*28/27/42/41*/

2.假设a和b为int型变量,则执行以下语句后b的值为?

a=1;b=10;

do

{b-=a;a++;}

while(b--<0)

/*9/-2/-1/8*/

3.设j为int型变量,则下面for循环语句的执行结果是?

for(j=10;j>3;j--)

{if(j%3)j--;

--j;--j;

printf("%d",j);

}

/*63/74/62/73*/

4.main()

{inti,j;

for(j=10;j<11;j++

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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