C语言程序设计实验报告——实验十一

合集下载

c程序设计 实验报告

c程序设计 实验报告

c程序设计实验报告C程序设计实验报告引言:C程序设计是计算机科学中一门重要的编程语言,广泛应用于软件开发、系统编程等领域。

本实验报告旨在总结并分析我在C程序设计实验中的学习经验和成果。

实验一:基本语法和数据类型C语言作为一门结构化的编程语言,具有丰富的语法和数据类型。

在本实验中,我学习了C语言的基本语法,包括变量的声明和赋值、运算符的使用以及条件语句和循环语句的控制流程。

通过编写简单的程序,我熟悉了C语言的基本语法和数据类型的使用。

实验二:函数和指针函数是C语言中的重要概念,通过函数的封装和调用,可以实现程序的模块化和复用。

在本实验中,我学习了函数的定义和调用,了解了函数的参数传递和返回值的使用。

同时,我还学习了指针的概念和用法,掌握了指针变量的声明和指针运算的基本操作。

通过实验练习,我对函数和指针的使用有了更深入的理解。

实验三:数组和字符串数组和字符串是C语言中常用的数据结构,对于处理大量数据和字符操作非常重要。

在本实验中,我学习了数组的定义和使用,了解了数组的下标和内存分配的原理。

同时,我还学习了字符串的表示和处理方法,掌握了字符串的输入输出和常见操作函数的使用。

通过实验练习,我对数组和字符串的应用有了更深入的认识。

实验四:结构体和文件操作结构体是C语言中用于组织和管理复杂数据的一种方式,文件操作则是处理外部文件的重要技术。

在本实验中,我学习了结构体的定义和使用,了解了结构体成员的访问和结构体数组的操作。

同时,我还学习了文件的打开、读写和关闭操作,掌握了文件指针的使用和文件读写的基本流程。

通过实验练习,我对结构体和文件操作的应用有了更深入的了解。

实验五:动态内存分配和链表动态内存分配和链表是C语言中高级的数据结构和算法,对于处理动态数据和实现复杂逻辑非常重要。

在本实验中,我学习了动态内存分配的方法和使用,了解了malloc和free函数的原理和使用。

同时,我还学习了链表的定义和操作,掌握了链表的插入、删除和遍历等基本操作。

c语言程序设计实验报告

c语言程序设计实验报告

c语言程序设计实验报告C语言程序设计实验报告。

本次实验是关于C语言程序设计的实验报告,主要内容是对C语言程序设计的学习和实践。

通过本次实验,我对C语言的基本语法和程序设计有了更深入的理解和掌握。

首先,本次实验的主要内容是关于C语言的基本语法和程序设计。

在实验中,我们学习了C语言的基本数据类型、运算符、控制语句、函数、数组、指针等内容。

通过实际的编程练习,我对这些内容有了更加具体和深入的了解。

在实验中,我学会了如何定义变量、使用不同类型的数据、编写循环和条件语句、设计函数和调用函数等基本的程序设计技巧。

其次,本次实验还涉及了C语言的程序设计实践。

在实验中,我们完成了一些简单的程序设计任务,比如实现一个简单的计算器、编写一个简单的学生成绩管理系统等。

通过这些实践,我对C语言的程序设计有了更加具体和深入的理解,也提高了我的编程能力和解决问题的能力。

在实验中,我还遇到了一些困难和问题。

比如在编写程序时,可能会出现语法错误、逻辑错误、运行时错误等。

但是通过仔细分析和调试,我逐渐克服了这些问题,也提高了自己的解决问题的能力。

总的来说,本次实验对我来说是一次很好的学习和锻炼机会。

通过实验,我不仅对C语言的基本语法和程序设计有了更深入的理解,也提高了自己的编程能力和解决问题的能力。

希望在以后的学习和工作中,能够继续努力,不断提高自己的编程水平,为将来的发展打下坚实的基础。

最后,我对C语言程序设计实验报告的编写就到此结束。

希望通过这次实验报告的撰写,能够对C语言程序设计有一个更加全面和深入的了解,也希望能够在以后的学习和工作中,能够更加熟练地运用C语言进行程序设计。

感谢老师和同学们在实验中给予我的帮助和支持,也希望在以后的学习和工作中,能够继续努力,不断提高自己的编程能力和解决问题的能力。

C语言程序实验报告--谭浩强

C语言程序实验报告--谭浩强

