01学习指导单元1程序设计基础资料.docx

上传人:b****2 文档编号:17199482 上传时间:2023-07-22 格式:DOCX 页数:43 大小:37.52KB
下载 相关 举报
01学习指导单元1程序设计基础资料.docx_第1页
第1页 / 共43页
01学习指导单元1程序设计基础资料.docx_第2页
第2页 / 共43页
01学习指导单元1程序设计基础资料.docx_第3页
第3页 / 共43页
01学习指导单元1程序设计基础资料.docx_第4页
第4页 / 共43页
01学习指导单元1程序设计基础资料.docx_第5页
第5页 / 共43页
01学习指导单元1程序设计基础资料.docx_第6页
第6页 / 共43页
01学习指导单元1程序设计基础资料.docx_第7页
第7页 / 共43页
01学习指导单元1程序设计基础资料.docx_第8页
第8页 / 共43页
01学习指导单元1程序设计基础资料.docx_第9页
第9页 / 共43页
01学习指导单元1程序设计基础资料.docx_第10页
第10页 / 共43页
01学习指导单元1程序设计基础资料.docx_第11页
第11页 / 共43页
01学习指导单元1程序设计基础资料.docx_第12页
第12页 / 共43页
01学习指导单元1程序设计基础资料.docx_第13页
第13页 / 共43页
01学习指导单元1程序设计基础资料.docx_第14页
第14页 / 共43页
01学习指导单元1程序设计基础资料.docx_第15页
第15页 / 共43页
01学习指导单元1程序设计基础资料.docx_第16页
第16页 / 共43页
01学习指导单元1程序设计基础资料.docx_第17页
第17页 / 共43页
01学习指导单元1程序设计基础资料.docx_第18页
第18页 / 共43页
01学习指导单元1程序设计基础资料.docx_第19页
第19页 / 共43页
01学习指导单元1程序设计基础资料.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

01学习指导单元1程序设计基础资料.docx

《01学习指导单元1程序设计基础资料.docx》由会员分享,可在线阅读,更多相关《01学习指导单元1程序设计基础资料.docx(43页珍藏版)》请在冰点文库上搜索。

01学习指导单元1程序设计基础资料.docx

01学习指导单元1程序设计基础资料

单元1程序设计基础

一、知识要点

通过本单元的学习使学生初步认识C语言程序的结构和函数的结构,掌握C语言程序的开发过程和上机步骤,掌握如何对数据进行描述、如何对数据进行操作,即常量、变量的定义和使用及用C语言的表达式表达实际问题,主要内容包括:

1.C语言程序的开发过程

包括:

编辑、编译、连接、执行四个步骤。

2.C语言程序的结构和执行过程

一个C语言程序是由一个或多个具有独立功能的模块组成,这些模块称为函数。

在这些函数中,必须有一个函数名为main的函数,该函数称为主函数,函数是组成程序的基本单位。

C语言程序总是从主函数开始执行。

3.语句

C语言规定每个语句必须由分号“;”结束,语句是组成函数的基本单位。

语句按在程序中所起的作用可分为:

说明语句和可执行语句两大类,说明语句用来完成对数据的描述,可执行语句用来完成对数据的操作。

C语言的可执行语句包括:

表达式语句;函数调用语句;空语句;复合语句;流程控制语句五种。

4.函数的结构

每一个函数的函数体通常由数据描述和数据操作两部分组成;主函数通常由数据定义、数据输入、函数调用、数据输出四部分组成。

5.用户标识符

程序中用到的各种实体,包括常量名、变量名、数组名、函数名等等,称为用户标识符,用户标识符必须符合标识符的命名规则,即以字母或下划线开头,由字母、数字、下划线组成;用户标识符区分大小写,不能与系统关键字同名。

6.函数调用

如果在一个程序中除主函数外,还有其它函数,要完成其它函数的功能,必须由主函数或另一个函数来调用其它函数,我们把调用其它函数的函数称为主调函数,相应的其它函数称为被调函数。

函数调用时,把实参值传递给对应的形参,传递方式是值传递。

7.常量

在程序运行过程中,其值保持不变的量称为常量。

在C语言中,按数据类型来分类常量有四种:

整型常量、实型常量、字符常量和字符串常量;按表现形态来分类常量主要有两种:

