版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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个员工的工资,并将其输出。代码如下:#include"stdio.h"voidmain(){inti,employee[5],*p;printf("请输入五个员工的工资\n");for(i=0;i<5;i++)scanf("%d",&employee[i]);for(p=employee;p<employee+5;p++)printf("员工的工资为%d\n",*p);}典型案例1的运行结果如图7-5所示。典型案例2:从键盘上输入一个员工1~12月的工资,求和并输出。代码如下:#include"stdio.h"voidmain(){inti,month[12],*p,salary=0;for(i=0;i<12;i++){printf("请输入%d月的工资",i+1);scanf("%d",&month[i]);}for(p=month;p<month+12;p++){salary=*p+salary;}printf("员工的总工资为%d\n",salary);}典型案例2运行结果如图7-6所示。 图7-5典型案例1的运行结果 图7-6典型案例2运行截图7.2.4任务分析与实践#include"stdio.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巩固练习一、选择题1.已知有以下定义,且0≤i<10,对数组元素的错误引用是()。inta[10]={1,2,3,4,5,6,7,8,9,10},*p,i;p=a;A.*(a+i) B.a[p-a] C.p+i D.*(&a[i])2.已知有如下定义,以下说法中正确的是()。char*a[2]={"abcd","ABCD"};A.数组a的元素值分别为"abcd"和"ABCD"B.a是指针变量,它指向含有两个数组元素的字符型数组C.数组a的两个元素分别存放的是含有4个字符的一维数组的首地址D.数组a的两个元素中各自存放了字符'a'、'A'的地址3.已知有以下定义:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;数值为6的表达式是()。A.*p+6 B.*(p+6) C.*p+=5 D.p+54.假设P1和P2是指向同一个int类型一维数组的指针变量,k为int类型变量,则不能正确执行的语句是()。A.k=*P1+*P2; B.p2=k; C.P1=P2; D.k=*P1*(*P2);5.已知有如下定义:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;数值为9的表达式是()。A.*p+9 B.*(p+8) C.*p+=9 D.p+86.下面程序的功能是输出数组中的最大值,由s指针指向该元素。voidmain(){inta[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;for(p=a,s=a;p-a<10;p++)if()s=p;printf("Themax:%d",*s):}if语句中的判断表达式应该是()。A.p>s B.*p>*s C.a[p]>a[s] D.p-a>p-s7.已知有以下定义:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;不能表示a数组元素的表达式是()。A.*p B.a[10] C.*a D.a[p-a]8.已知有以下定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;值为3的表式是()。A.p+=2,*(p++) B.p+=2,*++pC.p+=3,*p++ D.p+=2,++*p9.下面程序的输出结果是()。voidmain(){inta[]={2,4,6,8,10};inty=1,x,*p;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川达州开江县人力资源和社会保障局核招聘2026届省属公费师范毕业生的20人考前冲刺试卷及参考答案详解(夺分金卷)
- 2026中国智能驾驶培训行业市场现状产业竞争分析及投资机会规划分析研究报告
- 2026四川宜宾市南溪生态环境局招募“守护长江第一湾”生态志愿者的模拟试卷【考点梳理】附答案详解
- 2026人工智能环保行业市场深度考察及技术应用与产业升级研究锚
- 2026上海博物馆招聘博士后1人笔试题库及完整答案详解【考点梳理】
- 2026安徽蚌埠市城市投资控股集团有限公司所属公司社会招聘2人考前冲刺密卷附答案详解(A卷)
- 2026中国支付行业市场供需分析及投资评估规划分析研究报告
- 胸腰椎骨折治疗策略
- 2026中国稀土储运行业市场深度调研及发展趋势与投资前景预测研究报告
- 2026中国食品加工业市场供需变化及投资潜力评估规划分析报告
- 中建室外管网专项施工方案
- 污水处理PPP项目招标文件
- DL∕T 318-2017 输变电工程施工机具产品型号编制方法
- SYT 6378-2021 油水井取套回接工艺作法-PDF解密
- 监理抽检记录表格
- JJG 4-2015钢卷尺行业标准
- YY 0469-2023医用外科口罩
- 山西兰花科技创业股份有限公司大阳煤矿分公司煤炭资源开发利用、地质环境保护与土地复垦方案
- 中国越剧唱腔知到章节答案智慧树2023年浙江艺术职业学院
- 化工过程强化
- GB/T 6983-2022电磁纯铁
评论
0/150
提交评论