C语言程序设计实验报告学校:内蒙古科技大学经济与管理学院班级:信息管理与信息系统2011级姓名:王*学号:**********目录实验一C语言开发环境建立 (3)实验二C语言程序初步 (3)实验三变量与赋值 (4)实验四运算符与表达式 (5)实验五数据类型 (7)实验六控制台输入/输出 (9)实验七关系运算与逻辑运算 (11)实验八分支程序的测试与调试 (12)实验九条件型循环结构及其测试 (16)实验十计数型循环结构及其测试 (20)实验十一函数及其测试 (24)实验十二变量的储存性质 (26)实验十三数组 (30)实验十四指针 (32)实验十五结构体和共用体 (37)实验十六文件 (40)实验11、实验目的与要求(1)掌握C语言开发环境的软/硬件配置和安装方法。

(2)为了自己的方便进行工作环境配置。

(3)测试所建立的C语言程序开发环境。

2、实验测试一个简单的程序,对所建立的程序开发环境进行测试例如,可以准备一个简单的程序如下。

#include <stdio.h>int main(void){printf("I am studying programming with C.");}编译结果运行结果3.分析与预期结果相同实验21.实验目的与要求(1)进一步熟悉c语言程序设计环境。

(2)明确c语言程序的结构。

2. 程序检测与调试程序一错误程序:main()(printf("This is c program.");)调试结果:程序缺少“#include<stdio.h>”,main函数下面应该是“{}”而不是“()”。

改正后的程序:#include<stdio.h>main(){printf("This is c program.\n");}程序二错误程序:#include<stdio.h>;main(){a=3,b=5;c=a*b;printf("The product is:",c)}调试结果:“#include<stdio.h>”后面没有“;”,对变量a,b,c没有定义,“}”前缺少“;”。

C语言程序设计实验报告(实验大纲+过程)

C语言程序设计实验报告(实验大纲+过程)

《C程序设计》实验教学大纲一、适用范围大纲适用信息管理专业本科教学使用。

二、课程名称C程序设计三、学时数与学分总学时:90 总学分:4实验学时:28 实验学分:1四、教学目的和基本要求目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握 C 语言程序设计的基本方法和编程技巧。

基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。

上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。

注:带*的实验项目为选做实验项目六、教材、讲义及参考书《C程序设计题解与上机指导》谭浩强主编清华大学出版社七、实验成绩评定办法实验成绩=平时实验表现+实验报告。

实验成绩占总成绩的20%。

实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。

1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。

在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

2、实验报告:学生实验后应按时完成实验报告。

八、实验教学大纲说明本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。

实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。

九、实验项目实验一C程序的运行环境和运行一个C程序的方法一、实验目的1.了解Visual C++6.0编译系统的基本操作方法,学会独立使用该系统。

2.了解在该系统上如何编辑、编译、连接和运行一个C程序。

《C程序设计》课程实验报告

《C程序设计》课程实验报告
7
p3=p*(1+r3/2)*(1+r3/2); printf("活期:%f,一年期定期:%f,存两次半年定期:%f\n",p1,p2,p3); } 2、方法一: #include <stdio.h> void main() { char c; c=getchar(); putchar(c+32); putchar('\n'); } 方法二:
8
实验四
顺序程序设计
一、实验目的: 1、掌握 C 语言中使用最多的一种语句——赋值语句的使用方法。 2、掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 二、实验内容: 1、有若干只鸡和兔在同个笼子里,从上面数,有 35 个头;从下面数,有 94 只脚。编程求笼中各有几只鸡和兔? 2、从键盘输入一个 3 位整数,要求反向输出该数。(如输入 123,反向输出为 321) 三、算法设计: 1、 第一步:定义四个变量 x,y,a,b;并给 a,b 分别赋值 35,94; 第二步:列方程表达式; 第三步:输出求出的 x,y。 2. 第一步:定义五个变量 a,b,c,d,x; 第二步:从键盘输入有一个三位数并赋值给 x; 第三步:通过计算将百位上的数赋值给 a,十位的赋值给 b,各位赋值给 c。 第四步:d=a*100+b*10+c; 第五步:输出新值。
2
if(x>y) z=x; else z=y; return(z); //将 x,y 中较大的值赋给
//将 z 值返回。通过 max()函数带回调用处
} void main(); { int a,b,c; printf("input a,b="); scanf("%d,%d",&a,&b); c=max(a,b); printf("max is: %d\n",c); }

《C语言程序设计》实验报告

《C语言程序设计》实验报告

《C语言程序设计》实验报告学院:专业:学号:姓名:成绩:课程代码: 2001301指导教师:实验中心:电气信息专业试验中心日期:目录实验总体要求实验一………………………………………………C语言的运行环境和运行过程实验二………………………………………………数据类型、运算符与表达式实验三………………………………………………程序结构(顺序、选择和循环) 实验四………………………………………………数组实验五………………………………………………函数实验六………………………………………………指针实验七………………………………………………结构体实验八………………………………………………类和对象实验总体要求C语言程序设计课程是一门实践性很强的课程,为了培养学生的计算机应用能力,除了课堂理论教学外,必须加强程序设计课程实验的教学环节。