直接常量和符号常量。

在学习常量时要弄清楚各种常量的表示方法。

(1)整型常量有三种:

十进制整型常量(用数码0~9表示的十进制整数)、八进制整型常量(以数字0开头用数码0~7表示的整数,开头的数字0代表所表示的数为八进制数)、十六进制整型常量(以数字0和小写字母x或大写字母X开头,用数码0~9或小写字母a~f或大写字母A~F表示的十六进制整数,0x代表所表示的数为十六进制数);在每一种常量后加小写字母l或大写字母L又得到十进制长整型常量、八进制长整型常量、十六进制长整型常量。

(2)实型常量有十进制小数形式(由数码0~9、正负号和小数点(必须有小数点)组成的十进制小数表示的实数)或指数形式(由尾数、字母e或E、阶码三部分组成,其中尾数为十进制小数或整数,阶码为1位或2位的十进制(有符号)整数)两种。

(3)字符型常量是用单引号括起来的单一字符(包括转义字符)。

转义字符有以下四种形式:

①以反斜杠“\”开头后跟一个规定的字母(n、t、b、r、f等),代表一个控制字符;

②\\代表反斜杠字符“\”,\'代表单撇号字符“'”;

③以反斜杠开头后跟1~3位八进制数代表ASCII码值为该八进制数的字符(此方法可表示ASCII字符集中的任一字符);

④以反斜杠和小写字母x开头,即以\x开头,后跟1~2位十六进制数代表ASCII码值为该十六进制数的字符(也可表示ASCII字符集中的任一字符)。

(4)字符串常量是用双撇号括起来的字符序列,简称字符串。

字符串中含字符的个数称为该字符串的长度,字符串在存储时自动加上字符串结束标志“\0”。

(5)符号常量是在程序的开头,使用编译预处理命令“#define符号常量常量”定义的,符号常量在程序设计中经常使用。

8.变量

变量是在程序运行过程中,其值可以改变的量。

C语言规定:

程序中所使用每一个变量在使用之前都要进行类型定义,即“先定义,后使用”。

C语言中的变量有两种属性:

操作属性和存储属性。

在学习变量时要弄清楚各种变量的存储空间的分配和变化情况、变量的值、存储长度生存期和作用域。

(1)变量操作属性的定义

数据类型标识符变量名表;

操作属性由数据类型来决定,它规定了变量的存储空间的大小(即存储长度)、取值范围和所允许的操作。

使用类型标识符int定义的变量为基本整型变量,在VC++系统中基本整型变量的存储长度为4个字节,取值范围为-2147483648~2147483647(-231~231-1)。

使用类型标识符long定义的变量为长整型变量,在VC++系统中长整型变量的存储长度为4个字节,取值范围为-2147483648~2147483647(-231~231-1)。

使用类型标识符short定义的变量为短整型变量,在VC++系统中短整型变量的存储长度为2个字节,取值范围为-32768~32767(-215~215-1)。

使用类型标识符float定义的变量为单精度实型变量,在VC++系统中单精度实型变量的存储长度为4个字节,取值范围为±(3.4×10-38~3.4×1038)。

使用类型标识符double定义的变量为双精度实型变量,在VC++系统中双精度实型变量的存储长度为8个字节,取值范围为±(1.7×10-308~1.7×10308)。

使用类型标识符char定义的变量为字符型变量,在VC++系统中字符型变量的存储长度为1个字节,取值范围为-128~127。

(2)变量的赋值

变量=表达式;

(3)变量的初始化

在定义变量时,给变量赋值称为变量的初始化。

(4)变量存储属性的定义

存储类别标识符数据类型标识符变量名表;

变量的存储属性决定了所定义变量的存储机构、生存期和作用域,变量的生存期分为动态存储和永久存储;按变量作用域,可以把变量分为全局变量和局部变量。

使用存储类别标识符auto(或缺省存储类别标识符)定义的变量是自动变量,自动变量的存储空间是在程序运行时分配的,分配和释放由系统自动完成。

自动变量的生存期为动态存储,作用域是只在定义它的那个局部范围内起作用,是局部变量。

使用存储类别标识符static定义的变量是静态变量,静态变量的存储空间是在编译时分配的,分配和释放由系统自动完成。

