




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE10C语言程序设计教学设计文稿20XX126课程名称
C语言程序设计 授课 年专业 级课程类型
必修课选修课
公共基础课( ;专业基础课(;专业课( 专业选修课( );公共选修课( )本课程的教学目标:课程的目的和任务是使学生掌握必须的程序设计的基本知识与基本教学目标 学生具有程序设计的思想重点为学生建立良好的思维模式为进一步学习专业课程及通过计算机二级考试(C语言)打下良好的基础授课方式 课堂讲授(√;实践课
考核方式
考(√考( )课程教学总学时数
56学时
学分数
3.5学分学时分配 课堂讲授 32 学时;实践课 24 学时教材名称
《C语言程序设计》作 《C语言程序设计实训教程》
陈维等
出版社及出版时间
人民邮电出版社2018指 出版定 作 社及参 者 出版考 时间书授课教师 职 称 单授课时间1周次章节名称教学目的与要求:
第1次课 课时 2学时第1章C语言概述教学目的:让学生掌握初步的算法程序设计思想,了解C语言的基本特点和构成。教学要求:掌握C语言程序开发基本步骤,理解算法程序设计基本思想。教学重点和难点:教学重点:熟悉上机运行C语言程序的一般步骤教学难点:无教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分:—新课引入(5分钟)1、介绍本门课程的性质、学习目标、考核方式、学习方法等。2、从计算机应用基础中学过的计算机语言及语言处理系统引出C语言。二讲授新课一、算法的定义与C语言出现的背景(5分钟)举例:什么是算法?二、C语言的特点(5分钟)语言简洁、紧凑,使用方便、灵活;运算符丰富数据类型多(整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类等)具有结构化的控制语句语法不太严格,自由度大既是高级语言,又具有低级语言的功能成目标代码质量高,程序执行效率可移植性好三、C语言程序构成(采用程序实例加以说明,并提倡良好的程序设计书写风格,10分钟)C语言是由函数构成的,至少有一个main()函数;每个函数由函数首部和函数体组成;函数体由说明语句、执行语句组成;每个Cmain()main()中结束;每个语句和数据定义的最后必须加分号;C程序无输入、输出语句:输入功能由scanf()函数完成;输出功能由printf()函数完成;6. 可加注/*……*/四、上机步骤(上机环境TurboC2.0和VisualC++6.(15分钟 课堂演示)1.进入环境 2.编辑源程序 3.保存源程序4.编译源程序5.执行程序,查看结果 6.退出C环三课堂小结(5分钟 板书)1、C语言的构成要素,main函数在程序中的作用2、上机操作的过程作业及课外训练:课后习题作业及课外训练:课后习题参考资料(含参考书、文献等:《c(第四版)谭浩强编著2周次章节名称教学目的与要求:
第2次课 课时 2课时第2章2.1 基本数据类型教学目的:学习数据类型的含义,数据的存储形式,变量的声明与引用教学要求:1、理解变量与常量的含义,变量名与变量地址,掌握常量的声明,变量的定义与赋值等操作;2、理解数据类型的含义;3、掌握数据类型(整型、实型、字符型)的常量与变量;教学重点和难点:教学难点:数据的存储形式和数据类型的转换教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分一、复习相关知识点:5分钟(多媒体演示)复习c程序开发的一般步骤,引出数据的概念。二、介绍本次教学内容:2分钟(板书书写本次讲授内容提纲)本次课主要讲授数据的三种基本类型整型,实型,字符型以及各类型的常量和变量表示方法。三、讲授知识点:80分钟(多媒体演示,并结合适当板书)一、常量与变量1、常量和符号常量在程序运行过程中,其值不能被改变的量称为常量2、变量变量代表内存中具有特定属性的一个存储单元,它用来存放数据,这就是变量的值,在程序运行期间,这些值是可以改变的。变量名实际上是一个以一个名字对应代表一个地址,在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。二)基本数据类型1、整型数据整型常量即整常数。介绍在c3提问:12,012,0x122、实型数据C语言不擅长处理实型数据。提问:12e1,e哪个是合法的实型数据?3、字符型数据’的ASCII码是97’的ASCII码是多少?4、字符串常量字符串常量是一对双撇号括起来的字符序列“a”a’的区别?•经典例题讲解:大小写字母的转换#include<stdio.h>voidmain(){charc1=’a’;c2=’b’;c1=c1-32;c2=c2-32;printf“c%c″c1,c;}大写字母和小写字母相差32,大写字母加32变小写,小写字母减32变大写5、各类数值型数据间的混合运算混合运算:整型(包括int,short,lon、浮点型(包括float,doubl)提问:表达式’c’+’d’的结果是什么类型?作业及课外训练:课后习题,上机2学时参考资料(含参考书、文献等:《c程序设计》(第四版)谭浩强编著总结分析:举生活中例子让同学们理解变量的含义3周次章节名称教学目的与要求:
第3次课 课时 2学时第2章2.2运算符和表达式教学目的:学习运算符的功能、优先级,结合性,以及表达式的运算顺序教学要求:1、理解运算符的功能、优先级,结合性,以及表达式的运算顺序;2、理解表达式求解过程中数据类型的自动转换与强制转换;教学重点和难点:教学重点:各运算符的功能及使用方法教学难点:各运算符的功能及使用方法教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分一、复习相关知识点:5分钟(多媒体演示)复习上次课学习过的数据类型,是将参与运算的对象。二、介绍本次教学内容:5分钟(板书书写本次讲授内容提纲)本次课将学习算术运算符,逻辑运算符,关系运算符。三、讲授知识点:75分钟(多媒体演示,并结合适当板书)1、算术运算符和算术表达式对于每一种运算符重点了解其运算功能和其对操作数的要求,以及它的优先级和结合性算术运算符:重点是/和%两运算符结合应用提问:如何把123拆成1,2,3?2、赋值运算符:强调赋值号左侧一定是变量,不能是运算符和表达式提问:a=a+3=b+7正确否?3、关系运算符:运算结果是逻辑值3、逻辑运算及其表达式介绍逻辑运算符以及它的重要特性:短路特性4、关系运算符:重点强调==和=5、自增自减运算符:使用频率最高的运算符,讲解明白前置和后置对表达式和运算对象的影响。4、位运算符:参与运算对象必须先转换成二进制,然后再运算。5、逗号运算符和逗号表达式逗号运算符:将两个表达式连接起来,又称为“顺序求值运算符”如:3+5,6+8求解过程: 先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值逗号表达式的一般形式可以扩展为表达式1,表达式2,表达式3,……,表达式n它的值为表达式n的值注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的如: printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c)思考:若表达数学式子a<b<c,在c语言中应该怎么表达?作业及课外训练:课后习题课外训练:实践教程习题参考资料(含参考书、文献等:《c(第四版)总结分析:多做演示让学生理解运算符的功能,并熟悉c语言的开发步骤。4周次周次4次课课时2学时章节名称2.33.2scanf()输出函数调用教学目的与要求:教学目的:学习数据类型的转换,学习数据输入输出库函数。教学要求:1、掌握数据类型的转换和表达式的计算2、掌握字符数据的输入输出;3、掌握格式输入输出函数。教学重点和难点:教学重点:数据类型的转换,格式输入输出函数教学难点:数据类型的转换和表达式的计算,格式输入输出函数教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分一、复习相关知识点:5分钟(多媒体演示)计算机的执行,表达式的计算如果想看到结果,必须输出到某个输出设备上,如果在运算过程中需要人机交互,必须从输入设备得到数据,这些都是通过输入输出函数得到的。二、介绍本次教学内容:5分钟(板书书写本次讲授内容提纲)本次课学习数据的标准输入输出库函数。介绍函数的作用和地位。三、讲授知识点:75分钟(多媒体演示,并结合适当板书)强制类型转换运算符格式:(类型关键字或类型名)表达式如:(int)(x+y)%(int)p (double)a 实例:#include<stdio.h>voidmain(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}运行的结果是:x=3.600000,i=3数据输入输出的概念及在C语言中的实现CC#include”将有关的“头文件”包括到用户源文件中。1、字符数据的输入输出字符输出函数一般形式:putchar(c)函数作用:向终端输出一个字符2、.字符输入函数一般形式:getchar()函数作用:从终端(或系统隐含指定的输入设备)输入一个字符。函数值: 从输入设备得到的字符3、格式输出函数函数作用:向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。一般格式:printf(格式控制,输出表列)4、格式输入函数函数作用:按照变量在内存的地址将变量值存进去。一般格式:scanf(格式控制,地址表列)在输入数据时,遇以下情况时认为该数据结束。①遇空格,或按“回车”或“跳格”(Tab)键;②按指定的宽度结束,如“%3d”,只取3列;③遇非法输入。③遇非法输入。格式输入输出多加练习,不要死记语法。2参考资料(含参考书、文献等:《c(第四版)谭浩强编著总结分析:字符输入输出函数强调只能针对一个字符操作5周次周次5次课课时2学时章节名称 3.3程序的3种基本结构,3.4if选择结构语句3.5switch选择结构语句教学目的与要求:教学目的:学习选择结构教学要求:掌握if语句的格式、执行过程和用法;掌握switch语句的格式、执行过程和用法;理解较简单的if语句嵌套及switch语句嵌套教学重点和难点:教学难点:选择结构教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分一、复习相关知识点:5分钟(板书、互动)运算符的功能、优先级,结合性,以及表达式的运算顺序;常用输入、输出函数的功能和用法。二、介绍本次教学内容:10分钟(板书书写本次讲授内容提纲)ifswitch较简单的ifswitch三、讲授知识点:75分钟(多媒体演示,并结合适当板书)一、条件语句if语句的三种形式语法1:if(表达式)语句;如:#include<stdio.h>main(){intx,y;scanf(“%d”,&x);y=x;if(x<0)y=-x;printf(“|%d|=%d”,x,y);}语法2:if(表达式)语句1;else 语句2;如:#include<stdio.h>main(){inta,b;scanf(“%d%d”,&a,&b);if(a>b) elseprintf(“max=%d\n”,b);}语法3:if(表达式1)语句1;else if表达2) 语2;else if表达3) 语3;……else n+1;说明:1、三种形式的if语句中,if关键字后均为表达式(逻辑表达式、关系表达式、赋值表达式、变量等);如:if(a=5)语句; if(b)语句;2、if语句中,条件表达式必须用括号括起来,在语句后必须加分号;3、满足条件需执行一组语句时,该组语句必须{ 括起来如:if(a+b>c&&b+c>a&&a+c>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area=%6.2f\n”,area);}else printf(“Itisnotatrilateral.”);4、if语句嵌套时,else总是与它最靠近if 匹配;如:有一数学函数:x<0时,y=-1;x=0时,y=0;x>0时,y=1编写程序,输入x的值,输出相应y的值。二、switch语句语法1:switch(表达式){ caseC1;1caseC:语句序列2;2……caseC:语句序列n;ndefault:语句序列n+1;}语法2:switch(表达式){caseC:语句序列1;break;1caseC:语句序列2;break;2}其中:
……caseC:语句序列n;break;ndefault:语句序列n+1;break;switch后括号中的表达式可以为任何类型;C
是常量表达式,一般是整数或字符,与switch中表达式的取值对应;1 ndefaulteCC1 n注意两种语法的执行顺序!例:switch(grade){ case‘A’:printf(“85~100\n”);case‘B’:printf(“70~84\n”);break;case‘C’:printf(“60~69\n”);break;case‘D’:printf(“<60\n”);break;default: printf(“error\n”);break;}case例:switch(ch){ case‘0’: case‘1’:case‘2’:case‘3’:case‘4’:case‘5’:case‘6’:case‘7’:case‘8’:case‘9’:digit++;break;case‘‘:casecase‘\n’:white++;default:character++;}2参考资料(含参考书、文献等:实践教程第三章总结分析:两种选择语句:if-else、switch语句,注意选择条件的描述;在编写程序过程中,注意分支的作用范围,及复合语句的运用。6周次周次6次课课时2学时章节名称教学目的与要求:4.1for~4.43教学目的:学习循环程序设计的含义及思路,掌握三种循环语句的语法结构教学要求:掌握forwhiledo-while教学重点和难点:教学重点:三种循环语句while、do-while、for教学难点:三种循环语句的区别教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分一、复习相关知识点:5分钟(板书、互动)ifswitch较简单的ifswitch二、介绍本次教学内容:10分钟(板书书写本次讲授内容提纲)for语句whiledo-while三、讲授知识点:75分钟(多媒体演示,并结合适当板书)步骤一引入新课问题1:假如全班41人,欲从键盘上输入每人的数学成绩,然后计算出平均成绩;问题2:编程计算n!。重复执行一组语句是程序设计要求的基本功能之一。在C语言中可以用以下语句来实现循环:(1)forwhiledo-while步骤二讲授新课一、for语句语法:for(表达式1;表达式2;表达式3)循环体语句;语义:1、先求表达式1;2、求解表达式2,若其值为真,则执行第三步;若为假,则结束循环;3、执行循环体中的语句;4、求解表达式3;5、转回第二步继续执行 如: for(i=1;i<=100;i++)sum=sum+i;可看成:for(循环变量赋初值;循环条件;循环变量增值)语句;说明:for循环更简洁,更灵活;循环体可以是复合语句;forfor(i=0,j=1;j<n&&i<n;i++,j++)…for语句中三个表达式可省:省exp1;如:i=1; for(;i<5;i++) 等价于for(i=1;i<5;i++) printf(“%d\n”,i);省exp2;如:for(i=1; ;i++){ printf(“%d\n”,if(i>5)break;}省exp3;如:for(i=1;i<5;){printfi++; }等价于for(i=1;i<5;i++)printf(“%d\n”,i);13i=1;sum=0;for(;i<=100;) { sum+=i; i++;}三个表达式全省时,如for(; ;)语句;等价于while(1)语句;三个表达式可包含与循环变量无关的语句for(;(c=getchar())!=‘\n’;printf(“%c”,c));for语句中的循环体可以是空语句;如int n=0;for(;n++<=2;);printf(“%d”,n);——该程序段的输出结果为:4二、while语句语法:while(exp)循环体语句;语义:当exp为真时,执行循环体;为假时,执行循环语句的后续语句;如:用while语句构成循环,求sum=1+2+…+100程序如下:main(){ int i=1,while(i<=100){sum+=i;i++;}printf(“%d”,sum);}说明:循环体可以用复合语句;在while语句前应有为测试表达式始;如:i=1;while(i<=100)sum=sum+1;(死循环4)while循环的特点是先判断后执行,故循环有可能一次都不被执行如: i=3;while(i<3)printf(“i=%d\n”,i);三、do-while语句语法:do循环体语句;while(exp);语义:当exp为真时,执行循环体;为假时,执行循环语句的后续语句;如:用do-while语句构成循环,求sum=1+2+…+100 程序如下:#include<stdio.h>voidmain(){ inti=1,sum=0;do{sum+=i;i++; while(i<=100);printf(“%d”,sum);}说明:循环体可以用复合语句;do前必须赋初值;循环体内应有改变循环控制变量的语句;do-while如:i=3;do{ sum+=i++;}while(i>10);例1:用公式求π的近似值,直到最后一项的绝对值小于10-6为止。π/4≈1-1/3+1/5-1/7+……#include<stdio.h>voidmain(){ ints=1;float n=1.0, t=1, while((fabs(t))>1e-6){pi=pi+t; n+=2;s=-s; t=s/n;}pi=pi*4;printf(“pi=%10.6f\n”,pi);}例2:求整数a和b的最小公倍数。#include<stdio.h>voidmain(){inta,b,i;scanf(“%d%d”,&a,&b);i=0;while(1){i++;if(i%a==0)if(i%b==0){printf(“%d\n”,i);break;}}}作业及课外训练:课后习题,上机2学时参考资料(含参考书、文献等参考资料(含参考书、文献等:实践教程第4章总结分析:1、while、do-while、for语句的语法结构,特别是for语句中三个表达式的作用2whiedo-while3周次周次7次课课时2学时章节名称教学目的与要求:4.5~4.7程序设计举例教学目的:1、掌握嵌套的循环结构掌握break\continue语句2、学会编程的基本方法教学要求:掌握嵌套的循环结构,掌握break\continue语句教学重点和难点:教学重点:循环的嵌套、break语句、continue语句、程序举例教学难点:break与continue的区别,循环嵌套步骤一复习引导上节课学习了三种循环语句,我们应该学会灵活运用来解决具体问题步骤二讲授新课一、循环的嵌套三种循环可以互相嵌套例:打印九九乘法表9×1=9 9×2=18 9×3=27……9×8=72 9×9=81#include<stdio.h>voidmain(){inti, j;for(i=1;i<=9;i++){for(j=1;j<=9;j++)printf(“%d*%d=%2d “,i,j,1×1=11×2=21×3=3……1×8=81×9=92×1=22×2=42×3=6……2×8=162×9=183×1=33×2=63×3=9……3×8=243×9=27………………}说明:
printf(“\n”);}⑴内循环必须完全包含在外循环中,不能交叉;⑵并列循环允许使用相同的循环变量,嵌套循环不允许二、三种循环的比较1、do-while中循环体至少执行一次;2、while和do-while中在while后指定条件,循环体中包含使循环趋于结束的语句;for在exp3中可含使循环趋于结束的语句,也可含在循环体中。3、while和do-while中,循环变量初始化语句应放在while和do-while语句前;for可在exp1中实现循环变量初始化。4、都能用break跳出循环,用continue结束本次循环。三、break语句和continue语句1、break语句break只能用在循环语句、switch语句中,它的功能是强行退出循环或switch。例:for(r=1;r<=10;r++){area=pi*r*r;if(area>100)break;printf(“%f”,area);}2、continue语句只能用在循环语句中,它的功能是结束本次循环,跳到循环体中下面尚未执行的语句,接着进行下次是否执行循环的判定。例:for(n=100;n<=200;n++){if(n%3==0) printf(“%d”,n);}说明:⑴continue和break语句的区别:前者只结束本次循环,而不是终止整个循环;后者则是结束整个循环过程。⑵在多重循环中,break只能退出其所在循环。breakgotocontinue制在循环体内转移,但不允许用任何方式从循环体外转到循环体内。四、程序举例例1Fibonacci1238…的前401=(n=2=(n==Fn-+Fn-(n大于2)——(P116)2:判别m100~200程序设计的三种方法:A.枚举法:就是逐一列举出可能解的各个元素,并加以判断,直到求得所需要的解。常用在排列、组合、数据分类、信息检索、多解方程的求解上;B.B.数列和级数求和。C.抽象法:自顶向下,逐步求精。2参考资料(含参考书、文献等c(第四版)谭浩强编著总结分析:12breakcontinue语句3、编程常用的三种方法,分别适用于不同情况8周次周次8次课课时2学时章节名称教学目的与要求:5.1数组~5.2二维数组1、理解数组的含义和存储特点;2、掌握一维数组、二维数组的声明、初始化,掌握数组元素的引用、赋值及相互关系;3、掌握字符数组的声明、初始化及字符数组元素的引用;理解字符串与字符数组的异同;掌握常用的字符串处理函数;教学重点和难点:教学重点:一维数组、二维数组的定义、初始化,数组元素的引用;字符串与字符数组,常用的字符串处理函数;教学难点:一维数组、二维数组,字符串与字符数组。教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分分钟(多媒体演示,并结合适当板书)1、一维数组的定义和初始化:一维数组的定义方式为:类型说明符数组名[常量表达式];其中:类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:inta[10]; 说明整型数组a10floatb[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素charch[20]; 说明字符数组ch,有20个元素。对于数组类型说明应注意以下几点:1) 是相同的。2) 数组名的书写规则应符合标识符的书写规定。3) 例如:main(){inta;floata[10];……}是错误的。4) 方括号中常量表达式表示数组元素的个数,如a[5]表示数组a505a[0],a[1],a[2],a[3],a[4]。5) 例如:#defineFD5main(){inta[3+2],b[7+FD];……}是合法的。main(){intn=5;inta[n];……}6) 允许在同一个类型说明中,说明多个数组和多个变量例如: inta,b,c,d,k1[10],k2[20];C语言对数组的初始化赋值还有以下几点规定:1) 可以只给部分元素赋初值。当{}中值的个数少于元素个数时,只给前面部分元素赋值。例如:inta[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。2) 1inta[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:inta[10]=1;3) 例如:inta[5]={1,2,3,4,5};可写为:inta[]={1,2,3,4,5};2、一维数组的元素引用:数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:数组名[下标]其中下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。例如:a[5]a[i+j]a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。例如,输出有10个元素的数组必须使用循环语句逐个输出各下标变量:for(i=0;i<10;i++)printf("%d",a[i]);而不能用一个语句输出整个数组。下面的写法是错误的:printf("%d",a);【例1】main(){inti,a[10];for(i=0;i<=9;i++)a[i]=i;for(i=9;i>=0;i--)printf("%d",a[i]);}二、编写程序举例:30分钟(多媒体演示,并结合适当板书)1main(){inti,a[10];for(i=0;i<10;)a[i++]=i;for(i=9;i>=0;i--)printf("%d",a[i]);}2main(){inti,a[10];for(i=0;i<10;)a[i++]=2*i+1;for(i=0;i<=9;i++)printf("%d",a[i]);printf("\n%d%d\n",a[5.2],a[5.8]);}1、二维数组的定义和初始化:前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。本小节只介绍二维数组,多维数组可由二维数组类推而得到。二维数组定义的一般形式是:类型说明符数组名[常量表达式1][常量表达式2]其中常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度。例如:inta[3][4];a个,即:a[0][0],a[0][1],a[0][2],a[0][3]a[1][0],a[1][1],a[1][2],a[1][3]a[2][0],a[2][1],a[2][2],a[2][3]即:先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四个元素也是依次存放。由于数组a说明为int类型,该类型占两个字节的内存空间,所以每个元素均占有两个字节)。连续赋值。例如对数组a[5][3]:1) inta[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};2) inta[5][3]={80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};这两种赋初值的结果是完全相同的。【例1】main(){inti,j,s=0,average,v[3];inta[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};for(i=0;i<3;i++){for(j=0;j<5;j++)s=s+a[j][i];v[i]=s/5;s=0;}average=(v[0]+v[1]+v[2])/3;printf("math:%d\nclanguag:%d\ndFoxpro:%d\n",v[0],v[1],v[2]);printf("total:%d\n",average);}对于二维数组初始化赋值还有以下说明:1) 可以只对部分元素赋初值,未赋初值的元素自动取0例如:inta[3][3]={{1},{2},{3}};是对每一行的第一列元素赋值,未赋值的元素取0值。赋值后各元素的值为:100200300inta[3][3]={{0,1},{0,0,2},{3}};0100023002) 例如:inta[3][3]={1,2,3,4,5,6,7,8,9};可以写为:inta[][3]={1,2,3,4,5,6,7,8,9};3) 数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的。设一根据这样的分析,一个二维数组也可以分解为多个一维数组。C语言允许这种分解。如二维数组a[3][4a[0]a[1]a[2]对这三个一维数组不需另作说明即可使用。这三个一维数组都有4个元素,例如:一维数组a[0]的元素为a[0][0],a[0][1],a[0][2],a[0][3]。必须强调的是,a[0],a[1],a[2]不能当作下标变量使用,它们是数组名,不是一个单纯的下标变量。2、二维数组的元素引用:二维数组的元素也称为双下标变量,其表示的形式为:数组名[下标][下标]其中下标应为整型常量或整型表达式。例如:a[3][4]表示a数组三行四列的元素。者只能是常量,后者可以是常量,变量或表达式。5成绩。张王李赵周Math8061598576C7565638777Foxpro9271709085可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average为全组各科总平均成绩。编程如下:main(){inti,j,s=0,average,v[3],a[5][3];printf("inputscore\n");for(i=0;i<3;i++){for(j=0;j<5;j++){scanf("%d",&a[j][i]);s=s+a[j][i];}v[i]=s/5;s=0;}average=(v[0]+v[1]+v[2])/3;printf("math:%d\nclanguag:%d\ndbase:%d\n",v[0],v[1],v[2]);printf("total:%d\n",average);}程序中首先用了一个双重循环。在内循环中依次读入某一门课程的各个学生的成绩,并把这些成绩累加起来,退出内循环后再把该累加成绩除以5送入v[i]之中,这就是该门课程的平均成绩。循环共循环三次,分别求出三门课各自的平均成绩并存放在 v数组之中。退出外循环之后,把v[0],v[1],v[2]相加除以3即得到各科总平均成绩。最后按题意输出各个成绩。三、给出题目让学生编程:30分钟(师生互动)1、编写一个程序,他能够求两个阶乘之和。2、求出一个具有10个元素的数组中最大的元素,并输出到屏幕上;作业及课外训练:课后习题,上机2学时参考资料(含参考书、文献等:1《C语言程序设计(第四版) 谭浩强 清华大学出版社总结分析:强调一维数组、二维数组的定义、引用及初始化,以及一维数组、二维数组的存储形式9周次章节名称教学目的与要求:
第9次课 课时 2学时5.3字符型数组1、理解数组的含义和存储特点;2、掌握一维数组、二维数组的声明、初始化,掌握数组元素的引用、赋值及相互关系;3、掌握字符数组的声明、初始化及字符数组元素的引用;理解字符串与字符数组的异同;掌握常用的字符串处理函数;教学重点和难点:教学重点:一维数组、二维数组的定义、初始化,数组元素的引用;字符串与字符数组,常用的字符串处理函数;教学难点:一维数组、二维数组,字符串与字符数组。教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分分钟(多媒体演示,并结合适当板书)1、字符数组与一维字符数组:用来存放字符量的数组称为字符数组。形式与前面介绍的数值数组相同。例如:charc[10];由于字符型和整型通用,也可以定义为intc[10]但这时每个数组元素占2个字节的内存单元。字符数组也可以是二维或多维数组。例如:charc[5][10];即为二维字符数组。字符数组也允许在定义时作初始化赋值。例如:charc[10]={‘c’,‘ ’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,’m’};赋值后各元素的值为:数组C c[1]‘p’‘r’‘0’‘g’‘r’‘a’‘m’c[9‘p’0当对全体元素赋初值时也可以省去长度说明。例如:charc[]={`c`,``,`p`,`r`,`o`,`g`,`r`,`a`,`m`};这时C数组的长度自动定为9。【例1】main(){inti,j;chara[][5]={{'B','A','S','I','C',},{'d','B','A','S','E'}};for(i=0;i<=1;i++){for(j=0;j<=4;j++)printf("%c",a[i][j]);printf("\n");}}本例的二维字符数组由于在初始化时全部元素都赋以初值,因此一维下标的长度可以不加以说明。'\0'\0''\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。C语言允许用字符串的方式对数组作初始化赋值。例如:charc[]={'c','','p','r','o','g','r','a','m'};可写为:charc[]={"Cprogram"};或去掉{}写为:charc[]="Cprogram";用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志'\0'。上面的数组c在内存中的实际存放情况为:C p r o g r a m \0‘\0'是由C‘\0'2、字符串的输入与输出在采用字符串方式后,字符数组的输入输出将变得简单方便。除了上述用字符串赋初值的办法外,还可用printfscanf数组中的字符串,而不必使用循环语句逐个地输入输出每个字符。【例2】main(){charc[]="BASIC\ndBASE";printf("%s\n",c);}注意在本例的printf函数中,使用的格式字符串为“%s”,表示输出的是一个字符串。而在输出表列中给出数组名则可。不能写为:printf("%s",c[]);【例3】main(){charst[15];printf("inputstring:\n");scanf("%s",st);printf("%s\n",st);}本例中由于定义数组长度为15,因此输入的字符串长度必须小于15,以留出一个字节用于存放`\0`还应该特别注意的是,当用scanf例如当输入的字符串中含有空格时,运行情况为:inputstring:thisisabook输出为:this存放含空格的串。程序可改写如下:【例4】main(){charst1[6],st2[6],st3[6],st4[6];printf("inputstring:\n");scanf("%s%s%s%s",st1,st2,st3,st4);printf("%s%s%s%s\n",st1,st2,st3,st4);}本程序分别设了四个数组,输入的一行字符的空格分段分别装入四个数组。然后分别输出这四个数组中的字符串。&a,&b续的内存单元。如有字符数组charc[10],在内存可表示如图。C[0] C[1] C[2] C[3] C[4] C[5] C[6] C[7] C[8] C[9]设数组c2000,也就是说c[02000。则数组名cc&scanf("%s",&c)printf("%s",c)时,按数组名c'\0'为止。C语言提供了丰富的字符串处理函数,大致可分为字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。使用这些函数可大大减轻编程的负担。用于输入输出的字符串函数,在使用前应包含头文件"stdio.h",使用其它字符串函数则应包含头文件"string.h"。下面介绍几个最常用的字符串函数。1.字符串输出函数puts格式: puts字符数组)功能:把字符数组中的字符串输出到显示器。即在屏幕上显示该字符串。【例5】#include"stdio.h"main(){charc[]="BASIC\ndBASE";puts(c);}1.字符串输入函数gets格式: gets 字符数组)功能:从标准输入设备键盘上输入一个字符串。本函数得到一个函数值,即为该字符数组的首地址。【例6】#include"stdio.h"main(){charst[15];printf("inputgets(st);puts(st);}可以看出当输入的字符串中含有空格时,输出仍为全部字符串。说明gets函数并不以空格作为字符串输入结束的标志,而只以回车作为输入结束。这是与scanf函数不同的。1.字符串连接函数strcat格式: strcat字符数组名1,字符数组名2)功能:把字符数组2中的字符串连接到字符数组1中字符串的后面,并删去字符串1后的串标志“\0”。本函数返回值是字符数组1的首地址。【例7】#include"string.h"main(){staticcharst1[30]="Mynameis";intst2[10];printf("inputyourname:\n");gets(st2);strcat(st1,st2);puts(st1);}1的长度,否则不能全部装入被连接的字符串。1.字符串拷贝函数strcpy格式: strcpy字符数组名1,字符数组名2)21“\0”2,也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。【例8】#include"string.h"main(){charst1[15],st2[]="CLanguage";charst1[15],st2[]="CLanguage";strcpy(st1,st2);puts(st1);printf("\n");}1三、给出题目让学生编程:30分钟(师生互动)1、使用字符串处理函数,编写一个程序,该程序能够将两个字符串合并为一个字符串;2,那么用户输入正确,则登录成功,否则,告知登录失败。作业及课外训练:课后习题,上机2学时参考资料(含参考书、文献等:1《C语言程序设计(第四版) 谭浩强 清华大学出版总结分析:10周次周次10次课课时2学时章节名称教学目的与要求:5.4使用数组的程序设计方法教学目的:学会用数组解决问题教学要求:掌握排序、查找基本算法教学重点和难点:教学重点:程序举例,三种排序方法:冒泡排序、选择排序、插入排序,字符数组或字符串的处理教学难点:灵活运用数组教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分:步骤一、复习举例我们已经学习了数组这种数据结构,但还要学会用数组来解决具体问题。[例5.12]:利用选择法对10个整数进行由小到大排序。分析:选择排序的基本思想如下:第i趟排序选出第i小的元素,将其与第i位上的元素进行交换,n个元素共需进行n-1#include“stdio.h”voidmain({inti,j,k,temp,printf(“Enterdata:\n”);for(i=1;i<=9;i++)scanf(“%d”,&a[i]);for(i=0;i<9;i++){k=i+1;min=i;for(j=k;j<10;j++)if(a[j]<a[min])min=j;temp=a[i];a[i]=a[min];a[min]=temp;}for(i=1;i<=9;i++)printf(“%d”,a[i]);}[例5.17]:有一个已排好序的数组,今输入一个数,要求按原来的排序规律将它插入到数组中。#include“stdio.h”voidmain(){intvalue,t,i,j;staticinta[11]={1,10,20,30,40,50,60,70,80,90};for(i=0;i<10;i++)printf(“%3d”,a[i]);putchar(‘\n');scanf(“%d”,&value);a[10]=value;for(i=10;i>0;i--)if(a[i]<a[i-1]){t=a[i];a[i]=a[i-1];a[i-1]=t;elsebreak;for(i=0;i<11;i++)printf(“%3d”,a[i]);}[5.18]#include<stdio.h>voidmain(){ charstr1[10],str2[10]; inti,flag=1;gets(str1); gets(str2);i=0;while(str1[i]==str2[i]){if(str1[i]==‘\0'&&str2[i]==‘\0') i++;}if(flag)printf(“Thetwostringsarenotelseprintf(“Thetwostringsareequal”);}[5.20]输入一行字符,统计其中有多少个单词,单词之间用空格分隔开(P138)[练习]s2s1strcpy时,00后面的字符不拷贝。#include<string.h>#include“stdio.h”voidmain(){ chars1[80],inti;printf(“Inputs2:”);scanf(“%s”,s2);for(i=0;i<=strlen(s2);i++)s1[i]=s2[i];printf(“s1:%n”,s1);}2参考资料(含参考书、文献等:《c程序设计》(第四版)谭浩强编著11周次章节名称教学目的与要求:
第11次课 课时 2学时6.1结构化程序设计~6.2函数的定义和调用1、C语言库函数的调用。2、函数的定义与声明。3、函数的类型与返回值。4、函数的形式参数与实际参数,参数值的传递。教学重点和难点:教学重点:函数的类型与返回值,形参与实参,参数值的传递教学难点:形参与实参教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分:步骤一复习引导一个C语言源程序可由一个主函数和若干个辅助函数组成。由主函数调用其他函数,其他函数也可以互相调用。步骤二讲授新课结构化的程序设计方法。一个完整的c例6.1#include"stdio.h"voidmain(){floata,b,c,v;scanf(”%f,%f,%f”,&a,&b,&c);v=volume(a,b,c);print_message( );}floatvolume(floata,floatb,floatc){floatv;v=a*b*c;return(v);}voidprint_message( ){printf(”v=%f”,v);}说明: 1、一个源程序文件由一个或多个函数组成。一个源程序文件是一个编译单位。 2C程序由一个或多个源程序文件组成。这样可以分别编写、分别编译,提高调度效率。 3、Cmainmain函数中结束整个程序的运行。 4main函数。 56、从函数的形式看,函数分为两类:无参函数和有参函数函数定义的一般形式(一)无参函数的定义形式类型标识符 函数名(){函数体(包括声明部分和执行部分)}例:printstar(){printf(“**********\n”); }(二)有参函数定义的一般形式类型标识符 函数(形式参数){函数体(包括声明部分和执行部分)}例如:intmax(intx,inty){intz;z=x>y?x:y;return(z);}(三)一个函数可以是空函如 dummy(){ }函数参数和函数的值(一)形式参数和实际参数形式参数:定义函数时函数名后括号中的变量名,简称形参;实际参数:调用函数时函数名后括号中的表达式,简称实参。main(){inta,b,c;scanf(“%d,%d”,&a,&b)cmax(a,b); /*max*/printf(“max=%d”,c)}int max(intx,inty) /*max*/{intz;z=x>y?x:y;return(z);}说明:1才被分配内存单元。在调用结束后,形参所占的内存单元也被释放2、实参可以是常量、变量或表达式,如:c=max(3,a+b);但要求它们有确定的值。在调用时将实参的值赋给形参(如果形参是数组名,则传递的是数组的首地址,而不是变量的值。)3、在被定义的函数中,必须指定形参的类型;4、实参与形参的类型应一致。5、C语言规定,实参对形参的数据传递是“值传递是不同的单元。(二)函数的返回值1、return语句return或:return表达式;或:return;或:函数执行到最后遇到“}”return语句的用途有二:用于结束函数的执行并返回到调用者;用来向调用者传递一个返回值。void函数适用。5、函数值的类型如:int max(x,y)charletter(c1,double min(x,y)C语言默认函数返回值为int型。1)如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准;main(){floata,b; intc;scanf(“%f,%f”,&a,&b);c=max(a,b);printf(“Maxis%d\n”,c);}max(floatx,floaty){floatz;z=x>y?x:y;return(z);}若输入的数据情况为:1.5,2.5则输出的结果为:Maxis2return语句,则函数带回一个不确定值。为了明确表示“不带回值”,可以用“void”定义“无类型”(或称“空类型”)。如void print_message(){printf(“Howdoyoudo!\n”);}6、函数的调用要正确实现函数间的相互调用需满足下列条件:第一,被调用函数必须存在且允许调用;第二,必须给出满足函数运行时要求的参数;第三,在调用一个函数之前一般应该对被调用函数进行声明。(一)函数声明的一般形式函数类型 函数参数类型1,参数类型2,…,参数类或:函数类型 函数参数类型1参数1,参数类型2…);如:int print(charformat,char fun2(inti,char p1);float add(float,float);注意:函数声明与函数定义不同!(二)函数调用的一般方法函数调用形式:函数名(实参表列);1.函数语句如:前述例子中的print();2.函数表达式如:c=max(a,b);3.函数参数如:m=max(a,max(b,c));printf(“%d”,max(a,b));例:main(){inti=2,p;p=f(i,++i);printf(“%d”,p);}按自右而左和从左至右的顺序求值。例:计算组合C(m,n)=m!/(n!(m-n)!)作业及课外训练:课后习题,上机2学时参考资料(含参考书、文献等c(第四版)谭浩强编著总结分析:强调有参函数的定义形式,形参和实参的区别,函数的声明和调用12周次章节名称教学目的与要求:
第12次课 课时 2学时6.2.4函数参数及间的数据传递~6.3函数的嵌套调用和递归调用教学目的:1、掌握函数的嵌套调用和递归调用2、掌握虚实结合教学要求:掌握数组作为函数参数教学重点和难点:教学重点:嵌套和递归调用、数组作为函数参数教学难点:数组作为函数参数,递归调用、虚实结合教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分:数组作为函数参数虚实结合(哑实结合)一、数组元素作函数实参值传递:用赋值的方法,把实在参数的值赋给被调函数对应的形式参数。 不希望破坏调用函数中作为实在参数对象的值时,使用“值传递”方式; 二、数组名作函数参数地址传递:指形参与实参结合的不是数据本身,而是把数据的地址传递给被调用函数。结合后的形参与实参都指向同一个存储区。 在函数间传递一批数据时,一般采用“地址传递”方式。[例]:用选择法对数组中10个整数按由小到大排序。main(){int a[10],i;printf(“enterthearray\n”);for(i=0;i<10;i++)scanf(“%d”,&a[i]);sort(a,10); printf(“thesortedfor(i=0;i<10;i++)printf(“%d”,a[i]);printf(“\n”);}三、多维数组名作函数参数main(){staticinta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};printf(“maxvalueis%\n”,max_value(a));}float root(float x1,float x2){ int i; floaty1=f(x1);do{x=xpoint(x1,x2);y=f(x);if(y*y1>0){y1=y;x1=x; }else {y2=y;}while(fabs(y)>=0.0001);return(x);}函数的递归调用直接或间接调用自身的函数为递归函数。一个问题采用递归方法来解决时必须符合以下条件:可将一个问题转化为具有同样解法的规模较小的问题;必须有明确的结束条件。5542432322212105分析:显然这是一个递归问题。即:age(5)=age(4)+2age(4)=age(3)+2age(3)=age(2)+2age(2)=age(1)+2age(1)=10程序:age(int{intc;if(n==1)c=10;elsec=age(n-1)+2;return(c);}main(){ printf(“%d”,age(5));}[例]:利用递归求n!(P139)例:Fibonacci数列已在前面定义过,用递归函数求此数列的第n项。fib(intn){intf;if(n==0||n==1)f=1;elsef=fib(n-1)+fib(n-2);return(f); }[习题6.16]:用递归方法求n阶勒让德多项式的值,递归公式为1 (n=0)P(x)= x (n=1)n((2n-1)xP
(x)-(n-1)P
(x))/n (n>1)main(){ int x,n;
n-1
n-2float p(int,int);printf(“\nInputn&scanf(“%d,%d”,&n,&x);printf(“n=%d,x=%d\n”,n,x);printf(“P%d(%d)=%6.2f”,n,x,p(n,x));}float p(intn,intx){if(n==0) return(1);else if(n==1) return(x);else return(((2*n-1)*x-p((n-1),x)-(n-1)*p((n-2),x))/n);}例:双递归。这段程序的结果 void f(intb,intt){ int m;if(b<t){m=(b+t)/2;printf(“%d\n”,m)f(b,m-1);f(m+1,t);}}main(){f(1,6);}2参考资料(含参考书、文献等:《c程序设计》(第四版)谭浩强编著13周次章节名称教学目的与要求:
第13次课 课时 2学时6.4作用域和存储类型,6.5内部函数和外部函数1、局部变量和全局变量。2、变量的存储类型,变量的作用域和生存期。教学重点和难点:教学重点:局部变量和全局变量,变量的存储类型,变量的作用域和生存期。教学难点:局部变量和全局变量,变量的作用域和生存期。教学组织(含课堂教学内容、教学方法、辅助手段、师生互动、时间分配、注明板书设计部分:作用域与生存期概述变量的作用域(空间特性)变量的作用域也称为可见性,指变量能够被访问的范围范围较宽,可以是整个文件甚至是整个程序变量的存储类别(时间特性)除作用域(可见性)外的另外两个特性:变量存放在计算机何处,变量何时存在—存储类别或CPU寄存器RAM划分:代码区、静态存储区、动态存储区存储类别:RAM:static、auto,CPU:register内部变量内部变量定义:在函数内或复合语句内定义,只在本函数内或复合语句内有效说明:main中定义的变量只在main中有效不同函数中同名变量,占不同内存单元形参属于局部变量可定义在复合语句中有效的变量局部(空间特)变量可用存储类时间特):auto register static (默认为auto,省略)例不同函数中同名变量voidsub(){inta,b;a=6;b=7;printf("sub:a=%d,b=%d\n",a,b);}voidmain(){ inta,b;a=b=4;printf("main:a=%d,b=%d\n",a,b);sub();printf("main:a=%d,b=%d\n",a,b);}运行结果:main:a=3,b=4sub:a=6,b=7main:a=3,b=4根据存储类别的不同,内部变量可以分为自动变量、寄存器变量和静态内部变量。auto格式:[auto]类型变量名列表;auto可省略autointa; 等价于 inta;自动变量的生存期:自动变量存在于RAM中的动态存储区—“栈”,并且仅当定义它的函数或复合语句被执行时,才创建该变量,执行结束后该变量自动被删除掉,释放占用的内存空间。自动变量用的最多,不会永久占用内存空间。寄存器变量格式:register类型变量名列表;for(registerinta=0;a<1000000;a++)寄存器变量存在于cpu器中,加快执行速度。注意:只有整型变量能放在寄存器中,包括:int、char、short、long等。寄存器变量必须是auto类型的局部变量、形参,不能是全局变量或静态变量。由于寄存器数量很少,不能保证定义的寄存器变量总是能分配到寄存器,这时作为普通变量。对于寄存器变量,不能做取地址(&)运算。静态内部变量格式:static类型变量名列表;staticinta;形参不能是定义成static。内部变量定义成static后,作用域不变,但生存期变长,在整个程序执行前就存在,直到程序结束才清除掉,其生存期为整个程序的运行期。使用注意:静态变量只初始化一次。静态变量的值具有“记忆”性。尽管生存期变长,但作用域(可见性)仍然局限在定义它的局部范围内。例静态内部变量的生存期#include<stdio.h>voidinc1(){intx=0;x++;printf("ininc1x=%d\n",x);}voidinc2(){staticintx=0;x++;printf("ininc2x=%d\n",x);}voidmain(){inti;for(i=0;i<inc1();for(i=0;i<inc2();}运行结果:ininc1x=1ininc1x=1ininc1x=1ininc2x=1ininc2x=2ininc2x=3外部变量全局变量定义:在函数外定义,可为本文件所有函数共用作用域:从定义变量的位置开始到本源文件结束,及有extern说明的其它源文件生存期:整个程序运行期间用extern声明外部变量:extern 数据类型 变量表外部变量定义与外部变量说(声)不同若外部变量与局部变量同名,则外部变量被屏蔽!!! 降低了函数的通用性、可靠性,可移植性降低程序清晰性,容易出错例 外部变量与局部变量(同名的局部变量屏蔽外部变量)/*ch9_3.c*/inta=3,b=5;intmax(int a,intb){ intc;c=a>b?a:b;return(c);}voidmain(){inta=8;printf("max=%d",max(a,b));}运行结果:max=8存储类别小结从作用域角度分:局部变量: 自动变量即动态局部变离开函数,值就消静态局部变(离开函数,值仍保)寄存器变量(离开函数,值就消失)形式参数可以定义为自动变量或寄存器变全局变量: 静态外部变(只限本文件引)外部变量(即非静态的,允许其他文件引用)从变量存在的时间分:动态存储:自动变量、寄存器变量、形式参数静态存储:静态局部变量、静态外部变量、外部变量从变量值存放的位置分:内存中的静态存储区:静态局部变量、静态外部变量、外部变量内存中的动态存储区:自动变量和形式参数寄存器:寄存器变量static对局部变量和全局变量的作用不同。对局部变量来说,它使变量静态存储,对全局变量来说,它使变量局部化(本文件),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年轮胎装拆机项目可行性研究报告
- 2025年轧口喷头项目可行性研究报告
- 2025年虾饲料专用水产诱食促长剂项目可行性研究报告
- 2025-2030中国膳食纤维营养补充剂行业市场发展趋势与前景展望战略研究报告
- 2025年船用广角度表项目可行性研究报告
- 2025-2030中国结构空心截面行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国纳吉勒烟草行业市场发展趋势与前景展望战略研究报告
- 2025年脚钉项目可行性研究报告
- 2025-2030中国米非司酮胶囊行业发展分析及发展前景与投资研究报告
- 2025-2030中国管刷行业市场发展趋势与前景展望战略研究报告
- 2023-2024学年上海交大附中高三上英语10月周练卷及答案
- 病理生理学病例分析报告
- 三D打印公开课
- 补铁剂中铁元素的检验-应用配合物进行物质检验高二化学鲁科版(2019)选择性必修2
- 基于深度学习的图像分割
- 给水管网改造工程施工组织设计概述
- 营业收入的预测分析报告
- 无人机工艺技术方案
- 从赵紫宸的神学思想看基督教与中国社会之关系
- 专车接送服务租赁合同
- 华为QSA审核报告
评论
0/150
提交评论