1、课程实验教学目的通过C语言程序设计的课程实验教学,学生应具有使用计算机解决相关问题的能力,同时为学生今后学习其他计算机应用课程打下良好的程序设计基础。

⑴分析问题和解决问题能力的训练课程实验教学将课本上的理论知识和实际应用有机地结合起来,达到训练学生分析问题解决实际问题的能力,提高学生应用计算机知识开发应用系统的综合能力。

⑵逻辑思维能力的训练通过课程实验教学,使学生正确地掌握C语言的基本知识,较好掌握基本的程序算法,以及描述方法。

培养学生在程序设计解题思路、算法的描述、编程构思等方面的计算机逻辑思维能力。

⑶程序设计技能的训练通过C语言环境下的应用实例,训练学生编写程序的能力,掌握编程的思路和方法,掌握结构化程序设计的基本概念和基本技能。

通过课程实验教学,使学生掌握C程序设计语言的语法规则,数据结构的应用,掌握算法描述及相应代码描述,掌握结构化程序设计的基本方法,能熟练编写一般的应用程序。

2、课程实验教学要求⑴要求通过解题、程序设计和上机实践,加深对所学概念的理解,提倡理论与实践相结合的学习方法。

c语言程序设计实验报告

c语言程序设计实验报告

c语言程序设计实验报告一、实验目的本次实验旨在通过设计C语言程序来加深对于C语言的理解和掌握,同时也可以掌握一些实用的编程技巧和方法。

通过编写程序实现对于输入输出的处理、循环语句和条件语句的运用以及函数调用等内容的练习。

二、实验内容本次实验涉及以下三个方面的内容:1. 程序的的输入输出我们通过编写程序来实现一个简单的输入输出功能,即用户输入任意一个整数,程序输出该整数的两倍。

2. 循环语句和条件语句的运用我们通过编写程序来实现以下两个功能:(1)输入一个正整数,计算该数的阶乘。

(2)输入一个正整数n,输出n行的杨辉三角形。

3. 函数调用我们通过编写程序来实现以下两个功能:(1)输入三个整数a、b和c,求其中最大的一个数。

(2)输入一个字符串,程序输出该字符串中每个字母在字符串中出现的次数。

三、实验过程1. 程序的输入输出我们通过使用scanf函数来实现输入一个整数的功能:int n;scanf("%d", &n);然后我们可以通过printf函数来输出该整数的两倍的值:printf("%d", n*2);2. 循环语句和条件语句的运用(1)计算阶乘我们可以利用for循环语句来实现计算阶乘的功能:long long ans = 1;for(int i = 1; i <= n; i ++){ans *= i;}printf("%lld", ans);(2)输出杨辉三角我们可以利用嵌套的for循环语句来实现输出杨辉三角的功能:for(int i = 1; i <= n; i ++){for(int j = 1; j <= i; j ++){if(j == 1 || j == i)printf("1 ");elseprintf("%d ", a[i-2][j-2]+a[i-2][j-1]);}printf("\n");}3. 函数调用(1)求最大值我们可以利用函数调用来实现求最大值的功能:int max(int a, int b, int c){int temp = a > b ? a : b;return temp > c ? temp : c;}然后我们可以通过调用该函数来求解三个数中的最大值:int a, b, c;scanf("%d%d%d", &a, &b, &c);printf("%d", max(a, b, c));(2)计算字符次数我们可以利用一个数组来记录每个字母出现的次数,然后通过遍历输入的字符串来对应更新数组。

C语言程序设计课程设计报告

C语言程序设计课程设计报告

C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。

3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。

提高编写程序解决实际问题的能力、调试程序的技术。

三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。