静态变量的生存期为永久存储,作用域是只在定义它的那个局部范围内起作用,属于局部变量。

在函数体之外的变量称为外部变量,外部变量是在编译时为其分配存储空间的,在静态存储区中存储,生存周期是永久存储,作用域是从定义点到本文件结束。

9.运算符和表达式

C语言的运算符共有45个,利用这些运算符可以表达各种复杂的实际问题,每一个运算符都有其运算规则、优先级别和结合方向,在学习过程中必须掌握好。

C语言的表达式主要有算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式和逗号表达式。

在学习表达式时要注意掌握好每种表达式的运算过程、表达式的值和能用表达式表达实际问题。

(1)双目算术运算

运算符包括:

+(加),-(减),*(乘),/(除),%(求余或模)。

对于除法运算“/”,有两方面的含义:

当运算符两侧的运算量都是整型数据时,结果也是整型数据,此时称为整除;

当运算符两侧的运算量至少有一个是实型数据时,结果是double类型数据,此时称为除法。

对于模运算%,要求参加运算的两个运算量必须都是整型数据,运算所得的结果也是整型数据。

对一个正整数求模运算,不论除数是正数还是负数,所得的结果都是非负数;对一个负整数求模运算,不论除数是正数还是负数,所得的结果都是非正数,对0求模运算的结果还是0,即结果的符号与被除数的符号相同。

(2)赋值类运算和赋值表达式

赋值类运算符包括:

=(赋值),+=(自反加赋值),-=(自反减赋值),*=(自反乘赋值),/=(自反除赋值),%=(自反模赋值),++(自加),--(自减)。

a+=b等价于a=a+b;a-=b等价于a=a-b;a*=b等价于a=a*b;a/=b等价于a=a/b;a%=b等价于a=a%b。

对于++和--有前缀和后缀形式。

++a等价于a=a+1;--a等价于a=a-1。

对于++和--可以用一句话概括为:

后缀形式先引用后“增值”,前缀形式先“增值”后引用。

这里说的引用是指表达式引用,而“增值”是指变量“增值”。

赋值表达式的值为赋值后赋值号左边变量的值。

(3)逗号运算和逗号表达式

逗号运算符:

,(逗号)

逗号表达式的一般形式是:

表达式1,表达式2

逗号表达式运算过程及表达式的值:

先求解表达式1,再计算表达式2,表达式2的值为整个逗号表达式的值。

利用逗号运算可以一次计算多个表达式的值。

(4)强制类型转换

运算符:

(类型标识符)

强制类型转换一般形式:

(类型标识符)(表达式)

作用:

把表达式值的类型转化为类型标识符说明的类型。

利用强制类型转换运算可以某一种类型转换为所需要的类型。

(5)长度运算

长度运算的运算符是:

sizeof

长度运算的一般形式:

sizeof(类型标识符或表达式)

利用长度运算可以求出指定数据(对表达式并不进行计算)或指定数据类型在内存中的存储长度。

二、知识拓展

1.标识符命名规则的例外

在VC++6.0开发环境中,除字母、数字、下划线是用户标识符的组成要素外,符号“$”可出现在用户标识符的任何位置,甚至单独一个“$”也可作为用户标识符,而其它符号就只能供系统使用了。

2.C程序的“紧缩对齐”书写格式

C语言程序的书写自由,灵活性强,一个语句可以占任意多行,一行可以写多个语句。

为了避免程序书写时混乱不清,便于阅读和理解,我们提倡采用“紧缩对齐”方式书写。

“紧缩对齐”格式的书写要点是:

(1)每个语句(包括花括号)占用一行;

(2)不同结构层次的语句,从不同的起始位置开始书写,同一结构层次的语句,都缩进相同的字数;

(3)表示结构层次的花括号,应写在该结构化语句的第一或第二个字母的下方,这对花括号在竖直方向上应对齐;

(4)语句中的不同单词之间要加空格,程序中不同部分的行之间可以加空行。

在VC++6.0开发环境中,如果已编辑的程序不是“紧缩对齐”格式,但只要符合“紧缩对齐”格式的书写要点的第⑴条,便可使用下面两个简单操作使其符合“紧缩对齐”格式的第⑵、⑶条:

①按Ctrl+A,即全选所编辑的代码;

②按Alt+F8,便可将所编辑的代码成为“紧缩对齐”格式。

3.const常量

程序中用到的数据往往是共享的,可被多个程序或用户使用,为避免误操作,导致数据被无意中修改,可将程序中不需要修改的常量定义为const常量。

const常量定义的一般形式:

const类型标识符常量名=数值;

其中const是系统提供的定义const常量用的关键字,const也可以写在类型标识符的后面。

该定义使程序中的“常量名”代表给定的数值,“常量名”便是一个const常量。

const常量在定义时必须进行初始化,且const常量一旦定义其值不可以再修改。

【示例】

constinta;//未初始化

是错误的。

constinta=5;

a=3;

也是错误的。

而constintn=10;

inta[n]={1,2,3};//关于数组请参考教程单元五

是正确的,但在TC中是错误的。

4.左值和右值

在C语言中,常量、变量和表达式都有左值和右值的概念。

一个量的左值是这个量的存储空间的地址,且该地址空间的内容是可以改变的;而右值是一个量的存储空间的内容,也就是这个量的值。

所以,常量都有右值,而没有左值(虽然常量也有地址,但常量的值不能改变);变量既有右值又有左值;每个表达式都有右值,但不一定有左值(有的表达式有左值,有的表达式没有左值)。

如++i,因为表达式++i执行后,表达式++i的值与变量i的值相同,所以,可认为变量i的地址就是表达式++i的地址,因此,表达式++i既有左值又有右值;

而i++,因为表达式i++执行后,表达式i++的值与变量i的值不同,所以,不能认为变量i的地址就是表达式i++的地址,因此,表达式i++只有右值没有左值。

(1)关于赋值表达式

在教程中,介绍赋值表达式时,曾经说过“赋值号的左边通常只能是变量,而不能是表达式”,这里说“通常”就是因为有例外,准确的说应该是“赋值号的左边必须是有左值的表达式”。

所以,赋值表达式的作用应该说成“把赋值号右端表达式的值写入有左值的表达式的存储空间。

【示例】程序段

intb=2,a=5;

(a*=b)+=8;

是否有语法错误?

如果没有,执行后a,b的值分别是多少?

解析:

因为表达式a*=b的值与变量a的值相同,所以表达式a*=b有左值,无语法错误。

执行时,先计算表达式(a*=b),把计算结果赋给a,再计算a+=8,所以,执行后a,b的值分别是18和2。

(2)关于条件表达式

对于条件表达式“表达式1?

表达式2:

表达式3”,如果表达式2和表达式3都有左值,那么,该条件表达式有左值,否则,该条件表达式没有左值。

【示例】条件表达式a>b?

--a:

--b,由于--a和--b都有左值,所以该条件表达式有左值;而对于条件表达式a>b?

--a:

b--,由于b--无左值,所以该条件表达式无左值。

(3)关于逗号表达式

对于逗号表达式“表达式1,表达式2”,如果表达式2有左值,那么,该逗号表达式有左值,否则,该逗号表达式没有左值。

【示例】inta=2;a+1,a+2;因为表达式a+2无左值,所以,逗号表达式a+1,a+2无左值,而逗号表达式a+1,a有左值。

注:

只有有左值的量才能放在赋值号的左边。

5.自加、自减的混合运算

在VC++系统中,表达式求值运算的规则是:

对表达式从左到右进行扫描,当扫描到两个运输量便开始计算(如果其中一个运算量是表达式,按此规则计算该表达式,所得结果与另一个运算量进行计算),再继续向后扫描,将扫描到的一个运算量与前面的计算结果进行计算,如此进行,直到表达式扫描完毕,表达式计算完毕,最后再对表达式中所有的自加、自减的后缀进行“增值”操作。

【示例1】若有如下说明和语句

inti=3,j;

j=(i++)+(++i)+(++i);

执行后i,j的值分别是多少?

解析:

先计算(i++)+(++i),由于(i++)是后缀形式,增值运算需要到最后才完成,而(++i)是前缀形式,所以i先增值,i由3变为4,(i++)与(++i)都用值4进行计算,得结果为8,再与(++i)进行计算,由于(++i)是前缀形式,i先增值,由4变为5,与8求和得13,再将13赋给j,最后对后缀形式进行“增值”,i的值由5变成6。

