C语言项目化教程(基于智能制造软件)教案 项目七任务2输出1~12月的汽车销售量(指针和数组).doc

C语言项目化教程(基于智能制造软件)教案 项目七任务2输出1~12月的汽车销售量(指针和数组).doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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巩固练

您可能关注的文档

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档