- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE
课题
任务7.2输出1~12月的汽车销售量(指针和数组)
课型
讲练
授课班级
授课时数
2
教学目标
1.掌握通过指针访问数组
2.指针指向数组的几种方式
教学重点
指针指向数组时几种方式的转换
教学难点
指针指向数组的理解
学情分析
前面已经讲过了指针指向一个变量,数组也学习过,基本的转换学生是可以理解的,但是指针与数组联系后很多同学不是能理解指针,几种关系放在一起更容易乱。
教学效果
教后记
任务7.2输出1~12月的汽车销售量(指针和数组)
7.2.1任务目标
已知某品牌4S店1~12月的汽车销售量分别为10、12、15、14、16、8、7、14、16、17、11、12,输出1~12月的汽车销售量(变量名:销售量数组、销售量指针、单位为辆)。
程序运行结果如图7-4所示。
图7-4程序运行结果
7.2.2知识储备
一个变量有地址,一个数组包含若干个元素,每个数组元素都在内存中占有存储单元,它们也都有自己对应的地址。数组元素的指针就是数组元素的地址。
1.数组与指针
一维数组中指针的初始化有以下两种方法。
方法一:
inta[10],*p=NULL?;
p=a;
方法二:
inta[10],*p=NULL?;
p=a[0]?;
当进行如上条件时,可以有如下的等价替换。
数组地址p+i、a[i]、a+i三者相互等价。例如:
scanf(%d,a[i]);
scanf(%d,p+i);
scanf(%d,a+i);
三种输入效果一样的,运用指针能够提高计算机的执行效率。
数组元素*(p+i)、a[i]、*(a+i)三者相互等价。例如:
printf(%d,a[i]);
printf(%d,*(p+i));
printf(%d,*(a+i));
三种输出结果相同,运用指针能够提高计算机程序的执行效率。
2.指针运算
前文已经说明了指针就是地址,对地址进行赋值会是什么意思呢?通过前文介绍也可以看出来p+1就是a[1]的地址,同时p+1可以写成p++,因此指针有以下两个特点。
p+1:指向同一个数组中的下一个元素。
p-1:指向同一个数组中的上一个元素。
3.引入数组元素
运用指针引入数组元素,要考虑以下3个技巧。
(1)先执行p++,再计算*p。
通过分析,p++执行的是下一个元素的地址,因此*p就是下一个元素的值。
(2)*p++。
由于++和*同优先级,结合方向自右而左,因此*p++等价于*(p++)。
(3)*(p++)与*(++p)是否相同。
上述两者不相同。*(p++)为先选*p的值,其值再加1。*(p++)为p先指向下一个元素的地址,再求下一个元素的值。
7.2.3典型案例
典型案例1:运用指针方式从键盘上输入某客车集团5个员工的工资,并将其输出。
代码如下:
#includestdio.h
voidmain()
{
inti,employee[5],*p;
printf(请输入五个员工的工资\n);
for(i=0;i5;i++)
scanf(%d,employee[i]);
for(p=employee;pemployee+5;p++)
printf(员工的工资为%d\n,*p);
}
典型案例1的运行结果如图7-5所示。
典型案例2:从键盘上输入一个员工1~12月的工资,求和并输出。
代码如下:
#includestdio.h
voidmain()
{
inti,month[12],*p,salary=0;
for(i=0;i12;i++)
{printf(请输入%d月的工资,i+1);
scanf(%d,month[i]);
}
for(p=month;pmonth+12;p++)
{
salary=*p+salary;
}
printf(员工的总工资为%d\n,salary);
}
典型案例2运行结果如图7-6所示。
图7-5典型案例1的运行结果 图7-6典型案例2运行截图
7.2.4任务分析与实践
#includestdio.h
voidmain()
{
intSale[12]={10,12,15,14,16,8,7,14,16,17,11,12},*p;
printf(请输出1~12月的汽车销售量:);
for(p=Sale;p(Sale+12);p++)
{
printf(%d,*p);
}
}
7.2.5巩固练
您可能关注的文档
- 单片机原理及应用(C51版)第3章习题答案.docx
- 单片机原理及应用(C51版)第4章课后题答案.docx
- 单片机原理及应用(C51版)第5章课后题答案.docx
- 单片机原理及应用(C51版)第6章作业答案.docx
- 单片机原理及应用(C51版)第7章课后题答案.docx
- C语言项目化教程(基于智能制造软件)教案 项目八任务1一辆汽车的数据显示(结构体变量).doc
- C语言项目化教程(基于智能制造软件)教案 项目二任务1统计汽车的数量 (printf函数 教案).doc
- C语言项目化教程(基于智能制造软件)教案 项目二任务2统计汽车的载客人数 (scanf函数).doc
- C语言项目化教程(基于智能制造软件)教案 项目二任务3 统计需要的车辆(算术运算符、强制转换).doc
- C语言项目化教程(基于智能制造软件)教案 项目二任务4 显示驾照的类型(字符输入与输出).doc
文档评论(0)