因此,程序段执行后i,j的值分别是6和13。

【示例2】若有如下说明和语句

inti=3,j;

j=++i+((i++)+i+(++i))+i++;

执行后i,j的值分别是多少?

解析:

先计算++i+((i++)+i+(++i)),由于++i是前缀形式,所以i先增值,i由3变为4,而((i++)+i+(++i))又是表达式,按以上规则计算所得结果为13,且此时i的值已经是5,再与前面的++i计算,结果为18,再与i++进行计算,结果为23,再将23赋给j,最后对后缀形式连续进行两次“增值”,i的值由5变成7。

因此,程序段执行后i,j的值分别是7和23。

6.关于对i+++j的理解

VC++编译系统总是从左到右尽量多的将若干个字符组成一个运算符,所以,k=i+++j应理解为k=(i++)+j,而不是k=i+(++j)。

7.关于长度运算sizeof

长度运算的一般形式:

sizeof(类型标识符或表达式)

(1)当求某一表达式的存储长度时,sizeof后的一对圆括号可以省略不写,即可写成sizeof表达式,此时,因为只要知道表达式的类型便可求出存储长度,所以实际并不对表达式进行计算。

【示例】程序段

inta=1;

sizeof++a;

执行后变量a的值仍为1(而不是2)。

(2)当求某种类型的存储长度时,sizeof后的一对圆括号必须写,即应写成sizeof(类型标识符),如sizeof(int),而不能写成sizeofint。

8.系统隐式转换

C语言在对表达式进行运算时,为使表达式中各运算量具有相同的类型,先把不同类型的数据转换为同一个类型,然后再进行计算,这些转换是由系统自动进行的,具体转换原则是:

(1)表达式中char,short型数据都自动转换为int型;unsignedchar和unsignedshort型数据都自动转换为unsignedint型。

这样,表达式值的类型有六种,由低到高分别是:

int、unsignedint、longint、unsignedlong、float、double。

(2)当一个运算符两端的运算量的类型不一致时,按“向高看齐”的原则对“较低”的类型进行提升。

【示例】有如下说明语句

inti;

floata;

longk;

则表达式10+'D'+i*a-1/k的类型为float型,而表达式10+'D'+i*a-1.0/k的类型为double型。

三、常见问题

1.把scanf、printf等误认为是系统关键字

解析:

对于初学者往往将scanf、printf等系统库函数的名字误认为是系统关键字,在VC++环境中编辑代码时,系统关键字将呈蓝色(系统默认为蓝色,可在tools(工具)->options(选项)->Format(格式)选项卡中的colors(颜色)中选择keyword项,确定前景色来修改)。

既然scanf、printf等系统库函数的名字不是系统关键字,就可以作为用户定义标识符使用,但建议不要作为户定义标识符使用。

2.书写标识符时,忽略了大小写字母的区别

解析:

C语言的标识符区分大小写字母,而在编辑程序时初学者往往容易把小写字母输入成大写字母或把大写字母输入成小写字母,而且有些字母的大小写之间又很难区分。

这就要求在输入时,注意大小写字母的切换,养成一个好的习惯。

【示例】程序段

intp=3;

printf("%d",P);

编译程序把p和P认为是两个不同的标识符,而显示出错信息'P':

undeclaredidentifier('P':

未说明的标识符)。

3.在编辑程序时,遗漏空格或分号

解析:

C语言中关键字与关键字之间,关键字与用户标识符之间等都要有空格,如果不加空格就将出现语法错误。

【示例】inta,b;//int与a之间无空格,有语法错误

C语言中分号是C语句中不可缺少的组成部分,语句结尾必须有分号,如果语句结尾没有分号,就将出现语法错误。

【示例】

a=1

b=2

编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。

改错时,有时在被指出有错的一行中未发现错误,就需要看上一行是否漏掉了分号。

4.将西文符号输入成中文符号

解析:

在编辑程序时,经常出现将西文符号输入成中文符号的错误。

产生错误的原因是,当需要输入中文时,将西文状态切换为中文状态,中文输入结束后,忘记切换回西文状态,结果输入了中文符号。

inta;

