




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-数据类型:1.简单的数据类型: 整型 实型 字符型2.构造型: 数组 结构体(联合体) 链表 int a,b,c;- 数组: 同种类型的数据在内存中占有一片连续的存储空间.-根据数组所带有下标的个数:(1)一维数组 (2)二维数组(3)多维数组第一部分: 一维数组的定义、引用、赋值1.一维数组定义的一般形式: 类型名 数组名常量表达式;例如: int a8;int 类型名 说明该数组中的每个元素都是整型. a 是数组名,是用户自定义,是一个地址常量. 8 说明该数组中含有8个元素,该八个元素分别为: a0a7 ,在该数组中,数组的下标总是从0开始,就把下标0叫做该数组下标的下界.把下标7叫做该数组下标的上界 .当定义数组的时候,编译系统将根据定义的类型在内存中为该数组分配一定大小的存储空间.定义多个数组:double a8,b100,w200; 和其他变量一起定义:float a,b10,*p;2. 一维数组的引用的一般形式: 数组名常量表达式例如: int a8,i; (i=0&i 数组中的每个元素的实质:代表了一个存储单元,和变量的形式一样. - int a8,i,k; a8-对数组元素的引用不能超出规定的范围,如果超出范围,编译系统不会给出出错信息.不一定得到预期结果.3.在定义的同时为数组的赋值:*完全赋值:例如: int a8=1,2,3,4,5,6,7,8;-数据间用逗号进行分隔.-最后一个元素的后面是没有逗号的。-赋值的个数不能超出规定的个数.-赋值的元素的类型也要和说明的类型要一致.-当赋值后,编译系统将自动的把: a0=1 . a7=8 * 不完全赋值:-针对数值型数据:不足部分用0或0.0int a8=2,3,8;int a8=2,3,8,0,0,0,0,0;double b5=1.2,3.4;double b5=1.2,3.4,0.0,0.0,0.0;针对字符型:不足补充0例如: char ch5=A,B,C; char ch5=A,B,C,0,0;* 通过完全赋值来确定一维的大小:int a =1,2,3,4,5,6;int a6=1,2,3,4,5,6;int a =0,0,0,0,0,0,0,0;int a8=0; 说明在一维数组中一维的大小可以省略. 在执行过程中不能给数组进行整体赋值,因为数组名是一个地址常量不能代表整体.4.如何浏览数组中的元素: -可以通过 一个for 来实现:例如: int a8,i;for(i=0;i8;i+) ai 例如:编写一个函数,给一个含有30个元素的数组赋1,3,5,7.先按每行10个顺序输出,再按每行10个逆序输出.#include #define M 30 void main() int aM,i; for(i=0;iM;i+) ai=2*i+1; for(i=0;i=0;i-) printf(%4d,ai); if(i%10=0) printf(n); 第二部分:一维数组和指针 变量的地址:把该变量在内存中所占空间的第一个字节的地址就叫做该变量的地址. 数组的地址:把该数组中第一个元素的地址就叫做该数组的首地址. 假设 : int a8,*p; &a0-/代表了数组的首地址. - 当定义一个数组的时候,这时数组名就确定了。该数组名就是一个地址常量,代表了该数组第一个元素的地址值. 数组名a 和 &a0 数组名是一个地址常量就不能给其进行赋值运算.例如: a+ ;-数组名是常量,是不可以改变,如何通过数组名来访问某个元素的地址:* 可以通过加减一个整数的形式来访问某个 元素的 地址: 例如: int a8,i; (i=0&i 看看对一维数组的几中引用形式:例如: int a8,*p=a,i; (i=0&i 如果: p=a;3. 带下标的指针: pi4.用指针的形式: *(p+i)第三部分:一维数组和函数1. 数组中的元素作为实参进行传递.-由于数组中的每个元素的实质都相当于一个变量,因此数组元素的传递实质上就是变量的值传递. 例如:#include int fun(int x,int y,int z)int s; s=x+y+z; return s;void main()int a3=1,2,3,s; s=fun(a0,a1,a2); printf(s=%dn,s);2. 数组名作为实参,对应的形参为: (1)*a (2)a (3)aM数组名的传递实质上是元素的地址传递.例如1:#include #define M 8void fun(int *p)/fun(int p)/fun(int pM)int i; for(i=0;iM;i+) *(p+i)=2*i+1;void main() int aM,i; fun(a); for(i=0;iM;i+) printf(%4d,ai); printf(n);例如2:#include #define M 8void fun(char *a,int n) int i; for(i=0;in;i+) ai=*;void main() char sM=A,B,C,D,E,F,G,H; int i; for(i=0;iM;i+) printf(%3c,si); printf(n); fun(s,4); for(i=0;iM;i+) printf(%3c,si); printf(n); 3.数组元素的地址作为实参进行传递#include #define M 8void fun(char *a,int n) int i; for(i=0;in;i+) ai=*;void main() char sM=A,B,C,D,E,F,G,H; int i; for(i=0;iM;i+) printf(%3c,si); printf(n); fun(&s2,4); for(i=0;iM;i+) printf(%3c,si); printf(n); 第四部分:一维数组的简单应用 编写函数:1.定义一个含有15个元素的数组,通过随机函数给其赋随机值0100,然后输出 2.然后在按每3个为一组求他们的和值,再在主函数中输出他们的和值.例如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15b0 b1 b2 b3 b4#include #include #define M 15#define N 3int fun(int *a,int *b)int i,s=0,k=0; for(i=0;iM;i+) s+=ai; if(i+1)%N=0) bk+=s;s=0; return k;void main()int aM,bM,i,n; /以下语句用来给数组赋值: for(i=0;iM;i+) ai=rand()%100; for(i=0;iM;i+) printf(%4d,ai); printf(nn); n=fun(a,b); for(i=0;in;i+) printf(%4d,bi); printf(n);例如2:编写函数通过随机函数给一个含有8个元素的数组赋值,然后输出该数组中的值,最后在把该数组中元素的值按升序进行排列再输出.(排序问题(冒泡法)5 7 4 8 9 1 2 00 7 5 8 9 4 2 1 第一位置为基点:0 1 7 8 9 5 4 2 第二位置为基点:0 1 2 8 9 7 5 4 第三位置为基点:0 1 2 4 9 8 7 5 第四位置为基点:0 1 2 4 5 9 8 7 第五位置为基点: 0 1 2 4 5 7 9 8 第六位置为基点: 0 1 2 4 5 7 8 9 第七位置为基点: #include #include #define M 8void fun(int *a) int i,t; for(i=0;iM-1;i+) for(j=i+1;jaj)t=ai;ai=aj;aj=t;void main()int aM,i; for(i=0;iM;i+) ai=rand()%50; for(i=0;iM;i+) printf(%4d,ai); printf(n); fun(a); for(i=0;iM;i+) printf(%4d,ai); printf(n);例如3:编写程序:把一个数组中的数据进行倒置,然后输出. 1 2 3 4 5 6 6 5 4 3 2 1#include #define M 8void fun(int *a) int i,t; for(i=0;iM/2;i+) t=ai; ai=aM-1-i; aM-1-i=t; void main()int aM,i; for(i=0;iM;i+) ai=3*i+2; for(i=0;iM;i+) printf(%4d,ai); printf(n); fun(a); for(i=0;i 一维的大小:表示有几行。(行下标) 二维的大小:表示有几列 (列下标)-元素的个数=行列下标成积-当定义数组的时候,编译系统将根据定义的类型在内存中为其开辟一定大小的存储空间。-定义的形式如图:对应的数组元素分别为: a00 a01.a13-定义多个二维数组float a24,b36;-和其他类型的变量一起定义:double a,b10,w36,*p;2.二维数组的引用的一般形式: 数组名常量表达式1常量表达式2;例如:int a36,i,j;(i=0&i=0&j赋值的个数不能多于规定的个数。-所赋值的个数类型都要和规定的一一对应。-计算机的编译系统将自动把:a00=1.a03=4.a13=8* 线性赋值:例如: int a24=1,2,3,4,5,6,7,8;- 不完全赋值:-缺省列:例如1:int a24=1,2,3 , 5,8 ;- int a24=1,2,3,5,8;-缺省行例如1: int a34=1,2,3,4, 5,6,7,8 ;-缺省行列:例如1: int a34=1,2,3 , 5,8 ;*通过完全赋值来确定一维大小:例如1int a 4=5,4,4,5,4,5,2,4,5,1,5,4;- 一维的大小=元素的个数/列数* 如果整除就把商作为一维的大小* 如果不能整除就商+1作为一维的大小-说明在二维数组中,一维的大小可以省略,但二维的大小是不能省略的。4.二维数组的浏览:是通过两个for语句来实现;例如:for(i=0;iM;i+) for(j=0;jN;j+) aij例如:编写函数,给一个含有2*3的二维数组赋值 1,2,3,10,20,30然后按行进行输出。#include void main() int i,j,a23; for(i=0;i2;i+) for(j=0;j3;j+) scanf(%d,&aij);/按行进行输出 for(i=0;i2;i+) for(j=0;j &a00 3.看看二维数组对元素的几种引用形式: int a36,i,j;(i=0&i=0&j 二维数组以行为单位可以把二维数组看出几个一维数组,那么 ai-就可以看成是某行的首地址。 由于 bj- *(b+j)2) aij - *(ai+j) - 在一维数组中 ai-*(a+i) 因此 aij- (*(a+i)j3) aij - (*(a+i)j- 由2和3组合:4) *(ai+j) - *(*(a+i)+j)5) *(&a00 +列数*行下标+列下标)-4.指针数组:-指针数组的定义形式:类型名 *指针数组名常量表达式;例如: int *p3;-如何通过指针数组来引用二维数组中的元素。例如:int a32,*p3,i; for(i=0;i使指针数组中的每个元素都指向其对应二维数组的对应行。-指针数组中的每个元素每移动一次相当于移动一个存储单元。-二维数组的行下标和指针数组中的下标的值要一致。-通过指针数组来引用二维数组元素的几种形式:aij -pij*(ai+j) -*(pi+j) pi-*(p+i)pij -(*(p+i)j*(pi+j) -*(*(p+i)+j)5.行指针 - 行指针的一般定义形式:类型名 (*指针变量)常量表达式;例如1: int (*q)2;-如让行指针指向一个二维数组:例如:int a32,(*q)2; q=a;/-要想保证行指针指向一个二维数组必须使行指针的下标表达式和二维数组中列下标的表达式一致。-如图所示:-行指针每移动一次就移动一行。 q+-看如何通过行指针来引用二维数组中的元素: aij- qij *(ai+j)- *(qi+j) (*(a+i)j -(*(q+i)j *(*(a+i)+j) - *(*(q+i)+j)-看看课本:9.129.14第三部分:二维数组和函数1.二维数组名作实参1)当实参为二维数组名时,形参必为指针,并且这个指针应指向数组,指向二维数组的指针变量为行指针。形参对应格式,即行指针应为:(*a)N2)行指针也可以表示成 aMN3)行的表达式可以缺省 a N2.指针数组做实参1.由于指针数组中每个元素均为指针,因此对应形参应当是指向指针的指针 *a2.与指针数组表示方式相同*aM3.缺省 *a 例如1:1.编写程序通过调用随机函数给5*6的二维数组元素赋040的整数,求出二维数组每行元素的平均值。#include #include #define M 5#define N 6void fun(int (*a)N,int *b)int i,j,av; for(i=0;iM;i+) av=0; for(j=0;jN;j+) av+=aij; bi=av/N; void main()int aMN,i,j,bM; /调用随机函数给M*N的数组赋值: for(i=0;iM;i+) for(j=0;jN;j+) aij=rand()%40;/以行为单位输出二维数组中元素的值: for(i=0;iM;i+) for(j=0;jN;j+) printf(%-4d,aij); printf(n); fun(a,b); for(i=0;i在C语言中,字符串没有变量只有常量。-在C语言中,没有定义一种字符串类型。字符串的存取是依托于一维的字符型数组来实现的。 例如:char s6=ABCDE;-用一维的字符型数组和字符串的区分:例如:char s5=A,B,C,D,E char s5=A,B,C,D* 如果要把一个字符型数组看成字符串,要求最后一个元素必须为0,而字符型数组对最后一个元素是没有要求的。1.在定义的同时给一维的字符型数组赋字符串例如:char s10=A,B,C,D;char s10=ABCD; char s10=ABCD;* 在给字符型数组赋字符串的时候,一定要有足够大的空间。通过完全赋值来确定一维的大小:char s =ABCD;*如果要在执行部分给字符型数组赋字符串:不能整体赋值,只能逐个赋值。例如: char s100; s=ABCD;/是错误的。 s0=A;s1=B,s2=C,s3=D;最后在人为的给其后天就一个结束标志: s4=0;2.让一个字符型指针指向某个字符串:* 在定义的同时让指针指向字符串。例如: char *p=ABCD;* 在执行部分让指针指向某个字符串:例如: char str100,*p=str; p=ABCD;3.把字符串赋值给数组和指针的区分: -如果把字符串赋值给字符型数组,那么该数组就会根据字符串的大小在内存中为其开辟对应大小的存储空间。而把字符串赋值给字符型指针,只表示该指针指向某个字符串并没有在内存中为其开辟空间。第二部分:字符串的输入和输出1.调用标准库中printf和scanf函数-printf函数:1输出字符串的必要条件:(1)可是数组名(2)可以是指向字符串的指针(3)还可以是字符串的本身。2在C中用格式字符%s来实现字符串的整体输出。3输出直到遇到第一个0结束输出。例如:#include void main()char str100=ABCD0abcd,*p=&str2; printf(str=%sn,str); printf(str=%sn,p); printf(str=%sn,ABCD0abcd );- scanf 函数1输入的必要条件:(1)可以是数组名(2)可以是指向字符串的指针。2C中用格式字符%s来实现字符串整体输入。例如:#include void main()char str100=*,*p=&str2; scanf(%s,p);/scanf(%s,str); printf(str=%sn,str); 3如何进行输入: *当格式字符间是连续的:#include void main()char str100,str1100,str2100; scanf(%s%s%s,str,str1,str2); printf(str=%s, str1=%s,str2=%sn,str,str1,str2); 输入的字符串之间要有必要的分隔符。分隔符为(空格、tab、 回车) 用scanf进行输入的时候,空格,tab,回车都不作为字符来处理。2.调用标准库中字符串专用 gets和puts函数1gets函数的一般调用形式: gets(参数); 例如:#include void main()char s100,s1100; gets(s); gets(s1); printf(s=%s,s1=%sn,s,s1);在输入的时候,分隔符只能用回车,这时,tab、和空格都将作为字符来处理。2puts函数的一般调用形式: puts(参数);在输出的时候,自动添加一个换行。例如:#include void main()char s100; gets(s); puts(s);第三部分:字符串数组 zhangsan lisi wangwu s010 s110 s210-在C语言中字符串数组的存放是通过二维的字符型数组来实现的 。1.在定义的同时为二维字符型数组赋字符串数组例如:char str310=zhangsan, lisi, wangwu ; -在二维的字符型数组中,一维的大小表示该字符串数组中含有字符串的个数。二维的大小表示每个字符串的最大长度。2.用指针数组来存放字符串数组。char *p=zhangsan,*q=lisi,*s=wangwu;可以定义一个字符型指针数组来存放字符串:例如:char *p3=zhangsan,lisi,wangwu;3.字符串数组的赋值:例如:#include void main()int i; char str530; for(i=0;i5;i+) gets(stri); for(i=0;i5;i+) puts(stri);-4.字符串数组的排序:按字符串的长度排序:#include #include #define M 5void fun(char s 50)int i,j; char t50; for(i=0;iM-1;i+) for(j=i+1;jstrlen(sj) strcpy(t,si); strcpy(si,sj); strcpy(sj,t); void main()char sM50; int i; for(i=0;iM;i+) gets(si); for(i=0;iM;i+) puts(si); fun(s); for(i=0;iM;i+) puts(si); -按字符串的大小排序:#include #include #define M 5void fun(char s 50)int i,j; char t50; for(i=0;iM-1;i+) for(j=i+1;jM;j+) if(strcmp(si,sj)0) strcpy(t,si); strcpy(si,sj); strcpy(sj,t); void main() char sM50; int i; for(i=0;iM;i+) gets(si); printf(-n); for(i=0;iM;i+) puts(si); fun(s); printf(-n); for(i=0;i对应的头文件 #include 1.拷贝函数 strcpy 一般调用形式: strcpy(s1,s2);使用:例如#include #include void main() char s1100=abcd,s2100=ABCDE; puts(s1);puts(s2); strcpy(s1,s2); puts(s1);puts(s2); -推导:#include void main()char s1100=abcd,s2100=ABC; int i; puts(s1);puts(s2); for(i=0;s2i;i+) s1i=s2i; s1i=0; puts(s1);puts(s2);2.连接函数 strcat - 一般调用形式: strcat(s1,s2); - 使用#include #include void main() char s1100=abcd,s2100=ABCDE; puts(s1);puts(s2); strcat(s1,s2); puts(s1);puts(s2); - 推导:#include void main()char s1100=abcd,s2100=ABCDE; int i,j; puts(s1);puts(s2); for(i=0;s1i;i+) ; for(j=0;s2j;j+) s1i+=s2j; s1i=0; puts(s1);puts(s2);3.长度函数 strlen; sizeof;一般形式为:strlen(s); sizeof(s); 使用:#include #include void main()char s1000; int k,K; gets(s); k=strlen(s); K=sizeof(s); printf(k=%d,K=%dn,k,K);4.比较函数: strcmp一般调用形式 strcmp(s1,s2); 使用:#include #include void main()char s1100,s2100 ; gets(s1);gets(s2); if(strcmp(s1,s2)0) puts(s1); else if(strcmp(s1,s2)=0) printf(相等n); else puts(s2);- 推导:#include int fun(char *s1,char *s2)int i; for(i=0;s1i!=0&s1i=s2i; i+) ; return s1i-s2i;void main()char s1100,s2100; gets(s1);gets(s2); if(fun(s1,s2)0) puts(s1); else if(fun(s1,s2)=0) printf(相等!n); else puts(s2);第五部分:字符串的简单应用:1.编写函数:判断一个字符串是否为回文,如果是回文,函数返回1,否则函数返回0。123321 abcba#include #include int fun(char *s)int i,k; k=strlen(s); for(i=0;iC语言是一种函数式的语言,在C中提供了函数的思想,在程序中没有子程序的概念只有函数的思想,因此,C语言的基本单位是函数。在一个C程序中,可以有多个函数构成,但主函数只能有一个且唯一。C语言中规定用main来作为主函数来使用,在main函数的后面有一个小括号,该括号中可以有参数,也可以没有参数,无论有无参数该括号都不能省略。C程序总是主函数的左边花括号开始执行,到右边的花括号结束。第一部分:带参数的主函数 -带参数的主函数的一般形式:void main(类型名1 形参1,类型名2 形参2).例如1:void main(int argc,char *argv).-还可以写成:void main(int argc,char *argv).-如果主函数带有参数,那么第一个参数的类型必须为int,第二个参数必须为char 。而形参是用户标识符。-如果第一个参数有值,那么该值至少为1例如:#include void main(int argc,char *argv)int i; printf(%dn,argc); for(i=1;i 递归分类:(1)简单递归 (2)复杂递归* 构成递归的必要条件:I要解决的问题可以转换为一个新的问题,新问题的解题方法和原来一样。II通过转换可以使问题得以解决。III必须有一个明确的结束条件。例如1:s=n!;#include int fun(int n)if(n=1) return 1; else return n*fun(n-1);void main()int n,s; printf(请输入n的值: ); scanf(%d,&n); s=fun(n); printf(s=%dn,s);例如2:s=1+2+3+.n#include int fun(int n)if(n=1) return 1; else return n+fun(n-1);void main()int n,s; printf(请输入n的值: ); scanf(%d,&n); s=fun(n); printf(s=%dn,s);例如3:(11.14)1 1 2 3 5 8 13 21 34 55 89 .#include int fun(int n)if(n=0|n=1) return 1; else return fun(n-1)+fun(n-2);void main()int n,k; printf(请输入n的值:); scanf(%d,&n); k=fun(n); printf(%d-%d,n,k);例如4:用递归算法根据下列公式求某数a的平方根:迭代公式为: x=(x0+a/x0)/2#include #include double fun(double a,double x0)double x; x=(x0+a/x0)/2; if(fabs(x-x0)=1e-6) return fun(a,x); return x;void main()double a; printf(请输入 a的值:); scanf(%lf,&a); printf(%f- %fn,a,fun(a,1.0);例如5:#include void fun(int n,int *s)int f1,f2; if(n=1|n=2) *s=1; else fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2; n=1 x=1n=2 x=1n=3 x=2n=4 x=3n=5 x=5n=6 x=8n=7 x=13.void main() int x; fun(4,&x); printf(x=%dn,x);第三部分:用户标识符及作用域定义的概念:定义的实质就在内存中开辟空间的过程。声明:介绍变量的所具有的性质和功能。* 按变量活动的范围:1 局部变量: 定义:定义在函数体内部或定义在复合语句体内的变量 例如:#inlcude void fun(int x,int y)int c; c=x+y; printf(c=%dn,c);void main()int a=10,b=20; a=a+5; int c=200; c=a+b; printf(c=%dn,c); fun(a,b);printf(a=%d,b=%dn,a,b);- 所有的形式参数都是局部变量。2 全局变量:外部变量- 定义在函数体外的变量#include int a=10;void fun()printf(a=%dn,a);int b=20;void main()printf(a=%d,b=%dn,a,b);3当全局变量和局部变量同名:例如1:#include int a=100;void fun()int b=20; printf(a=%d,b=%dn,a,b);int b=200;void main()int a=10; printf(a=%d,b=%dn,a,b); fun();例如2:#include void main()int i=1,j=3; printf(%d,i+); int i=0; i+=j*2; printf(%d,%d,i,j); printf(%d,%dn,i,j);1,6,3,2,3*按变量存储的性质:1自动类定义:被说明为auto或没有被说明的变量 自动类的变量在内存中占有一个临时空 所有的形参都是自动类。2静态类 定义: 在内存中占有一个永久的存储空间 所有的全局变量都是静态类的。3对应的说明符: 自动类:I:自动类: auto auto int a; II:寄存器类型 (register) -不能大量定义 - 不能求地址运算。 - 静态类:I : 静态类 static static int a;II :外部类 extern 4静态的局部变量:- 静态的局部变量的值是在定义的时候赋予的。如果在定义的时候,没有赋值,编译系统将默认为0- 静态的局部变量在内存中占有一个永久的存储空间。 例如1#include void main()static int a; printf(a=%dn,a);例如2:#include int fun(int a,int b)static int i,m=2; i+=m; m+=i+a+b; return m;vo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校文艺部笔试题目及答案
- 时间到认识课件
- 时尚表演基础知识培训内容课件
- 人教版四年级上册第五单元5.1《平行与垂直》课时练(含答案)
- 高一英语必修一Unit 2 Travelling around课时同步练习(Listening and Talking)(含答案)
- 项目成本控制方案编制与实施框架
- 小青蛙呱呱系列童话呱呱撒谎了750字7篇范文
- 营销活动效果评估报告模板业绩评估标准版
- 纪念九八一事变的课件
- 纪委监委应急知识培训课件
- 血液肿瘤基础知识
- 阳台封闭施工组织方案
- 北京地铁桥隧结构运维监测技术应用
- 充电桩工程施工方案方案
- 实验室生物安全管理手册
- 生产车间7s管理成果汇报
- 新教师德育工作培训
- 代建管理制度
- 中蜂饲养管理与常见病防治
- 小学数学作业设计培训
- 2024年05月辽宁中国工商银行辽宁分行校园招考笔试历年参考题库附带答案详解
评论
0/150
提交评论