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

下载本文档

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

文档简介

C语言程序设计主讲人:******

本课程的设置目的专业设置的需要C语言程序设计是计算机专业和非计算机专业的公共基础课程,同时,这门课程也是计算机等级考试二级考试的主要语种之一。本课程的先行课程为《计算机应用基础》,是《数据结构》《操作系统》《数学建模》等课程的前导课程。就业的需要学习本课程的方法上机实习学习者看书听课积累词汇本课程的成绩评定试卷成绩(70%)平时成绩(30%)本课程的主要内容程序设计基础C语言概述数据类型、运算符及其表达式结构化的C语言程序设计数组函数指针结构体与共用体文件编译预处理 第一章程序设计基础从1946年世界第一台计算机诞生以来,计算机使得世界技术发生了翻天覆地的变化,计算机已作为一种文化渗透到世界每一个角落。其中作为使用计算机的工具语言对世界影响较大的有三种有:汇编语言(机器语言)数据库C语言1.1程序设计的基本概念

C语言是一种得到广泛重视并普遍应用的计算机程序设计语言,也是国际上公认的最重要的几种通用程序设计语言之一。用C语言可以编写:系统软件(操作系统、编译系统等。与C同时出现的多用户操作系统UNIX现在都是用C语言程序编制的)。应用软件(C是工业控制单片机的开发语言之一,图形处理)。1.1.1程序从自然语言的角度来说,程序是对解决某个问题的方法步骤的描述;从计算机的角度来说,程序是用某种计算机能识别并可执行的计算机语言描述解决问题的方法步骤。程序的特点是有始有终、每个步骤都能操作、所有步骤执行完对应问题要能得到解决。【例】:求解任一圆的面积,步骤如下:第一步:输入圆的半径R第二步:利用公式S=3.14*R*R,求出圆的面积S第三步:输出结果S以上步骤就是求解任一圆面积的程序。1.1.1程序【例】:求1-100的和第一步:初始化变量S=0和计数器I=1第二步:S=S+II=I+1第三步:判断计数器I的值有没有大于100,如果没有,返回到第二步执行;否则执行第四步第四步:输出结果S的值以上步骤就是求1-100的和程序。1.1.1程序1.1.2算法与数据结构1976年瑞士计算机科学家NiklausWirth在他的惊世之作中提出了一个著名的公式:算法+数据结构=程序NiklausWirth1.算法程序设计的关键是解题的方法与步骤—算法,它反映了计算机的执行过程,是对解决特定问题操作步骤的一种描述。算法可分为两大类:数值运算算法和非数值运算算法。

1.1.2算法与数据结构算法的特性:有穷性确定性有零个或多个输入有一个或多个输出有效性1.1.2算法与数据结构2.常用算法的表示方法(1)用自然语言表示算法用自然语言表示算法的优点是通俗易懂,但文字冗长,易产生歧义。除了很简单的问题,一般不用自然语言表示算法。1.1.2算法与数据结构(2)用流程图表示算法流程图是一种传统的算法表示法,它利用几何图形框来表示各种不同性质的操作,用流程线来指示算法的执行方向。用它表示算法,直观形象,易于理解。1.1.2算法与数据结构(2)用流程图表示算法1.1.2算法与数据结构起止框输入输出框判断框处理框流程线连接点图:几何图形框的含义程序设计过程三个基本步骤:分析问题

进行用户需求分析、数据及处理分析、可行性分析、运行环境分析等。确定算法根据数学模型和设计方案,设计出可操作的具体步骤,并以流程图的形式将算法清晰、直观地表示出来。编程实现

选择某种计算机语言编写源程序。1.2程序设计的一般步骤

结构化程序设计是由迪克斯特拉(E.W.dijkstra)在1969年提出的,是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样的每一个模块,不会受到其它模块的牵连,因而可将原来较为复杂的问题简化为一系列简单模块的设计。1.3结构化程序设计方法

结构化程序设计的具体方法为:(1)自顶向下(2)逐步细化(3)模块化设计(4)结构化编码1.3结构化程序设计方法

C语言程序设计主讲人:******

第二章C语言概述C语言是当今最流行的程序设计语言之一,它适合作为系统描述语言,既可以用来编写系统软件,也可以用来编写应用软件。2.1C语言的发展及其特点1972年,贝尔实验室的布朗.W.卡尼汉和丹尼斯.M.利奇对B语言进行了完善和扩充,在保留B语言强大的硬件处理能力的基础上,扩充了数据类型,恢复了通用性,实现了最初的C语言。此后,为了让C语言成为在任何计算机上都能运行的通用计算机语言,1977年,由两人合写了著名的“THECPROGRAMMINGLANGUAGE”一书。2.1.1C语言的发展简史

(1)语言简洁、紧凑,使用方便、灵活。(2)运算符丰富。(3)数据结构丰富,具有现代化语言的各种数据结构。(4)具有结构化的控制语句2.1.2C语言的特点(5)语法限制不太严格,程序设计自由度大。(6)C语言能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。(7)生成目标代码质量高,程序执行效率高,可移植性好。2.1.2C语言的特点C语言之所以发展迅速,而且成为最受欢迎的语言之一,主要是因为它具有强大的功能。许多著名的系统软件,如UNIX/Linux、Windows、DBASEⅢPLUS、DBASEⅣ都是由C语言编写的。用C语言加上一些汇编语言子程序,就更能显示C语言的优势,像PC-DOS、WORDSTAR等就是用这种方法编写的。2.2简单的C程序介绍【例】:输出指定字符串#include<stdio.h>main(){printf("Hello,thisisacprogramming.\n");}程序运行结果:Hello,thisisacprogramming.2.2.1简单的C程序(1)一个C语言源程序可以由一个或多个源文件组成。(2)每个源文件可由一个或多个函数组成。(3)一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。2.2.2C源程序的结构特点(4)源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。(5)每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。(6)标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。2.2.2C源程序的结构特点(1)一个说明或一个语句占一行。(2)用{}括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。(3)低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。2.2.3C源程序的书写规则2.3运行C语言程序的基本步骤可执行目标程序.exe结束有开始有错?编辑执行连接编译不正确结果正确?源程序.c目标程序.obj库函数和其他目标文件无C语言程序设计主讲人:******