printf("请输入一个整数”);//右引号、右括号、分号都是中文符号

scanf("%d",&a);

printf("%d是整数%d的平方。

”,a*a,a);//右引号、逗号都是中文符号

5.将解决某一问题的程序代码都写在主函数中

解析:

将解决某一问题的程序代码都写在主函数中来实现是可以的,但建议不要这样做,养成良好的编程习惯。

因为,这样不能体现C语言的模块化程序设计的思想,特别当一个问题比较大时,所有代码都放在主函数中将给人们阅读、理解和调试程序带来困难,造成不必要的麻烦,程序的结构也不够清晰。

模块化程序设计的思想是将一个大的应用问题按功能分解成若干个小的模块,每一个小的模块具有结构清晰、功能单一、接口简单(一个入口一个出口)的特点,在C语言中,每一个小的模块就是一个函数。

6.函数定义、声明、调用相混淆

解析:

函数定义应包含函数头和用一对花括号括起来的函数体,且在函数头的结尾不能有分号,函数定义用来给出如何实现该函数所要完成功能的具体算法;

函数声明与函数定义中的函数头相同,只是需在结尾加一个分号,所以函数声明是一个语句,用来通知编译系统所定义函数的一些必要信息,包括函数名、返回值类型、参数个数及每个参数的类型,一般应放在主调函数的说明语句部分;

函数调用在书写时应包含被调函数名、一对圆括号、圆括号里面写对应实参,函数调用应写在主调函数中,通过函数调用具体完成被调函数的功能。

【示例】在本单元的【例1-1】求两个整数和的程序中,

1.#include

2.intSum(intx,inty);//函数声明

3.intmain()

4.{

5.inta,b,s;

6.printf("请输入两个整数:

");

7.scanf("%d%d",&a,&b);

8.s=Sum(a,b);//Sum(a,b)是函数调用

9.printf("两个整数和是:

%d\n",s);

10.return0;

11.}

12.intSum(intx,inty)//以下是函数定义

13.{

14.intz;

15.z=x+y;

16.returnz;

17.}

第12至17行是函数Sum的定义;第2行是函数声明;第8行中的Sum(a,b)是函数调用,求变量a,b中存放的两个整数的和。

7.字符的表示与八进制整型常量的表示方法混淆

解析:

八进制整型常量必须以数字0开头,由8进制数码组成;而字符的三位八进制数表示是用单撇号括起来的以反斜杠“\”开头,后跟1到3位8进制数码,这1到3位8进制数码不必以数字0开头,这一点初学者往往容易混淆。

【示例】程序段

charch1,ch2,ch3;

ch1='\65';//不必以数字0开头,’\65’代表的是字符’5’

ch2=065;//065为八进制整型常量,ch2的值是字符’5’

ch3=65;//65为十进制整型常量,ch3的值是字符’A’

8.斜杠“/”与反斜杠“\”混淆

解析:

初学者容易把斜杠“/”与反斜杠“\”混淆,斜杠“/”在C语言中是除法运算符,而反斜杠“\”在C语言中用于转义字符的开头。

【示例】程序段

inta=5,b=2,c;

c=a\b;//将除法运算符/写成了\,编译出错

printf("%d/n",c);//将转义字符\n写成了/n,编译无错也无警告

9.变量未定义就开始使用

解析:

初学者在编写程序时,经常出现变量未定义就开始使用的现象,导致编译不能通过。

切记,程序中用到的每一个变量必须“先定义,后使用”。

【示例】程序段

inta=2,b=3;

c=a+b;//变量c未定义

printf("%d",c);

10.参加求余运算%的运算量的数据类型错误

解析:

求余运算%要求参加运算的两个运输量必须都是整型数据,其他类型的数据要想进行求余运算需要进行强制类型转换。

【示例】程序段

inta,b=5;

floatc=3;

a=b%c;//变量c的类型错误

11.将字符串常量赋给字符变量

解析:

字符常量是用一对单撇号括起来的单一字符,在内存中占一个字节,可以赋给字符变量;字符串常量是用一对双撇号括起来的字符序列,每个字符在内存中占有一个字节,包括字符串结束标志,一个字符串在内存中需要占有多个(大于等于2)字节,而字符变量只有一个字节的存储空间,所以,不能将一个字符串赋给字符变量。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2