版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1单元认识C程序单元一认识C程序单元二C程序设计基础单元三顺序结构程序设计单元四选择结构程序设计单元五循环结构程序设计单元六数组单元七用户自定义函数单元八编译预处理单元九指针单元十构造数据类型单元十一文件读写技术全套可编辑PPT课件任务1、C的发展与特点任务2、编写一个C程序任务3、C程序的执行过程任务4、C程序的上机步骤单元考核单元总结本章教学内容任务1、C的发展及特点1.C语言的发展语言升级换代C语言DennisRitchieDennisRitchieKenThompson
MartinRichards1967年ANSIC或C89C99标准C11正式C1970年1972年1977年1978年1989年1999年2011年BCPL语言B语言可移植的CAT&T贝尔实验室ISO修订ISO公布C国际标准C标准被批准全套可编辑PPT课件任务1、C的发展及特点中级语言结构式语言功能齐全与汇编编合编操作系统适用范围大……C语言的特点全套可编辑PPT课件
考考你?
C语言是哪一年问世的?1是谁发明的?2有哪些特点?3任务1、C的发展及特点全套可编辑PPT课件
任务2编写第一个C程序例题1-11.该程序的功能是什么?2.该程序的执行结果?全套可编辑PPT课件C的基本构成单位是:函数。01C的书写格式灵活02标识符的命名规则03任务2认识C程序结论
任务2编写第一个C程序测一测编写一个C程序,输出“verygood!”信息任务3、C程序的执行过程C的执行过程共4步编辑编译连接运行启动VC++6.0654321新建C程序文件连接程序
保存源程序
编译程序上机步骤任务4、C程序的上机步骤运行程序仿照例题1-1,编写一个C程序,输出“verygood!”信息。键盘输入两个整数,求它们的和。基本练习发展练习学生动手任务模仿任务示范任务拓展C的发展与特点C的构成语句与标识符程序调试注意事项能力提高单元小结谢谢!
第2单元C语法基础本单元内容C的数据类型1常量与变量2算术表达式和赋值表达式3条件判断4数据类型转换5
C的数据类型
任务1思考:不同数据类型在主存中分别占多少字节?任务1C的数据类型Int(%d)
char((%c)float(%f)double(%ld)
常量一任务2常量与变量任务2常量与变量字符串常量的概念?存储形式?注意?一、常量1.十进制整数由数字0~9组成的整数。例如:230、512、-120。2.八进制整数以数字0开头,由数字0~7组成的整数。
例如:0111(等于十进制整数的73)。3.十六进制整数以数字0x开头,由0~9、a~f或A~F组成的整数。
例如:0x16(等于十进制整数的22)。1.整型常量1.整型常量2.2常量与变量1.小数形式
表示形式:“数字0~9”
+“小数点”
(注意:必须要有小数点)
例如:0.3,.23,23.都是合法的实数。2.指数形式(科学记数法
表示形式:整数部分、小数点、小数部分
和指数部分组成。
例如:123e4等【注意】1.字母E或e的前面必须要有数字,可以是
整数,小数或0。2.字母E或e的后面的指数必须为整数或0。2.实型常量2.实型常量2.2常量与变量1.单引号括起来的一个字符
强调:(1)单引号
(2)一个字符2.转义字符(\开始)
3.字符常量3.字符常量2.2常量与变量
3.字符常量3.字符常量2.2常量与变量
重点掌握
3.字符常量3.字符常量2.2常量与变量【例2-1】分析下列程序的输出结果。#include“stdio.h”main(){printf(“This\tis\ta\tbook\n”);printf(“Thisi\bsabook\n”);printf(“\“Thisis\′a\′book.\”\n”);}
3.字符常量3.字符常量2.2常量与变量【例2-1】分析下列程序的输出结果。#include“stdio.h”main(){printf(“This\tis\ta\tbook\n”);printf(“Thisi\bsabook\n”);printf(“\“Thisis\′a\′book.\”\n”);}此句执行结果:This____is______a_______book(“_”表示空格)
3.字符常量3.字符常量2.2常量与变量【例2-1】分析下列程序的输出结果。#include“stdio.h”main(){printf(“This\tis\ta\tbook\n”);printf(“Thisi\bsabook\n”);printf(“\“Thisis\′a\′book.\”\n”);}此句执行结果:Thissabook
3.字符常量3.字符常量2.2常量与变量【例2-1】分析下列程序的输出结果。#include“stdio.h”main(){printf(“This\tis\ta\tbook\n”);printf(“Thisi\bsabook\n”);printf(“\“Thisis\′a\′book.\”\n”);}此句执行结果:“Thisis′a′book.”
3.字符常量3.字符常量2.2常量与变量【例2-2】分析下列程序的输出结果。#include“stdio.h”main(){charch;ch=‘\101’;printf(“%c”,ch);}执行结果:
A4.字符串常量2.2常量与变量1.字符串的概念
字符串常量是由一对双引号括起来的字符序列。
例如:“ABC”,“Howareyou!”2.区分两个概念
1)字符串长度2)存储方式
4.字符串常量问题:字符串“china”的长度多少?存储空间多大?符号常量2.2常量与变量问题:使用符号常量的好处?1.符号常量的概念
用符号表示一个常量。2.举例:
符号常量#defineHIGH10#include“stdio.h”main(){int
a,b;a=10;b=a*HIGH;printf(“b=%d\n”,b);}
变量二任务2常量与变量inta,b;floate,f,g;charc1,c2;上面7个变量各占多少字节?
常量与变量程序执行过程中,其值始终不能改变的量。类型标识符变量名表;例如:inta,b;floatc,d;先定义,后使用1.变量的概念2.定义形式3.测一测4.变量使用原则二、变量
算术运算符与算术表达式一任务3算术运表达式与赋值表达式1.基本的算术运算符+、-、*、/、%2.自增自减运算符++、--一、算术运算符与算术表达式
1.*、/、%的书写规则。2./、%的运算规则注意
1.*、/、%的书写规则。2./、%的运算规则注意1.基本的算术运算符+、-、*、/、%2.自增自减运算符++、--
一、
算术运算符与算术表达式
1.*、/、%的书写规则。2./、%的运算规则注意
分析下列程序的输出结果,注意其中前置运算和后置运算的区别。#include“stdio.h”main(){inti,x,y;i=5;x=i++;/*后置运算,先把i的值赋给x,然后i的值加1*/printf(“i=%d,x=%d\n”,i,x);i=5;y=++i;/*前置运算,先使i的值加1,然后将i的值赋给y*/printf(“i=%d,y=%d\n”,i,y);}1.基本的算术运算符+、-、*、/、%2.自增自减运算符++、--
一、算术运算符与算术表达式
1.*、/、%的书写规则。2./、%的运算规则注意【测一测】下面两个程序段执行后,变量x的值是多少?程序段1:intx,a=7;
x=(a++)+3;
printf(“%d”,x);/*变量x的值是
*/程序段2:intx,a=7;x=(++a)+3;printf(“%d”,x);/*变量x的值是
*/3.算术表达式
用算术运算符或圆括号将运算对象连接起来的式子。
一、
算术运算符与算术表达式
案例
数学式
算术表达式3.算术表达式
用算术运算符或圆括号将运算对象连接起来的式子。
一、算术运算符与算术表达式
测一测
将下列式子转换成C表达式:
赋值运算符与赋值表达式二任务3运算符与表达式赋值运算符与赋值表达式复合的赋值运算符注意事项:$493$670$309测一测:Year赋值运算符执行下列程序段后,变量a和b的值各是多少?程序段1:
int
a,b;a=1;b=2;a=b;程序段2:
int
a,b;a=1;b=2;b=a;程序段3:
inta=1;a=a+1;
关系运算符与关系表达式一任务4条件判断关系运算符关系表达式1)“<”小于运算符2)“<=”小于等于运算符3)“>”大于运算符4)“>=”大于等于运算符5)“==”等于运算符6)“!=”大于等于运算符【测一测】printf(“%d”,3>2>1)的值是多少?使用说明“<”、“<=”、“>”、“>=”优先级相同;“==”和“!=”的优先级相同。前4个优先级高于后两个。注意:“==”与“=”不同。
逻辑运算符与逻辑表达式二任务4条件判断逻辑与:&&逻辑或:||逻辑非:!C语言提供了3种逻辑运算符使用规则:“!”逻辑非,如:!a,若a为真,则!a为假,否则!a为真。“&&”逻辑与,如:a&&b,若a,b均为真,则a&&b为真,否则a&&b为假。“||”逻辑或,如:a||b,若a,b均为假,则a||b为假,否则a||b为真。C语言提供了3种逻辑运算符各种运算符优先级:逻辑运算符注意事项:1)a&&b&&c来源:X省XX水泥股份有限公司2000年年报2)a||b||c【测一测】用关系或逻辑表达式描述下列条件:1)判断x是否为奇数。2)判断字符变量ch是否为英文字母。3)判断三个实数a,b,c能否构成一个三角形。
自动类型转换一任务5数据类型的转换观察横向和纵向箭头自动转换在并购的整个过程中都有导致失败的因素图2.5自动类型转换规则
强制类型转换二任务5数据类型的转换转换格式:(类型标识符)表达式1.5*(int)6.232.(float)10/43.(float)(10/4)【说明】1)如果要对整个表达式进行转换,表达式应使用括号括起来;2)强制转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。
案例:强制类型转换
谢谢!第3单元顺序结构程序设计Contents目录字符数据的输入和输出一格式化输入与输出二三顺序结构程序设计字符数据的输入与输出任务1
字符数据的输入与输出
1、字符输入函数getchar()
函数格式:
<变量>=getchar();二字符数据的输入与输出
1、字符输入函数getchar()
功能:
用于接收从输入设备输入的一个字符,赋给其左边的变量。二字符数据的输入与输出
1、字符输入函数getchar()
注意:
getchar后面的一对圆括号内没有参数,但这一对圆括号不能省。二字符数据的输入与输出
2、字符输出函数putchar()格式:putchar(ch)
功能:向输出设备输出一个字符。
注意:putchar()函数必须带输出项,输出
项
可以是字符型常量、变量、表达式,但只能是单个字符而不能是字符串。。二
1、字符输入函数getchar()【例3-1】用getchar函数输入三个字符赋给变量a,b,c,然后用putchar函数输出它们.
#include<stdio.h>voidmain(){chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);
}二
字符数据的输入与输出格式化输入与输出任务2
1、格式输入函数scanf()
格式:
scanf(“格式控制”,地址表列)%d、%f、%c&变量名
1、格式输入函数scanf()
例如:inta,b;scanf(“%d,%d”,&a,&b);
1、格式输入函数scanf()
格式说明:
%(修饰符)(格式说明符)
L,h,m,*d,c,f
1、格式输入函数scanf()
修饰符使用说明:
(1)l,h用于对int型(%d)数据修饰%ld,%hd
1、格式输入函数scanf()
修饰符使用说明:
(2)
m宽度修饰
例如:scanf(“%3d%3d”,&a,&b);
输入:123456
则:a=?,b=?
1、格式输入函数scanf()
修饰符使用说明:
(3)
*修饰
例如:
scanf(“%2d%*3d%2d”,&a,&b);
输入:1234567
则:a=?,b=?
1、格式输入函数scanf()
修饰符使用说明:
(4)
输入数据不能规定精度
例如:
scanf(“%7.2f”,&a);
1、格式输入函数scanf()
注意事项:(1)scanf函数中的“格式控制”后面应当是变量地址;
(2)注意数据的输入格式。
2、格式输入函数scanf()
【建议】
输入数据时,格式控制符之间用逗号分隔。scanf(“%d,%c,%f,%d”,&a,&b,&c,&d);
2、
格式输出函数printf()
一般格式:
printf(“格式控制”,输出项表列);
%d,%c,%f变量或表达式2、
格式输出函数printf()
了解几项使用说明
(1)宽度限制
(2)精度
(3)长度
(4)标志字符
任务实施
输入三角形的三边a,b,c,求三角形的面积area。
#include<stdio.h>#include<math.h>voidmain(){floata,b,c,s,area;printf(“请输入三角形的三边长:”);scanf(“%f,%f,%f”,&a,&b,&c);s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“三角形的面积为:%5.2f\n”,area);}
顺序结构程序设计任务3顺序结构的执行流程及特点:
顺序结构程序设计三【任务】随机生成一个3位整数,计算它的个位数、十位数和百位数的平方和。
任务分析:
(1)根据需要定义变量。
(2)随机产生一个3位的随机整数。
(3)分别取出它的百位,十位及个位。
(4)求个、十、百三位数字的平方和。
(5)输出平方和。
顺序结构程序设计三源程序:顺序结构程序设计四知识拓展随机生成一个3位整数,计算它的个位数、十位数和百位数的平方和。
程序分析:
(1)要生成[a,b]范围内的整数,可使用通用公式:a+rand()%(b-a+1)
(2)生成随机数之前,用srand()设置随机数种子
(3)需要两个库文件
“stdlib.h”和“time.h”知识拓展能力知识拓展能力谢谢!第4单元选择结构程序设计目录concents任务1选择结构编程思想任务2if语句任务3switch语句任务1选择结构程序设计思想选择结构的概念工作概述1.什么叫选择结构?条件是什么?条件为“真”时执行什么?
条件为“假”时执行什么?选择结构程序设计的四大要素:“汇合点”在哪里?任务2if语句一、单分支选择语句if工作概述提出问题:
什么是单分支选择语句?
一般格式执行流程if(表达式){语句序列;}【说明】“语句序列”可以是一条语句,也可以是多条语句。当语句序列中的语句超过1条时,必须用一对大花括号“{}”将其括起来,以复合语句形式出现。一、单分支选择语句if0403定义三个整型变量x,y,max010205将第一个数赋给max用前一个数的最大者与第二个数比,得出新的最大者给x,y赋值;输出最大者【例4-1】输入两个整数,输出其中的大数。要求:用单边if语句实现。设计步骤:一、单分支选择语句if0403定义三个整型变量x,y,max010205将第一个数赋给max用前一个数的最大者与第二个数比,得出新的最大者给x,y赋值;输出最大者一、单分支选择语句if源程序:main(){intx,y,max;printf(“inputtwonumbers:”);scanf(“%d,%d”,&x,&y);max=x;if(max<y)max=y;printf(“max=%d”,max);}【例4-1】输入两个整数,输出其中的大数。要求:用单边if语句实现。设计步骤:【例4-2】输入3个整数,按照从小到大的顺序输出。
一、单分支选择语句if1.程序分析:
(1)日常思维——演示——分析——结论
(2)换位思考一般格式执行流程if(表达式){语句序列1;}else{语句序列2;}【说明“语句序列”可以是一条语句,也可以是多条语句。当语句序列中的语句超过1条时,必须用一对大花括号“{}”将其括起来,以复合语句形式出现。二、双分支选择语句if-else03程序分析0102源程序算法设计【例4-3】编程,判断整数x的奇偶性。设计步骤:二、双分支选择语句if-else(1)请读者用双分支选择语句改写【例题4-1】。(2)如何用单分支if语句实现【例4-3】的功能。
测一测二、双分支选择语句if-else使用if-else语句,应注意以下事项。事项1if-else中可省else,无else子句时就是单分支if语句。二、双分支选择语句if-else使用if-else语句,应注意以下事项。事项2else必须与if搭配使用。二、双分支选择语句if-else使用if-else语句,应注意以下事项。事项3
当if子句和else子句中包含多条语句时,必须要用“{}”括起来组成复合语句。二、双分支选择语句if-else使用if-else语句,应注意以下事项。事项4C程序没有行的概念,因此,if-else语句可以写在一行上,也可以分多行书写。二、双分支选择语句if-else使用if-else语句,应注意以下事项。事项5使用if语句时,不要随意加分号,否则会造成语法错误。二、双分支选择语句if-else一般格式执行流程if(表达式1)
语句序列1;elseif(表达式2)
语句序列2;elseif(表达式3)
语句序列3;.......elseif(表达式n)
语句序列n;
else语句序列n+1;三、if语句的嵌套03程序分析0102源程序算法设计【例4-4】输入3个整数,输出其中的最大者。设计步骤:三、if语句的嵌套if嵌套的使用说明if与else的配对原则
当if语句嵌套使用时,会出现if与else配对的问题。C编译系统处理该问题的原则是:else总是与它前面离它最近的尚未配对的if配对。三、if语句的嵌套任务实施键盘输入学生成绩等级grade,输出成绩范围。任务3switch语句一般格式功能switch语句
首先计算switch后面的表达式的值,并逐个与case后面的表达式的值作比较。
当与某个常量表达式的值
相等时,以此作为入口,执行该case后面的语句组,若表达式的值与任何case均不相同,则执行default后面的语句组n+1。switch语句的注意事项事项1switch后面圆括号内的表达式一般是整数表达式或字符表达式。switch语句switch语句的注意事项事项2default和语句组n+1可以同时省略。switch语句switch语句的注意事项事项3case和常量表达式之间必须用空格隔开。switch语句switch语句的注意事项事项4switch语句的结束。例如:
switch(n){case1:x=1;case2:x=2;}
switch语句switch语句的注意事项事项5switch结构允许嵌套。switch语句任务实施键盘输入学生成绩等级grade,输出成绩范围。谢谢!第5单元循环结构程序设计1循环结构的编程思想2实现循环的三种语句3与循环有关的控制语句4循环嵌套5知识拓展目录CONTENTS任务1:循环结构的编程思想认识循环(1)——基本概念循环体真假条件P
循环结构(又称重复结构),是程序中的另一个基本语句。它的特点是:在给定的条件成立时,反复执行某个程序段。给定的条件叫循环条件,反复执行的程序段叫循环体。认识循环(2)——循环种类
(a)当型循环(b)直到型型循环
分析:两种循环的特点:①当型循环②直到型循环两种结构使用选择原则:认识循环(3)——典型案例编程,求1-100的和。分析:
sum=0sum=sum+1
sum=sum+2……
sum=sum+100100条sum=sum+i认识循环(4)——循环要素
①设置循环的初始状态②循环体③循环控制部分认识循环(5)——循环要素应用
初值设置循环条件循环体工作部分修改部分
实现循环的语句
1.while语句
2.do-while语句3.for语句
任务2:实现循环的三种语句一、while语句先判断,后执行。特点当型循环循环类型执行流程
while(表达式)
{
循环体
}while语句的格式关于while语句几个问题:132当表达式的初值为0时,循环体执行几次?循环体语句超过一条时怎样处理?死循环的避免?例5-1】编程:求1+2+…+100的和(用while语句实现)程序分析:1)循环的初始状态i=1;sum=0;2)循环体sum=sum+i;i=i+1;3)循环控制部分i<=100请同学们自己写出源程序
【例5-2】编程:求n!(用while语句实现)
【思考】在该例中,当用户从键盘上输入的n值较大时,s的值可能会超过32767,此时程序的运行会出现怎样的结果?应如何修改程序而确保程序的正确?【测一测】下面两个程序段的输出结果是多少?执行结果:死循环执行结果:101二、do-while语句先执行一次循环体,然后再计算表达式的值,若表达式的值为非0,则继续执行一次循环体。重复上述过程,直到表达式的值为0时结束循环。part3内容要求学生自学
一般形式流程图执行过程
do
{
循环体
}while(表达式);三、for语句for(表达式1;表达式2;表达式3)
{
循环体
}一般形式先判断,后执行特点
当型循环循环类型执行流程分析下列程序执行结果s=0;
for(i=1;i<=3;i++)
{
s=s+i;}
printf(“%d”,s);问?测一测s的值是多少?使用for语句的几点说明01表达式1;while(表达式2){
循环体;
表达式3;}与下列while语句等价02for语句的循环体可以是基本语句,也可以是复合语句,还可以是空语句。使用for语句的几点说明03举例:
s=0;for(i=1;;i++)
{if(i>50)break;s+=i;
}for语句中的表达式可以部分或者全部省略,但分号不能省略。当省略表达式2时,相当于“无限循环”。04例如:for(i=1,sum=0;i<=50;sum+=i,i++);for后面圆括号内的表达式可以是任意有效的C语言表达式【例5-4】
编程:求1+2+…+100的和。请同学们根据流程图写出源程序。测一测:?仔细分析下列程序段,给出运行结果。for(i=1;i<=10;i++)
{sum=sum+i;i++;}printf(“%d,%d”,i,sum);任务3与循环有关的控制语句1)用于在switch语句中结束case分支,跳出switch结构。2)用在循环体中,强迫循环程序立刻结束,转而执行循环语句后的其他语句。与循环有关的控制语句——break语句
一般形式应用功能
break;素数求解例5-5:编程,判断一个整数n是否素数。1.素数的定义?
2.解题思路??素数求解流程图if(n%i==0)break;请同学们根据流程图自己写出源程序。与循环有关的控制语句——continue语句
一般形式功能
continue;中断循环体的本次执行(即跳过循环体中尚未执行的语句),立即开始执行下一次循环。
break与continue的区别
1.break语句是用来结束整个循环的,循环到此结束;continue语句是用来结束本次循环的,下一次循环继续执行。
2.break语句可以用在switch语句与循环语句中。continue语句只能用在循环语句中。
任务4:循环的嵌套循环嵌套01循环嵌套的概念03for(i=1;i<=3;i++)for(j=1;j<=3;j++)printf(“*”);分析程序结果02三种循环语句可以相互嵌套04
——图形打印双重循环的典型应用
循环嵌套的典型应用——图形打印
知识拓展知识拓展例
以第4单元的简单算术练习程序为基础,根据用户选择的菜单项,由计算机一次性为小学生随机出10道算术题,每题10分,小学生输入答案后,程序自动判断正确与否,最后给出小学生答对题目的数量和总得分。PPT模板下载:/moban/行业PPT模板:/hangye/节日PPT模板:/jieri/PPT素材下载:/sucai/PPT背景图片:/beijing/PPT图表下载:/tubiao/优秀PPT下载:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/资料下载:/ziliao/PPT课件下载:/kejian/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/字体下载:/ziti/
谢谢!第6单元数组一数组的引入二一维数组三
二维数组四字符数组与字符串五知识拓展单元目录CONTENTS一数组的作用PART若不用数组,100个数的存放需要几个变量?给100个变量赋值的方法?逆序输出100个变量值的方法?当大量的相同类型的数据需要保存后才能处理时,就可以使用数组。数组正是为解决这一类问题而提出的。任务1数组的作用二一维数组PART任务2
一维数组1.一维数组定义说明:定义形式:类型说明符
数组名[常量表达式]1.数组名的命名规则与变量名相同。例如:inta[10];2.数组名的后面是用方括号。
例如:inta(10);是错误的3.常量表达式即数组元素的个数,
例如,a[10]中的10表示a数组有10个元素,
这10个元素是:a[0],a[1],…a[9]。【注意】不能使用数组元素a[10]。4.量表达式中不能包含变量。
intn;
scanf(“%d”,&n);inta[n];/*错误*/
…任务2
一维数组测一测:定义数组,用来存放下列数据?
1.100个学生的年龄
2.50个学生的成绩
3.26个英文字母任务2
一维数组例如:inti,a[10];for(i=0;i<=9;i++)
a[i]=i;for(i=0;i<=9;i++)printf(“%d”,a[i]);
2.一维数组元素引用引用格式:
数组名[下标]【测一测】若将上面例子中的数组a改成变量a,程序的输出结果将会怎样?任务2
一维数组例如:inta[5]={1,2,3,4,5};
a数组各元素的值为:a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5。
3.一维数组初始化初始化形式:数据类型
数组名[数组长度]={值1,值2,值3……值n};任务2
一维数组初始化的方法
1)完全赋初值。例如:staticinta[5]={1,2,3,4,5};
2)部分赋初值。例如:staticinta[5]={1,2,3};
3)不指定数组长度赋初值。例如:staticinta[]={1,2,3,4,5,6,7,8,9,10};
4)不赋初值。例如:staticstaticinta[5];任务2
一维数组任务实施【例6-2】输入10个数,将它们按输入次序的逆序输出。程序分析:
利用循环将输入的10个数存放到数组中。然后再借助循环将此数组元素逆序输出。两个循环是并列的,两个循环的循环变量的区别是:前者从低下标向高下标变化,后者从高下标向低下标变化。三二维数组PART任务3
二维数组1.二维数组定义定义形式:类型说明符
数组名[常量表达式1][常量表达式2]例如:inta[2][3];数组名为?a数组有几个元素?分别是?每个数组元素的类型是?任务3
二维数组测一测
定义一个二维数组,用来存放60个学生7门课的成绩。任务3
二维数组例如:
inti,a[3][4]for(i=0;i<=2;i++)for(j=0;j<=3;j++)scanf(“%d”,&a[i][j]);2.二维数组元素引用引用格式:
数组名[行下标][列下标]【注意】在引用数组元素时,要注意下标不能越界。任务3
二维数组
初始化
1)按行分段赋初值。例如:
staticinta[2][3]={{1,2,3},{4,5,6}};
2)连续赋初值。例如:staticinta[2][3]={1,2,3,4,5,6};
3)部分赋初值。例如:
staticinta[3][3]={{1},{2},{3}};4)省略维数赋值。例如:
staticinta[2][2]={1,2,3,4};或写为:
staticinta[][2]={1,2,3,4};任务3
二维数组
初始化
1)按行分段赋初值。例如:
staticinta[2][3]={{1,2,3},{4,5,6}};
2)连续赋初值。例如:staticinta[2][3]={1,2,3,4,5,6};
3)部分赋初值。例如:
staticinta[3][3]={{1},{2},{3}};4)省略维数赋值。例如:
staticinta[2][2]={1,2,3,4};或写为:
staticinta[][2]={1,2,3,4};【注意】1)只有对数组的全部元素赋初值时,数组
的第一维长度可以省略,但第二维不能
省;2)若对数组的部分元素赋初值,则数组的
第一维和第二维长度均不能省。任务3
二维数组任务实施【例6-4】设计一个程序,输出下列矩阵。程序分析:1)定义一个二维数组,用来存放3×3的矩阵,二维数组数据的录入可以采用初始化的方法,也可以采用双重循环来实现(本例中采用初始化的方法)。2)程序用一个双重for语句来输出矩阵,注意换行符的使用。任务3
二维数组二维数组应用举例【例6-5】有一个3×4的矩阵,编程求出其中最大的那个元素的值,以及其所在的行号和列号。四字符数组与字符串PART任务4
字符数组与字符串1.字符数组定义定义形式:char数组名[常量表达式]例如:charc[10];在C语言中,由于字符型和整型通用,因此,字符数组也可以定义为:intc[10];任务4
字符数组与字符串2.字符数组的初始化(1)用字符常量逐个初始化数组。例如:staticcharc[9]={‘c’,‘’,‘p’,‘r’,‘o’,‘g’,
‘r’,‘a’,‘m’};(2)字符串常量初始化数组。例如:1)charc[10]={“Cprogram”};2)charc[10]=“Cprogram”;3)charc[]=“Cprogram”;任务4
字符数组与字符串3.字符数组的引用字符数组元素的引用形式为:
数组名[下标]
例6-6】输入“Ilikeplayingfootball.”并显示出来。任务4字符数组与字符串
字符串
1)概念
字符串是指若干有效字符的序列。
2)字符串的存放
借助数组存放
3)字符串结束标志
\04)注意
C语言中只有字符串常量,没有字符串变量任务4字符数组与字符串
字符串
不同初始化方式下数据在字符数组中的存储任务4字符数组与字符串
字符串
字符数组的输入和输出
1)逐个字符输入输出
用scanf()输入:for(i=0;i<14;i++)scanf(“%c”,&a[i]);
用printf()输出:for(i=0;i<14;i++)printf(“%c”,a[i]);
2)整个字符串输入输出
用scanf()输入:chara[10];scanf(“%s”,a);/*数组名a的前面无&*/用printf()输出:
charc[]=“Cprogram”;printf(“%s”,c);任务4字符数组与字符串
【测一测】下面两个程序段的输出结果是什么?
(1)charstr[10]=“abcdef”;printf(“%s”,str);
(2)charstr[10]={‘a’,‘b’,‘c’,‘\0’,‘e’,‘f’,‘\0’};printf(“%s”,str);任务4
字符数组与字符串
字符串处理函数格式:puts(字符数组名)功能:将一个字符串输出到屏幕。举例:chars[]=“GoodMorning!”;puts(s);1.字符串输出函数puts输出结果为?GoodMorning!任务4
字符数组与字符串
字符串处理函数格式:gets(字符数组名)功能:从键盘上输入1个字符串(以回车结束),存入指定的字符数组中。举例:chars[20];gets(s);2.字符串输入函数gets编程,用gets函数输入一个字符串,然后用puts()函数输出它。任务4
字符数组与字符串
字符串处理函数格式:strcpy(字符数组名1,字符数组名2)功能:将字符数组2中的字符串拷贝到字符数组1中,字符串结束标志“\0”也一同被拷贝。
举例:charstr1[20],str2[]=“GoodMorning!”;strcpy(str1,str2);puts(str1);3.字符串拷贝函数strcpy输出结果为?GoodMorning!任务4
字符数组与字符串
字符串处理函数Strcpy()函数使用注意事项:1)字符数组1应足够的长,用来容纳复制过来的字符串。2)字符数组1必须为字符数组名;3)下列赋值方式错误charstr1[20],str2[]=“GoodMorning!”;str1=str2;/*这种方法是错误的*/4)可以只将一个字符串的前面的n个字符拷贝到字符数组中。3.字符串拷贝函数strcpy任务4
字符数组与字符串
字符串处理函数测一测
编一程序,将两个字符串连接起来。4.字符串拷贝函数strcpy任务4
字符数组与字符串
字符串处理函数格式:strcmp(字符数组名1,字符数组名2)功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
比较规则:
字符串1=字符串2,返回值=0;
字符串1>字符串2,返回值为一正数;
字符串1<字符串2,返回值为一负数;5.字符串比较函数strcmp任务4
字符数组与字符串
字符串处理函数例如:charstr1[20]=“aabbbcc”;charstr2[20]=“abcabc”;if(strcmp(str1,str2)>0)printf(“str1>str2”);elseif(strcmp(str1,str2)==0)printf(“str1==str2”);
elseprintf(“str1<str2”);【思考】该程序段的输出结果是?5.字符串比较函数strcmp任务4
字符数组与字符串
字符串处理函数【测一测】
编一程序,实现字符串s1和s2的比较,给出比较结果。
例如:若s1>s2,则输出“s1>s2”的信息。5.字符串比较函数strcmp任务4
字符数组与字符串
字符串处理函数格式:strlen(字符数组名)功能:测试字符串的实际长度(不包括字符串结束标志“\0”),并作为函数返回值返回。
例如:charstr[10]={“China”};printf(“%d”,strlen(str));
输出结果不是10,也不是6,而是5。6.测试字符串长度
函数strlen任务4
字符数组与字符串
字符串处理函数【测一测】
编一程序,任意输入一个字符串,输出它的长度。6.测试字符串长度
函数strlen任务4
字符数组与字符串
字符串处理函数7.字符串大小写字
母相互转换函数strlwr和strupr格式
(1)strlwr(字符串)
(2)strupr(字符串)功能:1)将字符串中的大写字母转换成小写字母。2)将字符串中的小写字母转换成大写字母。任务4
字符数组与字符串
任务实施
输入一个字符串,统计其中指定字符的数目。
利用一个字符数组存储输入的字符串,然后用一个变量接收指定的字符,最后用这个变量与字符串中的元素依次比较,统计出与之相同的字符个数。任务4
字符数组与字符串
应用举例【例6-8】编一程序,将两个字符串连接起来。(要求不使用strcat函数)用两个字符数组分别存放两个字符串,(注意:第一个字符数组要足够大,以便容纳连接后的字符串)。借助循环,寻找第一个字符串中的字符串结束标志“\0”所在的位置,找到后,从此位置开始将另一个字符串的字符依次赋予其后。五知识拓展PART任务5
技能训练
用冒泡法对10个整数从小到大排序。任务5
技能训练
【例6-9】用冒泡法对10个整数从小到大排序。任务5
技能训练
【例6-9】用冒泡法对10个整数从小到大排序。任务5
技能训练
【例6-10】判断一个字符串是否回文。回文是指顺读和倒读都一
样的字符串。例如:“aacdcaa”。1.回文的概念?2.算法设计PPT模板下载:/moban/行业PPT模板:/hangye/节日PPT模板:/jieri/PPT素材下载:/sucai/PPT背景图片:/beijing/PPT图表下载:/tubiao/优秀PPT下载:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/资料下载:/ziliao/PPT课件下载:/kejian/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/字体下载:/ziti/
谢谢!第7单元函数Contents目录模块化程序设计思想一函数的定义和调用二函数的嵌套调用四三函数间参数传递变量的作用域六五函数的递归调用变量的生存期七一模块化程序设计思想PART
模块化程序设计思想
一
一个较大的程序,一般都会分解成若干个模块编写,每个模块都负责完成一定的功能,这个模块又称作子程序。在C语言中,子程序的功能是由函数来完成的。
识认
函
数
模块化程序设计思想
一数
函特点
C程序从main函数开始,到main函数结束。执行顺序上
一个C程序可由一个main函数和若干个其它函数构成。结构上
函数之间不可嵌套定义,但可以嵌套调用。函数定义上二函数的定义和调用PART函数的定义1义
定格式函数的定义1
引
例
【引例】求一个数的绝对值(要求用函数实现)。
思考以下两个问题:
1.用现有的知识如何编程此例?2.转换成函数调用的方法编写的技巧?函数的定义1
引
例
【引例】求一个数的绝对值(要求用函数实现)。
main(){inta,b;scanf(“%d”,&a);if(a>=0)b=a;elseb=-a;printf(“abs=%d”,b);}函数的定义1
几
说
点
明
函数类型函数体函数名说明部分形式参数函数返回值
定义一个函数,求两个数的大者。(提示:先用一个main函数编写。)main(){inta,b,max;scanf(“%d,%d”,&a,&b);if(a>b)max=a;elsemax=b;printf(“max=%d”,max);}intzuida(intx,inty)
{intma;if(x>y)ma=x;elsema=y;returnma;
}函数的定义1测
一测
函数的调用2
方用
式调1.表达式调用方式例如:z=3*max(x,y);函数的调用2
方用
式调2.函数调用语句方式例如:printf(“hello!”);函数的调用2
方用
式调3.函数参数调用例如:m=max(a,max(b,c));函数的调用2
分例案【例7-1】用函数调用的方法求1+2+3+…+100。
析函数的调用2
分例案【例7-2】键盘输入一个数,求它的绝对值。
析函数的调用2
明数
声函什么是函数声明?“声明”与“定义”的区别?为何要“声明”?在什么情况下需要声明?三函数间的参数传递PART函数的参数传递1
传据
递数C语言中,数据传递的方式2.地址传送1.值传送值传递1
分例
析案分析下列程序,写出运行结果,得出必要结论。
voidswap(intx,inty){intt;t=x;x=y;y=t;printf(“\nx=%d,y=%d\n”,x,y);}#include“stdio.h”main(){inta=10,b=20;swap(a,b);printf(“\na=%d,b=%d\n”,a,b);}
结论:形参值的改变,不会影响实参的值。(单向传递)好处:减少了函数间的依赖,增强了自身的独立性。地址传递2
分例
析案分析下列程序,写出运行结果,得出必要结论。
voidswap(int*x,int*y){intt;t=*x;*x=*y;*y=t;printf(“\nx=%d,y=%d\n”,*x,*y);}#include“stdio.h”main(){inta=10,b=20;swap(&a,&b);printf(“\na=%d,b=%d\n”,a,b);}
结论:形参值的改变,不会影响实参的值。(单向传递)好处:减少了函数间的依赖,增强了自身的独立性。任务实施
实务
施
任一维数组score内放10个学生成绩,求平均成绩。(用数组名作参数)
#include<stdio.h>#defineN10floataverage(floatarray[],intn){
inti;floatsum=0;for(i=0;i<N;i++)
sum=sum+array[i];return(sum/n);}voidmain(){
floatscore[N],aver;
inti;
printf("请输入10名同学的成绩:\n");
for(i=0;i<10;i++)
scanf("%f",&score[i]);aver=average(score,N);printf("平均成绩为:%.1f\n",aver);}四函数间的嵌套调用PART函数的嵌套调用
嵌数
套函嵌套过程示意:
函数的嵌套调用
嵌数
套函任务分析:
【例7-4】计算12+22+32+…+n2的值。
设计思路1.程序中涉及3个函数:main(),sum、和square。2.main()函数的作用是负责输入n值、对sum函数的调用以及最后结果的输出;3.sum函数负责调用square函数并求12+22+32+…+n24.square函数负责求n2的值,并将值返回。
五函数间的递归调用PART函数的调用
调归
用递
递归的定义:
一个函数在它的函数体内调用它自身称为递归调用。函数的递归调用
调归
用递
递归的条
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际贸易实务与合同条款解析
- 饭店装修设计与风格指南
- 手掌医学与养生保健知识介绍
- 农业现代化发展及投资计划概览
- 石油天然气供应策略及物流规划
- 生物科技实验室设备的选择与维护
- 农业种植灾害预防与应对措施
- 会议中如何进行有效的时间管理
- 智能家居照明系统设计及节能技巧
- 智能城市规划与建设实践案例
- 2025年江西建设职业技术学院单招综合素质考试题库及答案解析
- 抗菌药物临床应用指导原则试题含答案
- 2026黑龙江新高考:语文必背知识点归纳
- 金属非金属地下矿山人行梯子间设置细则
- 领导干部任前法律法规知识考试题库(2025年度)及答案
- 2025福建厦门航空有限公司招聘备考题库及答案详解(易错题)
- 村集体三资管理培训课件
- (正式版)DB61∕T 2115-2025 《中深层地热能开发钻完井技术规程》
- 年鉴编纂基本知识课件
- 2026年保安员证考试题库完整版
- 2026年四川单招语数英基础提升分层试卷含答案适配不同水平
评论
0/150
提交评论