主程序:新建:输入记录(遇#号时停止输入)。

插入:在指定位置插入记录。

显示:列出所有记录。

查询:一、按学号查询;二、按名字排序。

删除:一、按学号删除;二、按名字删除;3、删除所有记录。

排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。

保留:保留为任意名字,系统自动加后缀名为.txt。

读取:读取程序目录下的后缀名为.txt的文件。

退出:退出程序。

五、各功能模块的具体实现,用图表表示。

输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。

STUDENT *init(); /*初始化链表*/STUDENT *create(); /*新建链表*/STUDENT *del_no(STUDENT *h);/*按学号删除信息*/STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/void print(STUDENT *h); /*显示信息函数*/void search_no(STUDENT *h); /*按学号搜索*/void search_name(STUDENT *h); /*按姓名搜索*/STUDENT *insert(STUDENT *h); /*插入信息函数*/void sort(STUDENT *h);/* 排序函数*/void save(STUDENT *h);/*保留数据到文件*/void load(STUDENT *h); /*从文件读取数据*/int menu_main(); /*菜单函数*/void inputs(char *prompt,char *s,int count);/*输出信息*/七、程序代码:Enter records\n");printf(" 2. Add records\n");printf(" 3. List records\n");printf(" 4. Search records\n");printf(" 5. Delete records\n");printf(" 6. Sort records\n");printf(" 9. Quit\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>9); /*选择项不在1~9之间重输*/return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Search records on number\n");printf(" 2. Search records on name\n");printf(" 3. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>3);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Chinese\n");printf(" 2. English\n");printf(" 3. Math\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Delete records on number\n");printf(" 2. Delete records on name\n");printf(" 3. Delete all records\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}.");/*提示*/getch(); /*读入任意字符*/}.\n");getch(); /*读入任意字符*/if(p==h)h=p->next;elseq->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s); }printf("\nPress any key to continue..."); getch(); /*读入任意字符*/return h;}.\n");getch();if(p==h)h=p->next;else q->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s);}printf("\nPress any key to continue...");getch(); /*读入任意字符*/return h;}.");getch(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C 语言程序设计实验报告——实验十一
实验名称 文件
成绩
姓名
学号
班级
实验地点 9B506 实 1、掌握文件以及缓冲文件系统、文件指针的概念; 验 2、学会使用文件打开、关闭、读、写等文件操作函数;
完成日期
2009-12-23
目 3、学会用缓冲文件系统对文件进行简单的操作。

1.分析以下程序,判断输出结果,然后上机调试验证结果。 (1)以下程序的输出结果是___________________ # include <stdio.h> main() { FILE *fp; int c; fp=fopen("abcd.txt","w"); 实 do { c=getchar(); 验 fputc(c,fp); } while (c!=EOF); 内 fclose(fp); } 容 (2)以下程序的输出结果是___________________ # include <stdio.h> 与 main() { FILE *fp1,fp2 步 char c1,c2; clrscr(); 骤 fp1=fopen(“prog1.txt”,“r”); fp2=fopen(“prog2.txt”,“w”); while((c1=fgetc(fp1))!=EOF) { if (c1>='0'&&c1<='8') {


实 验 心 得
绩如下: 99101 Wang 89 98 67 实 99103 Li 60 80 90 99106 Fun 75 91 99 验 99110 Ling 80 50 62 99113 Yuan 58 68 7l 内 分析:该问题有两个主要步骤:首先定义结构体数组,将输入 数据首先存储到结构体 容 数组中。然后将结构体数组中的数据读出来,以块写入的方式 写到指定的文件中。 与
c2=c1+1; fputc(c2,fp2); }
}
fclose(fp1); fclose(fp后保存到另一个文件中 去,如果 prog1.txt 中的内 容是 34128967,那么文件 prog2.txt 中的内容是什么呢?
2.程序填空: (1)以下程序用来统计文件中字符个数。请填空: #include"stdio.h" main( ) { FILE *fp; long num=0L; if((fp=fopen("fname.dat","r")==NULL) { printf("Open error\n"); exit(0);} while(________________) { fgetc(fp); num++;} printf("num=%ld\n",num1); fclose(fp); } 实 (2)下面程序把从终端读入的文本(用@作为文本结束标志) 输出到一个名为 bi.dat 验 的新文件中。请填空。 #include "stdio.h" 内 FILE *fp; { char ch; 容 if( (fp=fopen ( _______________) )= = NULL)exit(0); while( (ch=getchar( )) !='@') fputc (ch,fp); 与 fclose(fp); } 步 3.编程题 (1)用任何一种方法先创建一个文本文件 string.txt,编写程 骤 序将该文件的内容显示出 来。 分析:只显示文件内容,即为读文件,应以“r”方式将 string.txt 文件打 开。文件结束 状态判断用 feof()函数。 (2)编写一个文本文件复制函数,并在主函数 main()中调用 它,将上面建立的文本文 件 string.txt 复制到文件 backup.txt 中。 分析: 文件复制需要对两个文件进行操作,源文件用“r”方 式打开,目标文件用“w” 方式打开。文件复制函数 copy()使用两个字符型指针参数,调 用时实参使用文件名字符串, 或者是存储文件名的字符串变量。文件复制的方法:从源文件 中逐个读出字符,并立刻把 读出的一个字符写入到目标文件中。 (3)用文件存储学生数据。有 5 个学生,每个学生有 3 门 课的成绩,从键盘输入数据 (包括学生号、姓名、3 门课成绩),计算出平均成绩,将原有 数据和计算出的平均分数存放 在磁盘文件 stud 中。设 5 名学生的学号、姓名和 3 门课成
相关文档
最新文档