2026年计算机二级C语言编程习题课件_第1页
2026年计算机二级C语言编程习题课件_第2页
2026年计算机二级C语言编程习题课件_第3页
2026年计算机二级C语言编程习题课件_第4页
2026年计算机二级C语言编程习题课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

●专题资料●2026年计算机二级C语言编程习题课件紧扣2026考点,强化实战演练系统整理·参考借鉴目录CONTENTS01情境导入与目标设定02基础语法与数据类型精讲03控制结构与函数实战演练04指针深入解析与动态内存管理05综合应用与易错点辨析06分层练习与能力提升策略2026年计算机二级C语言编程习题课…2/30032026年C语言二级考试趋势分析01根据近三年真题数据统计,2026年C语言二级考试将更侧重指针、动态内存管理和复杂算法的应用,题型中将增加更多代码阅读与调试题,分值占比上指针操作题预计提升至30%。02新考试大纲将强调代码规范与效率,考察考生对C语言底层机制的理解,如内存布局、指针算术等,这意味着需要更深入掌握数据结构与算法基础。03真题分析显示,每年约有15%的题目涉及易错点排查,如内存泄漏、野指针等,因此本课件将重点通过案例讲解这些常见问题的成因与解决策略。04金融与科学计算案例将作为常考点,浮点数精度问题预计占比20%,要求考生掌握double类型使用规范及误差控制方法,本课件将通过实例对比int、float、double的适用场景。05新加入的代码调试题型要求考生具备独立分析错误日志的能力,本课件将通过历年真题中的典型错误案例,系统训练考生的问题定位与修复技巧。2026年计算机二级C语言编程习题课…情境导入与目标设…·3/304本课程学习路径与能力要求01学习路径将遵循'基础语法→数据结构→指针深入→动态内存→综合应用'的进阶体系,每个阶段均设置代码规范检查点,确保编程习惯同步培养。02阶段一需达成本书配套练习中80%基础题的独立完成能力,重点掌握整型、浮点型、字符型精度对比与选择,要求能编写无语法错误的代码段。03指针章节将通过10个精选案例讲解指针运算与数组内存布局,目标是使学员能在30分钟内完成链表创建与遍历的完整代码实现。04动态内存管理部分将结合历年真题中的内存泄漏题目,要求学员掌握malloc/free的正确使用场景,能通过调试工具定位常见内存问题。05最终综合应用阶段将通过一个模拟项目考核,要求在2小时内完成包含链表、递归、文件操作的综合程序,体现理论知识的实战转化能力。2026年计算机二级C语言编程习题课…情境导入与目标设…·4/3005整型、浮点型精度对比与选择1int类型通常占用4字节存储,支持-2^31~2^31-1的整数值,适用于计数类场景;float类型占4字节但精度有限(约6位有效数字),科学计算中推荐使用double(8字节,约15位精度)。2【案例】金融领域转账计算应选用int类型避免小数误差,而气象数据分析需用double类型精确表示小数点后多位数字,本课件将通过代码演示1.0f+0.1f不等于1.1f的精度问题。3精度测试代码示例:printf("%%f%%lf",1.0f+0.1f,1.0+0.1);输出结果将显示float类型在尾数处理上的差异,double类型因更高精度而输出准确值。4【易错提醒】当比较浮点数相等性时应使用fabs(a-b)<1e-6的容差判断,直接比较a==b可能因精度误差导致错误结果,本课件将收集5个历年真题中的浮点数比较陷阱案例。5选择原则:若数值范围是关键因素则选int或long,若需要精确小数则选double,特殊场景如固定小数位货币计算可采用定点数库函数如printf(„%0.2f‟,money);。2026年计算机二级C语言编程习题课…基础语法与数据类…·5/306字符型与字符串处理技巧1char类型占用1个字节存储字符,其值范围在0~255,字符串常量以'\0'结尾,编译器自动处理结尾标识,两者通过数组实现存储,但使用方式不同。2strlen函数计算字符串长度时不包括结尾'\0',strcpy函数实现字符串复制时需注意源字符串长度可能不足导致溢出,strcat函数连接字符串时同样存在溢出风险。3通过异或加密算法实现简单密码加密,例如将每个字符与固定密钥进行异或运算,解密时使用相同密钥再次异或还原,该方式简单但安全性较低。4字符串处理时必须进行边界检查,例如使用strlen确认长度后再进行拷贝或连接,避免缓冲区溢出导致程序崩溃或数据泄露。5C语言没有内置字符串处理函数,所有操作依赖标准库,学习时需掌握函数原型与参数含义,通过实际案例加深理解。2026年计算机二级C语言编程习题课…基础语法与数据类…·6/3007数组初始化与遍历实战01静态数组声明时可直接初始化,如intscores[5]={90,85,78,92,88};,动态数组则需先定义再通过malloc分配内存并初始化,如int*dynamic_scores=(int*)malloc(5*sizeof(int));for(inti=0;i<5;i++)dynamic_scores[i]…02数组遍历常用for循环,静态数组可直接使用下标访问scores[3]=score;,动态数组需注意指针越界,如i<sizeof(scores)/sizeof(scores[0]),下标运算底层通过内存偏移实现,理解其与指针运算的关联03多维数组遍历需嵌套循环,如intmatrix[2][3]={{1,2,3},{4,5,6}};,访问时matrix[1][2]=6;,计算索引时内层循环变量乘以内层数组大小加上外层循环变量,如3*i+j04初始化与遍历在成绩统计案例中体现显著,假设有5名学生成绩的静态数组intgrades[5];,初始化为{87,92,78,95,83};,遍历时计算平均分需累加后除以元素个数,动态分配则需先分配后逐个输入成绩05动态内存管理需注意释放,如free(dynamic_scores);,避免内存泄漏,静态数组无需手动释放,系统自动回收,理解两种数组的生命周期与内存分配机制差异2026年计算机二级C语言编程习题课…基础语法与数据类…·7/30结构体封装与嵌套应用1结构体通过关键字struct定义,成员可以是基本类型或其他结构体,例如structStudent{intid;charname[20];},实现数据封装。2结构体成员访问通过点运算符,例如stu.id,指针访问为(*stu).id或stu->id,理解两种方式的区别有助于指针与结构体结合使用。3学生信息管理案例中,可创建结构体数组存储多个学生,例如structStudentstudents[50],遍历数组时需逐个处理成员数据。4嵌套结构体可封装更复杂关系,例如structAddress{charcity[10];},structStudent{intid;structAddressaddr;},提升代码可读性与维护性。2026年计算机二级C语言编程习题课…基础语法与数据类…·8/30分支语句在成绩评级中的实现KEYPOINT·09在学生成绩评级系统中,使用if-else语句可以根据成绩范围判断等级,如90分以上为'A',80-89为'B'等,结构清晰但代码冗长;而switch语句通过成绩除以10的商作为case值,效率更高,但仅适用于整数值评级场景。带默认值的条件判断逻辑通过else语句实现,如成绩低于60分则输出'C',else部分处理其他所有情况,确保每个成绩都有对应的评级输出,避免遗漏。代码可维护性设计要求使用常量定义等级范围,如#defineA_GRADE90,使代码更易读易修改,当等级标准调整时只需修改常量定义,无需多处修改代码逻辑。通过函数封装评级逻辑,如voidgradeEvaluation(intscore){switch(score/10){...}},将评级逻辑与主程序分离,提高代码复用性和可维护性。在多分支判断中,使用嵌套if-else或switch-case可以处理复杂逻辑,但需注意逻辑覆盖完整性与避免死循环,如成绩区间重叠时需明确优先级判断顺序。2026年计算机二级C语言编程习题课…控制结构与函数实…·9/30循环结构优化与死循环排查1在斐波那契数列计算中,for循环通过迭代方式计算第10项为55,时间复杂度O(n),比while循环效率更高;do-while循环先执行一次计算再判断,适用于至少执行一次的场景。2死循环常见于条件判断错误,如for(inti=0;i>=0;i--),或自增/自减逻辑遗漏,如while(i>0)i,排查时需检查循环变量初始值、条件表达式和更新语句是否正确。3通过调试工具(如GDB)设置断点,单步执行检查循环变量变化,对比正确程序发现i始终为0的循环条件错误,或i自增后仍满足i>0的死循环条件。4优化循环结构可通过减少不必要的计算,如计算斐波那契数列时使用临时变量保存前两项,避免重复调用函数,提升性能至O(1)空间复杂度。2026年计算机二级C语言编程习题课…控制结构与函数实…·10/3011函数参数传递与返回值应用KEYPOINT·111计算圆面积与周长的函数声明为doublecalculateCircle(doubleradius){returnPI*radius*radius;},值传递将半径值复制到函数,函数内修改不影响实参。2地址传递通过指针参数修改全局变量,如voidadjustScore(int*score){(*score)+=5;},适用于需要改变原始数据场景,如学生总分调整。3指针作为函数参数时,形参与实参指向同一内存地址,如intglobalScore=80;voidmodifyScore(int*ptr){*ptr=85;},调用后globalScore变为85。4函数接口设计应遵循单一职责原则,参数数量不宜过多,如voidprintGrade(intscore)接收一个分数并输出评级,避免函数过于复杂难以维护。5返回值应用需注意数据类型匹配,如intmax(inta,intb)返回最大值,调用max(10,20)输出20,函数返回多个值时需使用结构体或数组。2026年计算机二级C语言编程习题课…控制结构与函数实…·11/3012递归函数在阶乘计算中的实现SECTION·1201递归函数是解决特定问题的一种方法,通过函数调用自身来实现重复操作,以阶乘计算为例,5!=5*4!,递归调用直到达到终止条件。02递归函数的执行原理涉及系统栈,每次函数调用都会在栈中创建新的帧保存局部变量和返回地址,递归深度过深可能导致栈溢出。03递归终止条件是递归过程结束的关键,必须设定明确的条件以避免无限递归,如阶乘函数的终止条件是当n等于1时返回1。04可视化动画可以直观展示递归调用过程,通过栈帧的变化理解递归执行顺序,有助于深入掌握递归的内存和逻辑结构。2026年计算机二级C语言编程习题课…控制结构与函数实…·12/30指针运算与数组内存布局01指针自增运算(p++)会指向下一个内存地址,其增量等于所指向数据类型的大小,例如int类型指针自增跳过4个字节。02指针差值计算(p2-p1)可以得出两个指针之间包含的元素数量,例如p2-p1=3表示p2比p1间隔3个int元素的地址。03指针与数组下标具有等价关系,p[i]与*(p+i)等效,因为数组名p是首元素地址,i个单位偏移即i个元素地址。04指针运算存在风险:越界访问可能破坏内存数据,野指针指向未分配或已释放内存可能导致程序崩溃或数据损坏。05安全实践要求始终确保指针运算在有效内存范围内,避免解引用空指针或越界指针,建议使用边界检查或容器技术。2026年计算机二级C语言编程习题课…指针深入解析与动…·13/30动态内存分配实战与释放策略malloc函数分配指定字节数内存,返回指向该内存的指针,例如malloc(sizeof(int)*10)为10个int分配连续内存。1动态内存必须通过free函数释放,防止内存泄漏,释放后指针应立即置NULL避免野指针访问已释放内存。2内存泄漏模拟实验可以通过gdb跟踪malloc调用次数与free次数差异,帮助理解内存管理的重要性。3智能指针(伪代码)可自动管理内存生命周期,例如:auto_ptr<int>p(newint);自动在p离开作用域时调用delete。2026年计算机二级C语言编程习题课…指针深入解析与动…·14/30指针与函数回调机制实现15函数回调机制允许将一个函数作为参数传递给另一个函数,从而实现模块化设计,提高代码复用性。例如,冒泡排序可以通过传递不同的比较函数来…函数指针作为参数传递时,需要定义指向函数的指针变量,并确保传递的函数具有正确的参数列表和返回类型。例如,定义一个比较函数intcompare(inta,intb){returna-b;},然后通过函数指针将其传递给排序函数,可以实现自定义排序逻辑。回调机制在图形界面编程中应用广泛,例如,当用户点击按钮时,可以传递一个处理点击事件的函数作为回调,实现事件驱动的编程模式。这种设计模式在C语言中同样适用,能够增强代码的可扩展性和可维护性。通过回调机制,可以将具体的业务逻辑与通用算法分离,实现关注点分离的设计原则。例如,在GUI库中,可以定义统一的排序接口,用户只需要提供自定义的比较函数,无需关心排序算法的实现细节,这种设计简化了代码的开发和维护。2026年计算机二级C语言编程习题课…指针深入解析与动…·15/30指针与结构体交互实现链表1单向链表通过指针将节点连接起来,每个节点包含数据域和指向下一个节点的指针。例如,定义一个链表节点structNode{intdata;structNode*next;};,可以通过递归或循环的方式遍历链表,实现数据的插入、删除等操作。2链表的插入操作需要根据插入位置调整指针指向,例如,在头节点前插入新节点时,需要将新节点的next指向原头节点,并将头指针更新为新节点。3链表的删除操作同样需要调整指针,例如,删除头节点时,需要将头指针指向原头节点的下一个节点,并释放原头节点的内存。4链表是一种动态数据结构,其大小可以灵活变化,通过malloc和free函数动态分配和释放内存,可以有效地管理内存资源。2026年计算机二级C语言编程习题课…指针深入解析与动…·16/30C语言代码风格与规范要点1701K&R风格(Kernighan&Ritchie)使用花括号在同一行开始,Allman风格在花括号后换行,GNU风格在花括号前换行,每种风格各有优劣,选择时应保持一致性。02命名规范要求函数名、变量名使用有意义的单词组合,例如,使用totalCount而不是t或num,以提高代码可读性。03注释标准要求注释清晰明了,解释代码的功能和逻辑,避免使用无意义的注释。04空格使用应在运算符两侧添加空格,例如,a=b+c,以提高代码可读性。2026年计算机二级C语言编程习题课…综合应用与易错点…·17/30常见编译错误与调试技巧KEYPOINT·18语法错误如分号缺失会导致编译器无法解析语句,通过阅读编译报错信息中的行号定位问题,例如在代码的第25行缺少分号将引发错误。1类型不匹配问题常见于函数参数和返回值类型不一致,例如期望整型参数却传入浮点型,需检查函数声明和调用处的类型声明是否一致。2GDB调试工具可通过断点设置逐行执行代码,使用命令如"breakmain"在主函数入口设置断点,配合"step"命令单步执行查看变量变化。3变量查看可通过GDB命令"printx"输出变量x的值,帮助定位逻辑错误,例如在循环中检查累加变量是否按预期递增。2026年计算机二级C语言编程习题课…综合应用与易错点…·18/3019内存泄漏与野指针排查实战191内存泄漏常发生在未释放malloc分配的内存,例如循环中连续调用malloc却不配合free,导致内存使用量持续增长。Valgrind工具通过模拟内存访问检测泄漏,其检测原理是跟踪所有malloc和free调用,报告未释放的内存块,如报告发现100KB内存泄漏。3野指针源于指针指向已释放的内存区域,防御措施包括三法则:指针初始化、避免空指针解引用、动态分配后立即释放指针。指针使用不当可能导致程序崩溃,例如在数组边界外访问,可通过边界检查和智能指针(如C++中的unique_ptr)增强安全性。5动态内存管理需遵循配对原则,每次malloc必须对应一次free,否则将造成资源浪费和潜在的安全风险。2026年计算机二级C语言编程习题课…综合应用与易错点…·19/30C语言与C++指针差异对比C语言指针支持多重解引用,例如通过*p->q访问结构体成员,而C++推荐使用对象访问运算符(->)简化表达。const修饰符在C语言中用于声明只读变量,但在C++中可修饰指针指向的内容(constint*p)或指针本身(int*constp)。C++引入引用机制替代部分指针功能,例如引用传递无需解引用,且能保证对象生命周期安全,如int&ref=x;跨语言项目中的指针安全设计需注意类型兼容性,C语言指针类型严格而C++支持类型转换,需避免隐式转换导致未定义行为。2026年计算机二级C语言编程习题课…综合应用与易错点…·20/3021基础语法专项突破训练01选择题(1-10题)考察整型、浮点型精度对比,涉及int、float、double类型在不同精度要求下的选择,通过对比精度误差分析实际应用场景,如金融计算中避免float导致的精度损失【例题】选择计算0.1+0.2最精确的结果,解析浮点数表示方式与精度限制,易错选项为直接选择0.3,正确答案为0.30000000000000004,强调double精度高于floa…02选择题(11-15题)测试字符型与字符串处理,如字符常量与变量区别,字符串结束标志'\0'的作用,涉及strcat、strcpy、strlen等函数的正确使用,通过错误选项如忽略字符串长度限制分析缓冲区溢出风险【例题】判断以下代码片段的输出结果,解析字符型与字符串型转换细节,易错选项为未考虑'\0'占用字符,正确输出为ABC,强调字符串…03选择题(16-20题)包含数组初始化与遍历,如静态数组、动态数组声明与初始化方式,遍历方法(for循环、指针、foreach),通过错误选项如数组越界访问分析程序崩溃风险,解析数组内存连续存储特性,讲解不同遍历方式效率差异【例题】选择以下代码中正确的数组遍历方法,解析for循环与指针遍历的边界判断逻辑,易错选项为未考虑数…2026年计算机二级C语言编程习题课…分层练习与能力提…·21/30基础语法专项突破训练(续)练习题库提供20道选择题配套答案解析,按错误率统计设计,如整数溢出、浮点精度、字符串操作、数组访问等常见错误,通过统计学生选择错误选项的频率,定位薄弱环节,如浮点数精度问题常出现在金融计算相关题目中,错误率超过40%需针对性强化【数据】提供针对性强化练习题库,包含易错题解析与进阶题,如整数范围测试、字符串安全性检查等专题训练,帮助学生巩固基础语法知识。分层练习包含基础题(选择题)、中级题(填空题)、高级题(简答题),题目难度循序渐进,从基础语法概念到实际应用场景,如整数类型选择、字符串函数使用、数组遍历实现,确保不同水平学生都能找到匹配的练习内容,提升学习效率与兴趣【策略】通过分层练习,逐步提升学生解题能力,从基础概念掌握到复杂问题解决,建立完整的知识体系,为后续指针、结构体等进阶内容学习打下坚实基础。2026年计算机二级C语言编程习题课…分层练习与能力提…·22/30指针应用能力进阶挑战1复杂指针编程题(1题)要求实现单链表反转,提供代码模板包含节点结构体定义、头插法创建链表、反转算法伪代码提示,通过关键步骤提示帮助学生理解指针操作逻辑,如当前节点指针的调整顺序,强调反转过程中保持链表完整性【例题】实现单链表反转函数,解析指针递归与非递归两种实现方式,易错点为反转后头指针未正确指向新头节点,正确答案需确保prev与next指针正确赋值【挑战】进阶挑战要求在O(n)时间复杂度内完成,且不使用额外数据结构。2复杂指针编程题(2题)涉及二叉树遍历,如前序、中序、后序遍历的递归与非递归实现,提供树节点结构体与递归遍历模板,关键步骤提示包括栈的使用方法与节点访问顺序控制,通过错误选项如前序遍历误用后序遍历递归逻辑分析程序运行错误,解析递归调用的栈帧管理机制,强调函数调用顺序对遍历结果的影响【难点】非递归遍历需手动维护栈结构,要求学生掌握栈的基本操作,如压栈、出栈、判空等。2026年计算机二级C语言编程习题课…分层练习与能力提…·23/30指针应用能力进阶挑战(续)3复杂指针编程题(3题)要求实现内存复制算法(如memcpy),提供内存块操作模板,关键步骤提示包括指针算术运算、字节对齐检查,通过错误选项如未处理源地址与目标地址重叠问题分析数据覆盖风险,解析内存块复制的核心逻辑,强调在源地址与目标地址相邻时需逆向复制,避免破坏原有数据【易错】要求学生理解内存对齐对复制效率的影响,如结构体成员可能存在填充字节,需先对齐再复制,确保数据一致性。4分层难度设计(入门/进阶/挑战)匹配不同学习者需求,入门题如链表遍历、指针算术基础,提供完整代码与注释;进阶题如二叉树遍历、内存操作,要求部分代码补全;挑战题如链表去重、树的层序遍历,需完全自主实现,通过难度梯度引导学生逐步提升,如入门题错误率超过60%需先复习指针基础,进阶题错误率超过40%建议补充栈结构学习资料【策略】根据学生完成情况动态调整难度,如连续3次挑战题失败自动降级至进阶题,确保学习效果。2026年计算机二级C语言编程习题课…分层练习与能力提…·24/3025综合编程项目实战演练01小型项目任务(1题)要求开发图书管理系统,提供需求文档包含图书信息(书名、作者、ISBN)、功能模块(增删改查、按作者/书名搜索),模块划分建议包括数据结构设计、功能函数实现、用户交互界面,测试用例包含正常添加、删除失败、模糊搜索等场景,指导学生完成编码、调试与文档撰写全流程【项目】数据结构采用结构体数组存储…02测试用例设计包含单元测试与集成测试,单元测试覆盖单个函数功能,如图书添加函数需检查是否正确插入数组,集成测试验证模块间交互,如搜索功能是否正确调用数据库查询,通过测试用例发现潜在问题,如数组越界、空指针引用等,要求学生使用断言或日志记录测试结果,确保功能完整性【实践】测试用例需包含边界值测试,如图书信息…03编码、调试与文档撰写全流程指导,编码阶段强调代码规范,如变量命名、注释添加、头文件包含顺序,调试阶段建议使用GDB进行断点调试,分析运行时错误,文档撰写要求包含项目概述、模块设计、测试报告,通过文档记录开发过程,便于团队协作与后期维护,要求学生使用Markdown或LaTeX格式撰写文档,提升文档质量【步骤】编码时遵循…2026年计算机二级C语言编程习题课…分层练习与能力提…·25/30综合编程项目实战演练(续)4项目评审标准包含代码质量、功能完整度、测试覆盖率、文档规范性,代码质量考察变量命名、注释完整性、函数复杂度,功能完整度验证是否实现所有需求模块,测试覆盖率要求核心功能通过单元测试,文档规范性检查是否包含项目介绍、模块说明、测试用例,通过评审提升学生工程实践能力,如代码重构技巧、测试策略设计,为实际工作场景做准备【标准】评审时需结合学生答辩情况,如对设计思路的阐述、遇到的困难与解决方案,综合评估项目完成度。5综合编程项目与算法思维结合,如图书搜索模块可引入排序算法(快速排序、二分查找),分析不同算法的时间复杂度,指导学生选择合适算法提升效率,如小规模数据使用线性搜索,大规模数据采用二分查找,通过项目实践强化算法应用能力,要求学生撰写算法选择依据,如快速排序在平均情况下的O(nlogn)性能优于简单排序,但需注意数据分布对性能影响【拓展】项目完成后可扩展功能,如图书借阅管理、用户权限控制,提升项目复杂度。2026年计算机二级C语言编程习题课…分层练习与能力提…·26/3027算法思维与代码优化技巧01排序算法的时空复杂度对比是选择算法的基础,冒泡排序时间复杂度为O(n^2),空间复杂度为O(1),简单但效率低;快速排序平均时间复杂度为O(nlogn),最坏为O(n^2),空间复杂度为O(logn),适用于大数据量排序,选择时需权衡数据规模与稳定性要求。02代码优化案例中,通过减少重复计算可显著提升性能,例如在双重循环中计算平方和时,将中间结果缓存避免每次循环重新计算,可降低时间复杂度至O(n)。循环展开技术通过减少循环控制开销,将循环体部分指令直接拼接执行,适用于循环次数固定且体较小的情况,需注意增加代码体积可能影响缓存效率。03通用优化方法论强调算法设计优先,避免过度优化导致

温馨提示

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

评论

0/150

提交评论