第三章基本数据类型、运算符与表达式C语言是一种强类型语言,程序在处理数据之前,要求数据具有明确的数据类型。所谓数据类型是按被定义变量的性质、表示形式、占据存储空间的多少、构造特点来划分的。C语言支持的数据类型非常丰富,它包括:基本数据类型,构造数据类型,指针类型,空类型及定义类型五大类。3.1C语言的数据类型

3.1C语言的数据类型

C语言数据类型基本数据类型导出数据类型double(双精度浮点型)long(长整型)char(字符类型)整型short(短整型)int(整型)浮点型float(单精度浮点型)longdouble(长双精度浮点型)void类型用户定制类型T*(指针类型)struct{…}(结构体类型)union{…}(共用体类型)文件类型enum(枚举)函数类型构造类型T[…](数组类型)1.标识符标识符用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。简单地说,标识符就是一个名字。C

规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。3.2标识符与关键字

说明:(1)标准C不限制标识符的长度(字符个数),但它受各种版本的C

语言编译系统限制,同时也受到具体机器的限制。例如在某版本C

中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。

3.2标识符与关键字

(2)在标识符中,大小写是有区别的。(3)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便阅读理解,作到“顾名思义”。

(4)不能与c编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名。3.2标识符与关键字

2.关键字关键字就是C语言中已经被赋予特定意义的一些单词。不可以把这类词作为名字来用。C的关键字有:autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticsizofstructswitchtypedefunionunsignedvoidvolatilewhile3.2标识符与关键字

C语言中存在着两种表征数据的形式:常量和变量。C语言中,值不能被改变并且不用存放在内存中的量称为常量。常量与数据类型结合起来分类。例如,整型常量、实型常量、字符型常量、字符串常量和符号常量。在编程过程中,常量是可以不经说明而直接引用的。3.3常量

1.整型常量的表示十进制整常数:十进制整常数没有前缀。其数码为0~9。八进制整常数:八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。十六进制整常数:十六进制整常数的前缀为0X或0x。其数码取值为0-9,A-F或a-f。3.3.1整型常量

2.整型常数的后缀长整型数是用后缀“L”或“l”整型的无符号数的后缀为“U”或“u”3.3.1整型常量

实型常量的表示十进制数形式:它是数码0-9和小数点组成(必须有小数点)。指数形式:指数表示法又称科学记数法。该表示形式由十进制数,加阶码标志“e”或“E”组成。3.3.2实型常量

1.一般字符型常量字符常量是用单引号括起来的一个字符。特点:(1)字符常量只能用单引号括起来,不能用双引号或其它括号。(2)字符常量只能是单个字符,不能是字符串。(3)字符可以是字符集中任意字符。3.3.3字符型常量

2.转义字符转义字符是一种特殊的字符常量。转义字符以反斜线"\"开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。3.3.3字符型常量

常用的转义字符及其含义3.3.3字符型常量

转义字符转义字符的意义ASCII代码 \n回车换行10 \t横向跳到下一制表位置9 \b退格8 \r回车13 \f走纸换页12 \\反斜线符"\"92 \'单引号符39\”双引号符34 \a鸣铃7 \ddd1~3位八进制数所代表的字符 \xhh1~2位十六进制数所代表的字符字符串常量是由一对双引号括起的字符序列。双引号(“”)作为字符串常量的定界符,因此,在字符串中表示双引号应使用转义序列’\”’来表示。3.3.4字符串常量

