语言基础及教程 5_第1页
语言基础及教程 5_第2页
语言基础及教程 5_第3页
语言基础及教程 5_第4页
语言基础及教程 5_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE课题任务7.1统计某车企一年的汽车销售量(指针和变量)课型讲练授课班级授课时数2教学目标1.指针与指针变量的基本概念2.指针变量的定义与应用3.数组指针变量的说明和应用教学重点数组指针变量的说明和应用教学难点指针变量的理解学情分析指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。但是指针又是学习的一个难点,学生在学习时分不清地址与变量的表示。教学效果教后记项目7汽车数据间接显示(指针)学习目标知识目标理解指针就是地址。理解直接访问和间接访问。熟悉“&”取地址运算符和“*”间接寻址运算符。能力目标掌握指针变量的定义、引用、初始化、做函数参数及相应的运算。能利用指针对一维数组进行操作。能通过字符串指针对字符串进行操作。情景设置对于一个完整的新能源数据监控系统,需要随时监控车辆各个数据的状态,当出现电池等数据到期时,要及时更换或修理电池。任务7.1统计某车企一年的汽车销售量(指针和变量)7.1.1任务目标某车企上半年的汽车销售量为56辆,下半年的汽车销售量为78辆,使用指针统计一年的汽车销售量(变量名:上半年汽车销售量,下半年汽车销售量)。程序运行结果如图7-1所示。图7-1程序运行结果7.1.2知识储备每个班级都有教室,高一三班的教室在A楼311室,如果将一叠材料送过去,则可以将材料送到高一三班教室,或将材料送到A楼311教室。这两种说法都对,第一种说法是直接告诉地址,第二种说法是直接说出教室名称。1.直接访问和间接访问在C语言中,给变量赋值也有以下两种方法。第一种,直接访问赋值:直接按照变量名进行访问,如直接用变量名赋值,系统会准确地将值存入该变量的内存单元中,而用户不必清楚该变量具体的内存地址。第二种,间接访问赋值:将该变量地址存放在另一个特殊变量(指针变量)中,通过这个指针变量,将值存入指定的内存单元。前者属于直接存取,后者属于间接存取。2.指针和地址指针:用户可以将指针看作内存中的一个地址。在一般情况下,指针需要指向另一个变量的地址。示例1:下面程序主要介绍通过指针变量访问普通变量的方法。#include"stdio.h"voidmain(){intx=0;int*p; //定义指针变量p=&x; //将变量x的地址赋给指针变量*p*p=100; //等价于x=100*/*p=*p+50; //等价于x=x+50*/printf("x=%d",x);}归纳分析如下。(1)指针变量也必须先定义后使用,指针变量的一般定义形式为:类型名*指针变量名:(2)变量的地址按如下形式表示:&变量名;指针与&变量名;等价于*指针变量名与变量;7.1.3典型案例典型案例1:某新能源汽车的电池的使用年限是8年,从键盘上输入电池已使用的年限,输出电池的剩余年限(变量名:电池的使用年限Battery_life,电池已使用年限Durable_years,电池的剩余年限Remain_years)。代码如下:#include"stdio.h"voidmain(){intDurable_years,Battery_life=8,Remain_years,*D,*B,*R;printf("已知某新能源汽车的电池的使用年限是%d年\n",Battery_life);printf("从键盘上输入电池已使用的年限:\n");scanf("%d",&Durable_years);D=&Durable_years;B=&Battery_life;R=&Remain_years;*R=*B-*D;printf("已知某新能源汽车的电池的使用年限是%d年,电池已使用的年限为%d年,电池的剩余年限为%d年",*B,*D,*R);}}典型案例1的运行结果如图7-2所示。典型案例2:从键盘上输入某新能源客车的载客人数,输入目前已经有的人数,输出还有多少人可以乘坐该客车(变量名:总载客人数Headcount,目前已有的人数Somepeople,剩余人数Remainpeople)。代码如下:#include"stdio.h"voidmain(){intHeadcount,Somepeople,Remainpeople,*H,*S,*R;H=&Headcount;S=&Somepeople;printf("从键盘上输入某新能源客车的载客人数\n");scanf("%d",H);printf("输入目前已有的人数\n");scanf("%d",S);R=&Remainpeople;*R=*H-*S;printf("还有%d人可以乘坐该客车",*R);}典型案例2的运行结果如图7-3所示。 图7-2典型案例1的运行结果 图7-3典型案例2的运行结果7.1.4任务分析与实践#include"stdio.h"voidmain(){intun=78,on=56,sale,*p,*q,*t;printf("已知某车企上半年的汽车销售量为%d辆,下半年的汽车销售量为%d辆\n",on,un);p=&un;q=&on;t=&sale;*t=*p+*q;printf("总销售量为%d辆",*t);}7.1.5巩固练习一、选择题1.下面程序的运行结果是()。voidast(intx,inty,int*cp,int*dp){*cp=x+y;*dp=x-y;}main(){inta=4,b=3,c,d;ast(a,b,&c,&d);printf("%d,%d\n",c,d);}A.7,1 B.1,7 C.7,-1 D.c、d未赋值,编译出错2.有以下语句:inta[5]={0,1,2,3,4,5},i;int*p=a;设0≤i<5,对a数组元素不正确的引用是()。A.*(&a[i]) B.a[p-a] C.*(*(a+i)) D.p[i]3.假设有定义int*p1,*p2;,则错误的表达式是()。A.p1+p2 B.p1-p2 C.p1<p2 D.p1=p24.以下程序段运行后,表达式*(p+4)的值为()。chara[]="china";char*p;p=a;A.'n' B.'a' C.存放'n'的地址 D.存放'a'的地址5.以下程序段运行后,表达式*(p++)的值为()。chara[5]="work";char*p=a;A.'w' B.存放'w'的地址 C.'o' D.存放'o'的地址6.已知有定义int*p,k=4;p=&k;,以下均代表地址的是()。A.k,p B.&k,&p C.&k,p D.k,*p7.下面语句错误的是()。A.int*p;*p=20;B.char*s="abcdef";printf("%s\n",s);C.char*str="abcdef";str++;D.char*str;str="abcdef";二、填空题1.指针变量是把内存中另一个数据的________作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论