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

下载本文档

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

文档简介

PAGE课题任务7.3某车企多项数据显示(将指针作为函数参数)课型讲练授课班级授课时数2教学目标1.字符串指针变量的说明和应用2.函数的指针与函数指针变量的应用3.指针数组与主函数main()的形参教学重点1.函数的指针与函数指针变量的应用2.指针数组与主函数main()的形参教学难点指针数组与主函数main()的形参学情分析指针和字符串连接在一起是一个难点,前面应该都讲过了指针和字符串分别这两个知识点。将两者结合起来学习,体会不同之处。对于子函数用指针作为行参也是第一次接触,会有一定难度。教学效果教后记任务7.3某车企多项数据显示(将指针作为函数参数)7.3.1任务目标已知某品牌4S店1~12月的汽车销售量分别为10,12,15,14,16,8,7,14,16,17,11,12,输出1~12月的汽车销售量。7.3.2知识储备1.数组名可以用作函数的实参和形参。例如:#include<stdio.h>sort(intarray[]){…}voidmain(){intscore[10];…sort(score);…}当使用数组名作参数时,如果形参数组中各元素的值发生变化,则实参数组元素的值也随之变化。因为实参数组与形参数组共占同一段内存单元。2.动态存储方式与静态存储方式静态存储方式:程序运行期间分配固定的存储空间。动态存储方式:程序运行期间根据需要进行动态分配存储空间的方式。3.局部变量与全局变量程序中变量的使用范围不同:作用域(scope)就是变量的有效范围。变量的作用域取决于变量的访问性。(1)局部变量。函数内部的变量称为“局部变量”(localvariable),其作用域仅限于函数内部,离开该函数后就是无效的,再使用系统就会报错。主函数中定义的变量也只能在主函数中使用,不能在其他函数中使用。允许在不同的函数中使用相同的变量名,它们代表不同变量,分配不同的存储单元,互不相干,不会发生混淆。形参变量:在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。(2)全局变量在所有函数外部定义的变量称为“全局变量”(globalvariable),它的作用域默认是整个程序,也就是所有的源文件,包括.c文件和.h文件。它的作用域是从声明时刻开始到程序结束。全局变量定义必须在所有函数之外。全局变量可加强函数模块之间的数据联系,但是函数又依赖这些变量,降低函数的独立性。在同一个源文件中,允许全局变量和局部变量同名,在局部变量作用域内,同名的全局变量不起作用。示例1,全局变量与局部变量的应用。#include"stdio.h"intsum1=0; //全局变量voidaddNumbers(intnum1,intnum2){intsum=0; //局部变量sum=sum+num1+num2;sum1=sum1+num1+num2;printf("\n两数之和子函数sum=的值是%d\n",sum);printf("\n两数之和子函数sum1=的值是%d\n",sum1);}voidmain(){intsum=0; //局部变量intnum1,num2; //局部变量printf("\n请输入两个数;");scanf("%d%d",&num1,&num2);addNumbers(num1,num2);addNumbers(num1,num2);printf("\n两数之和主函数sum=的值是%d\n",sum);}示例1的运行结果如图7-7所示。图7-7示例1的运行结果通过上述示例发现,定义了全局变量的sum1图7-7示例1的运行结果7.3.3典型案例典型案例1:从键盘上输入某客车集团5个员工的工资,并将其输出。代码如下:#include"stdio.h"voidscanfEmployees(intEmployees[],intn){int*p,i;for(p=Employees,i=1;p<(Employees+n);p++,i++){printf("请输入第%d个人的工资:",i);scanf("%d",p);}}voidprint(intEmployees[],intn){int*p;printf("\n%d个员工的工资分别为:",n);for(p=Employees;p<(Employees+n);p++){printf("%d",*p);}}voidmain(){intEmployees[5],i=1;scanfEmployees(Employees,5);print(Employees,5);}典型案例1的运行结果如7-8所示。典型案例2:从键盘上输入一个员工1~12月的工资,求和并输出。代码如下:#include"stdio.h"voidscan(intSale[],intn);voidprin(intSale[],intn);voidsum(intSale[],intn);int*p,i;voidmain(){intSale[12];scan(Sale,12);sum(Sale,12);prin(Sale,12);}voidscan(intSale[],intn){for(p=Sale,i=1;p<(Sale+n);p++,i++){printf("请输入%d月的工资:",i);scanf("%d",p);}}voidsum(intSale[],intn){intsum=0;for(p=Sale;p<(Sale+n);p++){sum=sum+*p;}printf("12个月的工资总和为:%d\n",sum);}voidprin(intSale[],intn){printf("\n12个月的工资分别为:");for(p=Sale;p<(Sale+n);p++){printf("%d",*p);}}典型案例2的运行结果如图7-9所示。 图7-8典型案例1的运行结果 图7-9典型案例2的运行结果7.3.4任务分析与实践#include"stdio.h"voidprint12(intsale[],intn){int*s;printf("1~12月的汽车销售量为:");for(s=sale;s<(sale+n);s++){printf("%d",*s);}}voidmain(){intsale[12]={10,12,15,14,16,8,7,14,16,17,11,12},*s;print12(sale,12);}7.3.5巩固练习一、选择题1.已知有定义inta[2][3],*p=a;,以下能表示数组元素a[1][2]地址的是()。A.*(a[1]+2) B.a[1][2] C.p[5] D.p+52.已知有定义inta=5,*p;且p=&a;,以下表示中不正确的是()。A.&a==&(*p) B.*(&p)==a C.&(*p)==p D.*(&a)==a3.假设有以下程序段,则叙述正确的是()。chars[]="computer";char*p;p=s;A.s和p完全相同B.数组s的长度和p所指向的字符串长度相等C.*p与s[0]相等D.数组s中的内容和指针变量p中的内容相等4.假设有以下程序段,则不能正确访问数组元素a[1][2]的是()。int(*p)[3];inta[][3]={1,2,3,4,5,6,7,8,9};p=a;A.p[1]+2 B.p[1][2] C.(*(p+1))[2] D.*(*(a+1)+2)5.以下程序段的运行结果是()。inta[]={1,2,3,4,5,6,7},*p=a;intn,sum=0;for(n=1;n<6;n++)sum+=p[n++];printf("%d",sum);A.12 B.15 C.16 D.276.以下程序段运行后变量s的值为()。inta[]={1,2,3,4,5,6,7};inti,s=1,*p;p=&a[3];for(i=0;i<3;i++)s*=*(p+i);A.6 B.60 C.120 D.2107.以下程序段运行后变量ans的值为()。inta[]={1,2,3},b[]={3,2,1};int*p=a,*q=b;intk,ans=0;for(k=0;k<3;k++)if(*(p+k)==*(q+k))ans=ans+*(p

温馨提示

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

最新文档

评论

0/150

提交评论