字符串常量和字符常量的区别:(1)字符常量由单引号括起来,字符串常量由双引号括起来。(2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。3.3.4字符串常量

(3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。(4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。3.3.4字符串常量

符号常量,用标示符代表一个常量。在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。用标识符代表一个常量,称为符号常量。符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值。符号常量在使用之前必须先定义,其一般形式为:#define<符号常量名><常量>3.3.5符号常量

3.4变量

变量,其值可以改变的量称为变量。变量具有三要素:名字、类型和值。3.4.1变量的定义

变量在使用之前必须进行定义——即为每个变量取一个名称(变量名),同时规定它的数据类型,以便编译时根据数据类型分配存储空间。变量定义的一般格式:

<数据类型><变量名表>1.变量初始化在程序中常常需要对变量赋初值,以便使用变量。语言程序中可有多种方法为变量提供初值。本小节先介绍在作变量定义的同时给变量赋以初值的方法。这种方法称为初始化。在变量定义中赋初值的一般形式为:

类型说明符变量1=值1,变量2=值2,……;3.4.2变量的初始化

【例】:inta=68;/*指定a为整型变量,初值为68*/floatb,c,d=7.9;/*b,c,d为单精度实型变量,只对d初始化,其值为7.9。*/3.4.2变量的初始化

2.变量的赋值赋值是将一个数值送给一个变量,改变这个变量已有的值为所赋的值,变量内保存的是最后一次赋的值。赋值是使用赋值表达式进行的。赋初值是在定义或说明变量时,将一个数值送给变量的,使变量被定义后便有值,直到被改变为止。3.4.2变量的初始化

【例】:变量的定义和赋值#include<stdio.h>main(){inta;charc=’b’,bell=’\007’;floatx=3.25;a=65;printf(“%c,%c\n”,c,c-1);printf(“%d,%c,%c\n”,c,a,bell);printf(“%.2f,%f\n”,x,x+x);}3.4.2变量的初始化

3.变量的地址在使用一个变量之前,要先对它进行定义,以便编译程序为其分配内存单元。也就是说,在定义了一个变量后,在内存中会分配相应的存储单元,将变量的值存储到该单元中。3.4.2变量的初始化

C语言中运算符和表达式数量之多,丰富的运算符和表达式使C语言功能十分完善。除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。3.5运算符及其表达式1.运算符(1)算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。3.5运算符及其表达式(2)关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。(3)逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。(4)位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(!)、位异或(^)、左移(<<)、右移(>>)六种。3.5运算符及其表达式(5)赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。(6)条件运算符:这是一个三目运算符,用于条件求值(?:)。(7)逗号运算符:用于把若干表达式组合成一个表达式(,)。3.5运算符及其表达式(7)逗号运算符:用于把若干表达式组合成一个表达式(,)。(8)指针运算符:用于取内容(*)和取地址(&)二种运算。(9)求字节数运算符:用于计算数据类型所占的字节数(sizeof)。(10)强制类型转换运算符:强制进行数据类型转换((类型))。3.5运算符及其表达式(11)分量运算符:用于存取结构和联合中的成员(→,.),其优先级在所有运算符中是最高的。(12)下标运算符:用于数组下标的表示([]).(13)其他运算符:如函数调用运算符(())。3.5运算符及其表达式(11)分量运算符:用于存取结构和联合中的成员(→,.),其优先级在所有运算符中是最高的。(12)下标运算符:用于数组下标的表示([]).(13)其他运算符:如函数调用运算符(())。3.5运算符及其表达式2.表达式表达式是使用运算符和圆括号将操作数连接起来构成的式子。C语言的操作数包括常量、变量、函数值等。3.简单语句C语言中,在表达式的末尾加上一个分号“;”就构成了简单语句。在程序设计过程中要避免使用无意义的简单语句。3.5运算符及其表达式3.5.1算术运算符和算术表达式

基本的算术运算符操作符作用运算目数结合方向例子+加双目加法,一目取正加自左至右,取正自右至左a+b,5+2,+5-减双目减法,一目取负减自左至右,取负自右至左5-3,x-y,-5*乘双目运算自左至右x*y,3*5/除双目运算自左至右x/y,20/5%取模双目运算自左至右5%3,-7%3--减1单目运算自右至左++i,i++++加1单目运算自右至左--i,i--1.赋值运算符程序设计中,赋值运算符是使用频繁的运算符。所谓,赋值就是将一个数据值存储到一个变量中,赋值运算符记为“=”。2.赋值表达式由赋值运算符“=”将一个变量和表达式连接的式子称为赋值表达式。其一般形式为:变量=表达式3.5.2赋值运算符和赋值表达式说明:(1)在赋值运算符的左边的量必须是变量,不能是常量或用上述运算符结合起来的表达式。(2)赋值表达式也应该有值,它的值就是被赋值的变量的值,其结果类型由赋值运算符“左值”的类型决定。3.5.2赋值运算符和赋值表达式说明:(3)赋值运算符具有右结合性赋值运算可以连续进行。(4)赋值运算符的优先级低于算术运算符的优先级。(5)将赋值表达式作为表达式的一种,不仅可以出现在赋值语句中,而且可以出现在其他语句(输出语句,循环语句)中。3.5.2赋值运算符和赋值表达式3.复合赋值运算符除了上述基本的赋值运算符外,C语言还提供了另外十种复合运算符。它们就是在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。这些运算符把“运算”和“赋值”两个操作结合在一起,作为一个复合运算符来使用,称之为复合赋值运算符。3.5.2赋值运算符和赋值表达式构成复合赋值表达式的一般形式为:

变量双目运算符=表达式它等效于:

变量=变量双目运算符表达式3.5.2赋值运算符和赋值表达式【例】:x*=y+38 等价于x=x*(y+38)i%=j等价于i=i%ja+=695 等价于a=a+6953.5.2赋值运算符和赋值表达式3.5.3关系运算符和关系表达式

1.关系运算符及其优先次序操作符作用运算目数结合方向<小于双目加法自左至右<=小于或等于双目减法自左至右>大于双目运算自左至右>=大于或等于双目运算自左至右==等于双目运算自左至右!=不等于双目运算自左至右3.5.3关系运算符和关系表达式

2.关系表达式用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的,称为关系表达式。关系表达式的一般形式为:表达式关系运算符表达式3.5.4逻辑运算符和逻辑表达式1.逻辑运算符C语言中提供了三种逻辑运算符:&&与运算||或运算!非运算3.5.4逻辑运算符和逻辑表达式逻辑运算的真值表AB!a!bA&&bA||b真真假假真真真假假真假真假真真假假真假假真真假假3.5.5条件运算符和条件表达式

条件运算符为?和:,它是一个三目运算符,即有三个参与运算的量。条件表达式的一般形式为:

表达式1?表达式2:表达式3其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。3.5.6逗号运算符和逗号表达式

在C语言中,逗号“,”的用途主要有两种:一种是作为运算符,一种是作为分隔符。用逗号把两个表达式连接起来,称为逗号表达式(又称顺序求值运算符)。逗号运算符的优先级别最低。用逗号把两个表达式连接起来组成一个表达式,称为逗号表达式。3.5.6逗号运算符和逗号表达式

逗号作为运算符,其一般形式为:

表达式1,表达式2其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。3.5.7位运算

TurboC中按位运算符操作符作用&位逻辑与|位逻辑或^位逻辑异或~位逻辑反<<左移>>右移3.5.8指针运算符、sizeof运算符

1.指针运算符指针运算符包括用于取内容(*)和取地址(&)二种运算符。“*”和“&”运算符都是单目运算符。&运算符用来取出其运算分量的地址。*运算符是&的逆运算,它把运算分量(即指针量)所指向的内存单元中的内容取出来。3.5.8指针运算符、sizeof运算符

【例】:inta,b,*p;p=&a;/*把变量a所在内存单元的地址送给p(指针变量)*/b=*p;/*把p所指单元的内容(即a的值)赋给变量b*/3.6运算符的优先级和结合性

运算符的优先级和结合性优先级运算符运算符类型运算对象的个数结合性1()[]->.基本1个单目运算符自左至右2!~++――&*sizeof(类型名)+(正)-(负)单目2个双目运算符自右至左3*/%算术2个双目运算符自左至右4+-5<<>>移位2个双目运算符自左至右6<<=>=>关系2个双目运算符自左至右7==!=8&位逻辑2个双目运算符自左至右9^10|11&&逻辑2个双目运算符自左至右12||13?:条件3个三目运算符自右至左14=*=/=+=-=%=<<=>>=&=^=|=赋值2个双目运算符自右至左15,逗号n个自左至右3.7表达式中数据类型的转换

1.赋值运算中类型转换整型数与实型数之间的转换实型数据之间的转换整型数与字符型数之间的转换整型数据之间的转换无符号整数与其他整数之间的转换2.各数据类型间的混合运算时类型转换3.7表达式中数据类型的转换

3.强制类型转换强制类型转换符就是“()”,它是单目运算符,它把表达式的类型强制类型转换成圆括号中的“数据类型名”所指定的类型。3.7表达式中数据类型的转换

强制类型转换又称为显示转换,其一般形式为:(类型说明符)(表达式)功能是把表达式的运算结果强制转换成类型说明符所表示的类型。【例】:(int)a /*把a转换为整型*/(float)(x+y)/*把x+y的结果转换为实型*/C语言程序设计主讲人:

第四章结构化程序设计4.1结构化程序设计概述结构化程序设计理论由BohnJacopini于1966年提出,结构化程序设计思想和方法的引入,使程序结构清晰,容易理解、使用和维护。结构化程序有三种基本结构组成:顺序结构,选择结构,循环结构

4.1结构化程序设计概述顺序结构语句A语句B语句C图4.1如图所示:执行顺序结构的程序时,按语句在程序中的顺序逐条执行,没有分支,没有转移。4.1结构化程序设计概述选择结构又称分支结构,根据给定条件是否满足而去执行不同的语句,如图所示,给定条件P,如果满足条件,则执行语句A,否则执行语句B。

语句A语句B条件表达式P成立不成立图4.24.1结构化程序设计概述循环结构又称重复结构,重复执行某段程序,直到某个条件满足为止。循环结构又分当型循环和直到型循环。4.1结构化程序设计概述条件表达式P语句A成立不成立当型循环的特点是:先判断条件是否满足(成立),满足就执行循环体,每执行完一次就判断一次,直到条件不满足停止。如图所示。4.1结构化程序设计概述直到型循环的特点是:先执行一次循环体,然后再判断条件是否满足(成立),条件满足则继续执行循环体,每执行完一次就判断一次,直到条件不满足时停止。如图所示。语句A条件表达式P成立不成立4.2顺序结构程序设计顺序结构是最常见的一种结构,程序中的若干语句按照书写的顺序执行,一般是先输入数据,接着利用赋值语句对这些数据进行处理,最后将结构输出赋值语句如果在表达式的尾部加一个“;”就构成了一条表达式语句,而在赋值表达式的尾部加一个“;”就是赋值语句,例如:a=5是一个赋值表达式在其尾部加上一个就是“;”就构成了赋值语句a=5;4.2.1赋值语句、复合语句复合语句复合语句是用一对花括号把若干语句括起来构成的,例如:复合语句通过一个花括号将多条语句在逻辑上构成一个整体,复合语句在语法上被视为是一条语句

4.2.1赋值语句、复合语句{a=a+3;b=a/2;c=a+b;}putchar函数调用的一般形式为:putchar(c);其中c可以是一个字符变量,也可以是一个字符常量。putchar函数的作用是向终端输出一个字符。在上述调用形式后面加一个“;”就构成了函数调用语句。4.2.2字符输出函数putchar()【例】使用putchar函数输出一个字符运行情况如下:a↙ab4.2.2字符输出函数putchar()#include<stdio.h>main(){charch=’a’;putchar(ch);putchar(‘b’);}4.2.2字符输出函数putchar()注意:调用标准输入输出函数时,需要使用预编译命令include将stdio.h头文件加入到源程序中,形式如下:

#include<stdio.h>其中stdio是standardinput&output的缩写。getchar函数调用的一般形式为getchar()getchar函数的作用是从终端读入一个字符作为函数值,函数没有参数。例如:函数调用语句ch=getchar();含义是:getchar函数读取一个字符数据作为函数值,将其赋给变量ch。4.2.3字符输入函数getchar()【例】输入一个字符并回显该字符运行情况如下:a↙a#include<stdio.h>main(){charch;ch=getchar();putchar(ch);}4.2.3字符输入函数getchar()4.2.3字符输入函数getchar()注意:

getchar()函数每次只读取一个字符,如果键入多个字符,则只读取第一个字符。在例题4.2中,如果键入一串字符“ab123”,则运行情况如下:ab123↙a【例】输入单词“BOY”并回显#include<stdio.h>main(){charch1,ch2,ch3;ch1=getchar();ch2=getchar();ch3=getchar();putchar(ch1);putchar(ch2);putchar(ch3);}4.2.3字符输入函数getchar()4.2.3字符输入函数getchar()运行结果如下:boy↙boy4.2.4格式化输出函数printf()printf函数是C语言提供的标准输入函数,它的作用是:按照规定的格式向终端设备输出数据。printf函数的一般调用形式如下:printf(格式控制串,输出表列)其中,输出表列中列出要输出的数据项(可以是常量、变量、表达式),如果是多个输出项,则输出项之间用“,”隔开。格式控制字符串则是用来说明输出数据的输出格式。在上述调用形式后面加“;”就构成了函数调用语句。例如输出:a=30,A4.2.4格式化输出函数printf()printf("a=%d,%c",2*3*5,’A’);格式控制串输出表列格式控制字符串中可以有两种字符:普通字符和格式说明符。(1)普通字符普通字符又称非格式字符,按原样输出。如上例中的“a=”“,”等(2)格式说明符格式说明符总是以“%”开始,以一个格式符结束,可以根据需要在“%”和格式符之间加入“宽度说明”左对齐符号“-”等。4.2.4格式化输出函数printf()4.2.4格式化输出函数printf()①格式符表格4.1种列出了几种常用格式符及其功能。

4.2.4格式化输出函数printf()②宽度说明符宽度说明符通常由以下三种形式:m:m是一个整数,用来指定输出数据的宽度,当数据的实际宽度大于指定宽度时,按实际宽度输出。如果实际宽度小于指定宽度,则按指定宽度输出,若无特殊说明,数据右对齐,左边补空格。例如:printf(“%2d,%7d,%d”,123,123,123);输出:123,123,123

4.2.4格式化输出函数printf()m.n:m和n都是整数,其中m用来指定整个数据的宽度,n用来表示精度,即指定小数位数。例如printf(“%7.2f,%4.2f,%f”,3.1415,3.1415,3.1415);输出:3.14,3.14,3.1415004.2.4格式化输出函数printf().n:n是一个整数,n用来表示精度,即指定小数位数。例如printf(“%.2f,%.3f”,3.1415,3.1415);输出:3.14,3.1414.2.4格式化输出函数printf()③输出数据左对齐可以在指定宽度的同时指定数据左对齐,在宽度说明符之前加一个“-”即可。例如printf(“%-7d,%-2d”,123,123);输出:123,1234.2.4格式化输出函数printf()注意:格式控制字符串中的格式说明符跟输出项必须按顺序一一对应匹配。如果要输出"%",则在格式控制字符串中用两个连续的"%"printf(“%%”);输出:%4.2.4格式化输出函数printf()输出表列中的表达式按自右往左的顺序计算例如:i=5;printf(“%d,%d”,i,i++);输出:6,54.2.4格式化输入函数scanf()scanf函数是C语言提供的标准输入函数,它的作用是:按照格式控制字符串中规定的格式,从键盘输出输入数据,依次赋给个输入项。scanf函数的一般调用形式如下:scanf(格式控制字符串,输入项表列)在上述调用形式后面加“;”就构成了函数调用语句。4.2.4格式化输入函数scanf()

格式控制字符串是用来说明输入数据的输入格式。输入项表列中列出输入项,如果是多个输入项,则输入项之间用“,”隔开。例如

&是取地址运算符,&a,&b表示分别变量a、b的地址scanf("%d,%c",&a,&b);格式控制字符串输入项表列4.2.4格式化输入函数scanf()4.2.4格式化输入函数scanf()说明:格式控制串中的格式说明符必须与输入项的类型一一匹配。scanf函数输入长整型数据,必须用格式符ld,输入双精度数据必须用lf可以指定数据的总宽度,但不能指定精度,换句话说,可以使用m,但不可以使用m.n或.n(其中m和n均为整数)。4.2.4格式化输入函数scanf()可以使用“*”以使对应的输入数据不赋给任何变量。格式控制串中出现的普通字符需要按原样输入可以用回车,空格,Tab键表示一个数据的结束输入数据时,最后一定要按下回车健,scanf函数才能接受从键盘输入的数据。输入函数的返回值为输入数据的个数。4.2.4格式化输入函数scanf()下面介绍一些输入方法:输入字符型数据例如:假设a,b为字符变量scanf(“%c%c%c”,&a,&b,&c);要求给变量a赋值”A”,给变量b赋值”B”,给变量c赋值”C”,则可以如下键入:ABC↙注意:所有数据输入完毕,最后一定是以回车键结束。4.2.4格式化输入函数scanf()输入数值数据当从键盘输入数值数据时,可以用回车,空格,Tab键表示一个数据的结束。例如:假设a,b为整型变量,c为单精度实型变量scanf(“%d%f”,&a,&b,&c);要求给变量a赋值5,给变量b赋值3.14,则可以如下键入:4.2.4格式化输入函数scanf()5<空格>3.14↙或:5<Tab>3.14↙或:5↙3.14↙4.2.4格式化输入函数scanf()数值型数据与字符型数据混合输入:假设a为整型变量,b为字符变量,scanf(“%d%c”,&a,&b);要求给变量a赋值30,给变量b赋值”B”,则应如下键入:30B↙4.2.4格式化输入函数scanf()格式控制串中的普通字符scanf函数格式控制字符串中的普通字符要按原样输入,例如:scanf(“a=%d,b=%d”,&a,&b); 要求给变量a赋值5,给变量b赋值6,则应如下键入:a=5,b=6↙4.2.4格式化输入函数scanf()指定数据宽度可以指定数据的总宽度,由于指定数据宽度后容易输入出错,所以如果没有特殊要求,一般不建议指定数据宽度跳过输入数据可以使用“*”以使对应的输入数据不赋给任何变量。4.2.4格式化输入函数scanf()例:scanf(“%2d%*2d%2d”,&a,&b);键入:123456则12赋给变量a,34没有赋给任何变量,被直接跳过,56赋给变量b。4.2.6顺序结构程序设计举例【例】由键盘输正方形的边长,计算正方形的周长和面积。数据分析:输入量:边长a为实型数据输出量:面积s及周长l均为实型数据算法分析:说明变量的类型:输入边长a。计算周长l,公式:l=4*a。计算面积s,公式:s=a*a输出面积s和周长4.2.6顺序结构程序设计举例#include<stdio.h>voidmain(){floata,b,l,s;printf("Pleaseinputbroder:\n");scanf("%f",&a);l=4*a;s=a*a;printf("Thesquarelength:l=%f\n",l);printf("Thesquarearea:s=%f\n",s);}4.2.6顺序结构程序设计举例程序运行结果:Pleaseinputbroder:34Thesquarelength:l=14Thesquarearea:s=124.2.6顺序结构程序设计举例【例】编写程序,求玲玲同学期末三门课程考试成绩的平均分。数据分析:输入量:三门考试成绩:score1,score2,score3,均为实型数据中间量:总分sum为实型数据输出量:平均分average为实型数据4.2.6顺序结构程序设计举例算法分析:说明变量的类型输入三门考试成绩。计算总分sum。计算平均分average。平均分average

4.2.6顺序结构程序设计举例#include<stdio.h>main(){floatscore1,score2,score3,sum,average;printf("inputthreescores:\n");scanf("%f%f%f",&score1,&score2,&score3);sum=score1+score2+score3;average=sum/3;printf("averageis%.2f",average);}4.2.6顺序结构程序设计举例运行结果如下:8586.59388.174.2.6顺序结构程序设计举例【例】求一元二次方程ax2+bx+c=o的两个实根。数据分析:输入量:方程系数a、b、c,均为实型数据中间量:判别式d,为实型数据输出量:两个实根x1、x2,均为实型数据算法分析:①输入方程系数a、b、c。②计算判别式d,d=b2-4ac。③计算两个实根x1、x2。④输出两个实根x1、x2。4.2.6顺序结构程序设计举例#include<stdio.h>#include<math.h>main(){floata,b,c;floatd,x1,x2;printf("inputa,b,c:");scanf("%f%f%f",&a,&b,&c);4.2.6顺序结构程序设计举例

d=b*b-4*a*c;x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf("x1=%.2f,x2=%.2f\n",x1,x2);}运行结果:156x1=-2.00,x2=-3.00

4.3选择结构程序设计选择结构是结构化程序设计的三种基本结构之一,实现选择结构的语句主要有两大类:if语句和switch语句if语句又可分为:简单的if语句,if-else语句,if语句的嵌套。4.3.1简单的if结构简单的if结构又称if单分支结构,语法形式如下:if(表达式)语句1;其中语句1又称if子句。

4.3.1简单的if结构if结构的执行过程如图所示:先计算表达式的值,如果表达式成立(表达式的值为“非零”)则执行语句1,否则不执行语句1,直接跳过,执行下一条语句真假条件表达式P语句1图4.44.3.1简单的if结构【例】:从键盘输入一个整数,若该整数大于10直接输出,若小于10则加100后输出。#include<stdio.h>main(){inta;scanf(“%d”,&a);if(a<10)a=a+100;printf(“%d”,a);}4.3.1简单的if结构运行结果如下键入:9则输出:109若键入:19则输出:194.3.2if-else语句结构if-else语句结构又称if-else双分支结构,形式如下if(表达式)语句1;else语句2;其中语句1又称if子句,语句2又称else子句。4.3.2if-else语句结构if-else语句结构的执行过程:先计算表达式的值,如果表达式成立(表达式的值为真)则执行语句1,否则执行语句2.语句1语句2条件表达式P真假图4.64.3.2if-else语句结构【例】从键盘输入两个整数,将较大数输出main(){inta,b;scanf(“%d,%d”,&a,&b);if(a>=b)printf(“%d”,a);elseprintf(“%d”,b);}4.3.2if-else语句结构运行结果下:40,50504.3.3if结构的嵌套如果if子句或else子句是简单的if结构或if-else语句结构,即构成了if结构的嵌套。if(表达式)if(表达式)语句1;else语句2;elseif(表达式)语句3;else语句4;4.3.3if结构的嵌套注意:if结构的嵌套中,else与if的配对原则是:else总是与它上面、距他最近且尚未配对的if配对。4.3.3if结构的嵌套【例】:从键盘输入三个数,并将最大的数输出。main(){inta,b,c;scanf(“%d,%d”,&a,&b,&c);if(a>=b){if(a>=c)printf(“%d”,a);4.3.3if结构的嵌套elseprintf(“%d”,c);}else{if(b>=c)printf(“%d”,b);elseprintf(“%d”,c);}}4.3.3if结构的嵌套运行结果:40,30,50↙504.3.4if-else-if语句结构如果嵌套都发生在else分支上,则可以应用if-else-if语句结构。语法形式如下:if(表达式)语句1;elseif(表达式)语句2;elseif(表达式)语句3;…else语句n;

TFFF表达式1表达式2表达式n语句n语句n语句nTT语句n+1图4.74.3.4if-else-if语句结构4.3.4if-else-if语句结构【例】:编写程序,根据输入学生的成绩,给出相应的等级,分ABCDE五个等级,90及90分以上的等级为A,60分以下算E,其余每十分一个等级。4.3.4if-else-if语句结构main(){intscore;printf(“interscore:”);if(score>=90)printf(“A\n”);elseif(score>=80)printf(“B\n”);elseif(score>=70)printf(“C\n”)elseif(score>=60)printf(“D\n”)elseprintf(“E\n”);}4.3.4if-else-if语句结构运行结果如下:65↙D4.3.5switch结构switch语句具体形式如下:switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;…case常量表达式n:语句n;break;default:语句n+1;}4.3.5switch结构注意:表达式的结果必须是整型或字符型,不能使用结果为实型的表达式常量表达式必须是整型或字符型常量,不能使用实型常量。各个常量表达式不能相同。break语句是可选的,break语句是用来跳出switch结构的,可根据需要自行选择是否有break语句,如果没有break语句,则程序将继续执行,直到遇到break语句或者到switch的结尾停止。4.3.5switch结构default语句是可选的,可根据需要自行选择是否有default语句,如果没有default语句,当找不到与小括号内表达式的值向匹配的常量表达式时,switch语句不做任何操作。多个case可以共用一组执行语句。当多个常量代表同一种情况时,出现在前面的case可以没有任何执行语句。4.3.5switch结构【例】:编写程序,根据输入学生的成绩,给出相应的等级,分ABCDE五个等级,90分以上的等级为A,60分以下算E,其余每十分一个等级。main(){intscore;printf(“interscore:”);scanf(“%d”,&score);switch(score/10){4.3.5switch结构case10:case9:printf(“A\n”);break;case8:printf(“B\n”);break;case7:printf(“C\n”);break;case6:printf(“D\n”);break;default:printf(“E\n”);}}4.3.5switch结构运行结果如下:100↙A4.3.6选择结构程序设计举例【例】输入一个数判断它是奇数还是偶数 main(){inta;printf("inputnumber:");scanf("%d",&a);if(a%2!=0)printf("%disodd",a);elseprintf("%disnotodd",a);}4.3.6选择结构程序设计举例运行结果:inputnumber:77isodd4.3.6选择结构程序设计举例【例】设计一个能进行加、减、乘、除运算的简易计算器程序。main(){floatx,y,j;charop;printf("inputtwonumbers:");scanf("%f,%f\n",&x,&y);printf("inputoperational:");scanf("%c",&op);

4.3.6选择结构程序设计举例

switch(op){case'+':j=x+y;printf("%f+%f=%f\n",x,y,j);break;case'-':j=x-y;printf("%f+%f=%f\n",x,y,j);break;case'*':j=x*y;printf("%f+%f=%f\n",x,y,j);break;case'/':if(y!=0) {j=x/y;printf("%f/%f=%f\n",x,y,j);}elseprintf("error\n");}}4.3.6选择结构程序设计举例运行结果:inputtwonumbers:4,5inputoperational:*4.000000*5.000000=20.0000004.4循环结构程序设计循环结构又称重复结构,利用循环结构实现重复操作简单方便。c语言中实现循环结构的语句主要有三种:while语句、do-while语句以及for语句.用if语句和goto语句结合也可以实现循环结构4.4.1goto语句goto语句形式如下:goto语句标号;goto语句是一种无条件转移语句,它的功能是将程序的执行流程转移到语句标号所在位置上。4.4.1goto语句【例】

main(){intx=1;loop:if(x<5){printf("%4d",x);x++;gotoloop;}4.4.1goto语句运行结果如下:12344.4.2while语句while语句的一般形式为:

while(表达式)循环体语句;4.4.2while语句执行过程如图所示:先计算表达式的值,若表达式的值为真,执行循环体语句,执行循环体语句结束后再判断表达式的值,若表达式的值还为真,则再执行循环体语句…,如此反复,只要表达式为真就执行循环体,直到表达式的值为假时停止。不成立成立表达式语句4.4.2while语句【例】:求1到100的和。#include<stdio.h>main(){inti,sum;i=1;sum=0;While(i<=100){sum=sum+i;i++;}Printf(“sum=%d”,sum);}4.4.2while语句{sum=sum+i;i++;}Printf(“sum=%d”,sum);}运行结果如下:sum=50504.4.2while语句注意:循环开始前应该给循环控制变量赋初值如果循环体包含两条或两条以上的语句,就用一对花括号括起来,构成一个复合语句,使之在语法上等同于一条语句。否则,只有第一条语句会被循环执行,其余的会被当成循环语句的后续语句。循环体中应该包含使循环趋向于结束的语句,换句话说:就是要有改变循环条件的语句。否则可能导致死循环(无限循环)。4.4.3do-while语句do-while语句的一般形式为:

do循环体语句;

while(表达式);4.4.3do-while语句执行过程如图所示:先计算表达式的值,若表达式的值为真,执行循环体语句,执行循环体语句结束后再判断表达式的值,若表达式的值还为真,则再执行循环体语句…,如此反复,只要表达式为真就执行循环体,直到表达式的值为假时停止。表达式语句真假4.4.3do-while语句【例】用do-while语句求1到100的和#include<stdio.h>main(){inti,sum;i=1;sum=0;do4.4.3do-while语句{sum=sum+i;i++;}while(i<=100);Printf(“sum=%d”,sum);}4.4.3do-while语句运行结果如下:sum=50504.4.3do-while语句注意:do-while语句中while(表达式)后面有一“;”,这个“;”不能丢。(while语句中是没有的)循环开始前应该给循环控制变量赋初值.循环体中应该包含使循环趋向于结束的语句4.4.3do-while语句do-while语句与while语句用法基本相同,do-while语句与while语句的区别在于:while语句是先判断后执行,而do-while语句先执行后判断。while语句中的循环体有可能一次都不执行。而do-while语句中循环体至少执行一次4.4.4for循环语句的一般形式如下:for(表达式1;表达式2;表达式3)循环体语句;比较常用的for语句形式如下:for(循环控制变量赋初值;循环控制表达式;循环控制变量自增(减))循环体语句;4.4.4for循环执行过程如图所示:先计算表达式1的值,再计算表达式2(循环控制条件)的值,如果表达式2的值为假,则直接退出循环,而如果表达式2的值为真,则执行循环体语句,然后计算表达式3,然后再计算表达式2的值,并根据表达式2的值判断是否继续循环。表达式2循环体语句表达式3表达式1真假图4.10for循环的流程图4.4.4for循环【例】用for语句求1到100的和#include<stdio.h>main(){inti,sum;sum=0;for(i=1;i<=100;i++)sum=sum+i;printf(“sum=%d”,sum);}4.4.4for循环运行结果如下:sum=50504.4.4for循环关于for语句的几点说明:表达式1表达式可以是简单但的表达式也可以是逗号表达式,表达式2一般是关系表达式或逻辑表达式,当然也可以是其它表达式(值为“零”时为假,值为“非零”时为真)如:在上例中可以写成for(i=1,sum=0;i<=100;i++)sum=sum+i;4.4.4for循环小括号中的表达式1、表达式2、表达式3均可省略不写,但其中的两个“;”不可省略省略表达式1:省略表达式1,需要在for语句之前加一条给循环控制变量赋初值的语句。如例中可以如下写:i=1;for(;i<=100;i++)sum=sum+i;4.4.4for循环省略表达式2:表达式2是循环控制条件,如果直接省略会造成死循环。可以在循环体中加入goto语句或break语句,来避免死循环。如:

for(i=1;;i++){sum=sum+i;if(i>100)break;}4.4.4for循环省略表达式3:表达式3一般是循环控制变量自增(减),如果直接省略也会造成死循环,可以在循环体中加入循环控制变量自增(减)语句,以避免死循环。如:for(i=1;i<=100;){sum=sum+i;i++;}4.4.4for循环三个表达式同时省略:如:i=1;for(;;){sum=sum+i;if(i>100)break;i++;}4.4.5三种循环语句的比较while循环,do-while循环以及for循环这三种循环语句功能基本相同,解决同一个问题往往既可以用do-while循环,也可以用while循环或者for循环。一般来说,如果退出循环的条件跟循环体执行情况有关,则选择while循环或do-while循环,如果循环次数在循环体执行之前就已经确定则选择使用for循环,如果要循环体至少要执行一次,应选择使用do-while循环。4.4.6循环嵌套如果循环体中又包含了一个完整的循环结构,即构成了循环结构的嵌套。其中内嵌的循环称为内层循环,嵌套循环的循环称为外层循环。多重循环执行时,外层循环执行一次,内层循环将执行整个循环。一般多重循环执行的次数等于外层循环的执行次数乘以内层循环的执行次数。注意:循环嵌套必须是一层套一层,不可以交叉

4.4.6循环嵌套【例】分析下列程序,#include<stdio.h>main(){inti,j;for(i=1;i<=5;i++)for(j=1;j<6;j++)printf("%d,",j);}4.4.7break语句语句形式如下:break;break语句主要用于循环结构或switch结构,作用是跳出整个循环或switch结构。4.4.7break语句【例】

:分析下列程序#include<stdio.h>main(){inta;for(a=1;a<6;a++){if(a==3)break;printf(“a=%d\n”,a);}}4.4.7break语句运行结果如下:a=1a=24.4.8continue语句语句形式如下:continue;continue语句主要用于循环结构,作用是跳出本次循环。4.4.8continue语句【例】

:main(){inta;for(a=1;a<6;a++){if(a==3)continue;printf(“a=%d\n”,a);}}4.4.8continue语句运行结果如下:a=1a=2a=4a=54.4.9空语句空语句就是只有一个分号的语句,其形式如下:;空语句没有操作功能,只是表示存在一条语句。4.4.9空语句【例】

main(){inti;for(i=1;i<6;i++){if(i==3)gotoloop;printf("%d",i);}loop:;}4.4.9空语句运行结果如下:124.4.10循环结构程序设计举例【例】

Fibonacci数列:该数列的特点:第一二两个数为1,1.从第三个数开始,该数是其前面两个数之和。即:F1=1F2=1FN=FN-1+FN-2(N>2)4.4.10循环结构程序设计举例#include<stdio.h>main(){intf1,f2,i;f1=1;f2=1;4.4.10循环结构程序设计举例for(i=1;i<=15;i++){printf("%10d%10d",f1,f2);if(i%2==0)printf("\n");/*控制每行输出4项*/f1=f1+f2;f2=f2+f1;}}4.4.10循环结构程序设计举例运行结果如下:112358132134558914423337761098715972584418167654.4.10循环结构程序设计举例【例】输入一个数,判断这个数是不是素数。素数又称质数,指只能被1和它本身整除的数。判断一个数n是不是素数的最简单方法就是:用2、3、4。。。。。。n-1逐个去除n,只要出现一个可以整除的数,则n就不是素数。4.4.10循环结构程序设计举例#include<stdio.h>main(){intn;inti;printf("inputnumber:");scanf("%d",&n);for(i=2;i<n;i++)if(n%i==0)4.4.10循环结构程序设计举例{printf("%disnotprime",n);break;}if(i>=n)printf("%disprime",n);}4.4.10循环结构程序设计举例【例】编写程序输出下列图形*****************************************4.4.10循环结构程序设计举例#include<stdio.h>main(){inti,j,k;for(i=1;i<=5;i++){for(j=1;j<=(30-i);j++)putchar('');for(k=1;k<2*i;k++)putchar('*');putchar('\n');}4.4.10循环结构程序设计举例for(i=6;i<10;i++){for(j=1;j<=(30-10+i);j++)putchar('');for(k=1;k<2*(10-i);k++)putchar('*');putchar('\n');}}小结

本章要求:了解结构化程序设计方法熟悉赋值语句、复合语句、空语句在程序中的特征掌握格式输入输出函数和字符输入输出函数的使用小结掌握顺序结构程序设计方法熟悉掌握if语句和switch语句的一般形式及执行流程,掌握if语句的嵌套。能用if语句和switch语句进行选择结构程序设计熟悉掌握wihle语句、do-while语句for语句的一般形式及执行流程。掌握循环的嵌套,能用wihle语句、do-while语句以及for语句进行循环结构程序设计掌握break语句及continue语句的使用C语言程序设计主讲人:******

第五章数组

数组是一种构造数据类型,构造数据类型是由基本数据类型按一定规则组成的。数组是将具有相同类型的若干变量按有序的形式组织起来。在C语言中使用数组必须先进行定义。5.1一维数组的定义和引用一维数组的定义格式:

存储类别类型标识符数组名[常量表达式];【例】:inta[5];5.1.1一维数组的定义说明:(1)存储类别:说明数组的存储属性,即数组的作用域与生存期,可以是静态型(static),自动型(auto)及外部型(extern),省略时默认是auto型。(2)类型标识符:数组元素的类型。包括基本数据类型或构造数据类型等,如int型、float型等。5.1.

温馨提示

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

评论

0/150

提交评论