版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算与人工智能概论问题求解、科学计算与AI应用方法第四章循环结构信息科学与工程学院1任务1:迫击炮弹运动轨迹
任务2:莱布尼兹级数求圆周率
任务3:素数判断
任务4:输出100以内的全部素数
任务5:打印等腰三角形目录2任务1:迫击炮弹运动轨迹任务描述
第3章任务1实现了对输入时间t的有效性验证。本任务继续进行改进,要求描绘炮弹在飞行期间的轨迹。具体要求如下:
已知迫击炮发射炮弹的初速度v0=50m/s,角度
=45*
/180,重力加速度g=9.8m/s2,不考虑空气阻力和落点有效区域,利用计算机模拟建立坐标系,编写程序,每隔0.1秒计算计算并输出炮弹的坐标,直至炮弹落地为止。炮弹飞行的轨迹3相关知识任务1:迫击炮弹运动轨迹
循环结构是一种程序设计结构,用于多次执行一组语句,直到某个特定条件得到满足。循环结构使得程序能够有效地重复执行相似的任务,而不必在代码中重复相同的语句。它为程序提供了灵活性和效率,使得程序能够更好地应对各种重复性任务和数据处理需求。C语言提供for循环、while循环、dowhile循环三种类型的循环结构。4for循环5for(初始化表达式;条件表达式;循环表达式){
//循环体}语法:任务1:迫击炮弹运动轨迹for循环是C语言中最常用的循环结构,特别适合处理循环次数已知的情况。for循环通过一个计数器变量来控制循环的执行过程,具有初始化、条件判断和更新三个关键部分,这三个部分都集中在循环头部,使得代码结构更加清晰。1.for循环基本语法for循环6任务1:迫击炮弹运动轨迹流程图:(1)初始化阶段。首先执行初始化表达式,通常用于设置变量的初始值,该变量被称为循环变量。初始化表达式只在循环开始时执行一次。(2)条件判断阶段。每次循环开始前,都会检查条件表达式是否为真。如果为真(非0),则执行循环体;如果为假(为0),则退出循环。通常使用循环变量构造条件表达式。(3)循环体执行阶段。执行循环体内的语句。(4)更新阶段。执行循环表达式,通常用于修改循环变量的值。(5)重复阶段。重复执行步骤(2)-(4),直到条件表达式结果为假。for循环执行流程:for循环7任务1:迫击炮弹运动轨迹//打印1到10的数字for(inti=1;i<=10;i++){printf("%d",i);}示例:下面的代码使用for循环输出1到10之间的数字,其中的变量i是循环变量,该变量在初始表达式中初始化,参与条件表达式的判断,在循环表达式中更新。(1)无限循环for循环任务1:迫击炮弹运动轨迹2.for循环特殊用法
无限循环的for语句中没有条件表达式,因此会进入无限循环。这种循环常用于服务器监听、实时系统、嵌入式设备等需要持续运行的任务。通常结合break或return等退出机制,否则程序会陷入死循环。for(;;){//无限循环体}8(2)多变量控制for循环任务1:迫击炮弹运动轨迹for循环支持同时初始化和控制多个变量,适用于需要协调多个条件的复杂场景。
通过在初始表达式、条件表达式和循环表达式部分使用“逗号运算符”,可以并行管理多个循环变量(如for(inti=0,j=10;i<j;i++,j--))。for(inti=0,j=10;i<j;i++,j--){printf("i=%d,j=%d\n",i,j);}9设计思路10任务1:迫击炮弹运动轨迹1.计算炮弹落地时间tmax
炮弹落地时间在循环控制中作为循环终止条件,控制循环的次数。根据任务要求每0.1秒输出一次坐标位置,总的循环次数为10tmax+1。
2.循环控制设计
使用for循环来模拟炮弹的运动过程:(1)初始化。定义浮点数变量t记录炮弹发射后的时间(单位为秒),并将t作为循环变量,其初值为0。(2)条件判断。在条件表达式中判断t是否小于等于炮弹落地时间tmax。(3)执行循环体。若条件表达式结果为真,在循环体中计算并输出时刻t的炮弹坐标,否则退出循环结构。(4)更新循环变量。在循环表达式中将变量t增加0.1秒,然后转到步骤(2)。设计思路11任务1:迫击炮弹运动轨迹3.循环体设计
循环体中计算当前坐标,由于使用时间t作循环变量,每次执行循环体时t值是变化的,但计算公式是相同的。循环变量正确地参与任务计算是循环结构设计的重点之一。
在本任务中,循环体在不同轮次循环中执行的计算如下所示:
在for循环结构中,循环体能够自动、高效地重复执行相同的计算任务,这一点体现了计算思维中的自动化思想。第1轮:t=0;x=v0*cos(theta)*0;y=v0*sin(theta)*0-0.5*G*0*0第2轮:t=0.1;x=v0*cos(theta)*0.1;y=v0*sin(theta)*0.1-0.5*G*0.1*0.1第3轮:t=0.2;x=v0*cos(theta)*0.2;y=v0*sin(theta)*0.2-0.5*G*0.2*0.2......代码实现12//计算炮弹轨迹00#include<stdio.h>01#include<math.h>02#definePI3.1415926503#defineg9.804intmain(){05doublev0=50.0;//初速度m/s06doubletheta=45.0*(PI/180.0);//角度弧度07doublet;//时间08doublex,y;//坐标值09doublet_max=(2.0*v0*sin(theta))/g;//计算炮弹的落地时间;10for(t=0;t<=t_max;t+=0.1){11 x=v0*cos(theta)*t;//炮弹的x坐标值12y=v0*sin(theta)*t-0.5*g*t*t;//炮弹的y坐标值13printf("炮弹在时间%.2lf秒时的坐标为:(%.2lf,%.2lf)\n",t,x,y);14}15return0;16}任务1:迫击炮弹运动轨迹代码分析13
以上代码是简单的炮弹轨迹模拟程序,通过计算炮弹在不同时间点的坐标值,模拟出了炮弹的运动轨迹。
程序的输出结果如下(省略了中间的结果):
程序第7行定义了变量t,注意t有着双重身份,即是控制循环次数的循环变量,也是用于计算炮弹坐标的时间;第9行计算炮弹落地时间tmax,该变量将在条件表达式中用于控制循环结束。
第10~14的循环结构中,循环变量t在初始化表达式中初始化为0,在条件表达式中与tmax进行比较,当t小于等于tmax时,执行11~13行的循环体,计算并输出炮弹在时刻t的坐标。任务1:迫击炮弹运动轨迹炮弹在时间0.00秒时的坐标为:(0.00,0.00)炮弹在时间0.10秒时的坐标为:(3.54,3.49)炮弹在时间0.20秒时的坐标为:(7.07,6.88)......炮弹在时间7.10秒时的坐标为:(251.02,4.01)炮弹在时间7.20秒时的坐标为:(254.56,0.54)任务1:迫击炮弹运动轨迹
任务2:莱布尼兹级数求圆周率
任务3:素数判断
任务4:输出100以内的全部素数
任务5:打印等腰三角形目录14任务2:莱布尼兹级数求圆周率任务描述
祖冲之15while循环语法:while(条件表达式){//循环体(条件为真时执行)}任务2:莱布尼兹级数求圆周率161.while循环基本语法while循环是一种基于条件表达式的循环结构,适用于不确定循环次数的场景(如读取输入、动态数据遍历等)。while循环流程图:任务2:莱布尼兹级数求圆周率17while循环执行流程:(1)条件判断阶段。先判断条件表达式是否为真。如果为真(非0),则执行循环体;如果为假(为0),则退出循环。通常在while循环结构的前面定义循环变量,然后使用循环变量构造条件表达式。(2)循环体执行阶段。执行循环体内的语句,循环体中通常包含修改循环变量的代码。(3)重复阶段。重复执行步骤(1)-(2),直到条件表达式结果为假。while循环示例:下面代码使用while循环计算1到10的和,其中的变量i是循环变量,该变量在while循环结构之前初始化为0,参与while条件表达式的判断,在循环体的最后更新。inti=1,sum=0;while(i<=10){sum+=i;i++;//必须手动更新循环变量!}printf("Sum=%d",sum);//输出55任务2:莱布尼兹级数求圆周率18while和for循环任务2:莱布尼兹级数求圆周率特性for循环while循环适用场景已知循环次数(如遍历数组)不确定循环次数(如输入验证)循环变量初始化可在for语句内初始化(inti=0)需在循环外手动初始化循环变量更新可在循环表达式内更新需在循环体内手动更新代码简洁性适合固定次数的紧凑循环适合复杂条件for循环将初始化、条件判断、循环变量更新集中在一行,适合固定次数的循环,且代码更为简洁紧凑。while循环则更加灵活,适合条件复杂或动态变化的情况。for循环与while循环的差别192.while与for循环的区别与互换while和for循环任务2:莱布尼兹级数求圆周率for循环和while循环是可以互换的。
步骤为:(1)将for循环的初始化表达式挪动到while循环结构之前;
(2)将for循环的条件表达式放入while循环语句中;
(3)将for循环的循环表达式放到while循环体的末尾。doublet=0;//循环变量的初始化前移while(t<=t_max){//循环语句中只有条件表达式x=v0*cos(theta)*t;//炮弹的x坐标值y=v0*sin(theta)*t-0.5*g*t*t;//炮弹的y坐标值printf("炮弹在时间%.2lf秒时的坐标为:(%.2f,%.2f)\n",t,x,y);t+=0.1;//循环表达式放到循环体末尾}任务1可以修改为如下形式:20do~while循环语法:do{//循环体}while(条件表达式);流程图:do-while循环首先执行循环体,再计算条件表达式。因此,do-while循环的循环体至少被执行一次。任务2:莱布尼兹级数求圆周率213、do-while循环
除了for循环和while循环,C语言还提供了第三种循环结构,即do-while循环。执行流程:三种循环语句三种循环结构比较:1、for循环:侧重在知道循环次数的情况下,计数循环;2、while循环:带条件的循环,先判断,再循环;3、do~while:带条件的循环,先执行,再判断,至少执行一次;4、三种循环可互相转换,可互相替换。任务2:莱布尼兹级数求圆周率22设计思路
23任务2:莱布尼兹级数求圆周率设计思路2.循环结构设计(1)变量初始化变量sum,用于存储部分和,初始值为0;
变量i,当前项的索引,从0开始,也是循环变量;
变量term,用于储存当前项的值,初始值为1(即a0=1);
常量epsilon,精度阈值,值为1e-8;
变量sign,用于储存当前项的符号,符号每次迭代时变成-sign。(2)循环条件
将while循环的条件表达式设置为fabs(term)>=epsilon。24任务2:莱布尼兹级数求圆周率设计思路
25任务2:莱布尼兹级数求圆周率代码实现26//莱布尼兹级数求圆周率00#include<stdio.h>01#include<math.h>02intmain()03{04inti=0;05doublesum=0,term=1,sign=1;06constdoubleepsilon=1e-8;07while(fabs(term)>=epsilon){08sum+=term;//累加到部分和09i++;10sign=-sign;//符号变化11term=sign/(2*i+1);//计算下一项12}13printf("%.8lf\n",sum*4);14return0;15}任务2:莱布尼兹级数求圆周率代码分析27以上程序通过使用循环来计算π的近似值。
程序第5行定义并初始化了三个重要变量,sum变量保存级数的“部分和”,term变量保存级数当前项的值,sign变量保存当前项的符号。
第7~12行是while循环结构,实现term的迭代和累加。第7行的条件表达式根据当前项term与精度epsilon的大小关系决定是否进行循环迭代,在第8行将term累加到sum;第9行更新循环变量,第10行更新符号,第11行更新当前项为下一项。
程序运行之后的结果为3.14159263,发现小数点后的7位都是正确的,因为定义的精度是1e-8,要提高输出结果的正确位数,可减小精度值(如1e-9),但减小精度值将使得循环次数增加。
可添加一个计数器count,在循环体中执行count++,运行后发现,精度为1e-6时,循环体会执行50万次,精度为1e-8时,会执行5000万次。这意味着两者之间时间上的差距达到100倍。可以修改精度值来观察输出结果以及运行时间。任务2:莱布尼兹级数求圆周率任务1:迫击炮弹运动轨迹
任务2:莱布尼兹级数求圆周率
任务3:素数判断
任务4:输出100以内的全部素数
任务5:打印等腰三角形目录28任务3:素数判断任务描述素数又叫质数,指的是大于1的整数中,只能被1和自身整除的正整数。素数具有以下特点:必须是大于1的正整数;只有两个正因子,即1和自身。最小的素数是2,素数有无穷个,如:2、3、5、7、11、13、17…素数在数论和计算机科学中扮演着重要的角色,因为它们有许多特殊的性质,例如在密码学和加密算法中的重要性,以及在质因数分解等问题上的应用。
编写程序,输入一个大于1的正整数i,判断其是否为素数,是素数输出“xxx是素数”,否则输出“xxx不是素数”,其中xxx是i的值。29循环的控制30在C语言中,break、continue和goto是用于控制程序流程的关键字。1.break语句break语句通常用于循环或switch语句中。
执行break语句后,程序将立即跳出循环结构,然后继续执行循环结构后面的代码。在嵌套循环中,break语句只结束最内层的循环。输出结果:1234for(inti=0;i<10;i++){if(i==5){break;//当i等于5时,终止循环}printf("%d\n",i);}
任务3:素数判断循环的控制312.continue语句
continue语句通常用于循环中,在执行时会跳过当前循环内continue语句后面的代码,并继续下一次循环的执行。
下面的代码中,循环变量i从0迭代到9,循环体中判断i如果能整除2则跳过当前循环执行下一次循环,此时不再执行循环体后面的输出语句,因此仅会输出1、3、5、7、9这些奇数。输出结果:13579for(inti=0;i<10;i++){if(i%2==0){continue;//当i为偶数时,跳过后面的输出语句}printf("%d\n",i);}任务3:素数判断循环的控制323.goto语句goto语句可以使程序直接跳转到代码中的标签处继续执行。goto语句通常被认为是一种不推荐使用的语句,因为goto语句经常使程序的流程变得难以理解和维护。在大多数情况下,应该避免使用goto语句。
下面的代码使用goto语句构造了一个循环,输出0~9之间的数字。inti=0;start:if(i<10){printf("%d\n",i);i++;gotostart;//跳转到标签start处继续执行}任务3:素数判断设计思路33任务3:素数判断
根据素数的定义,素数是大于1的整数中,只能被1和自身整除的正整数。因此,一个素数i不能被2~i-1之间的所有整数整除(对于2而言,2~2-1不构成有效区间)。反之,只要i能被2~i-1之间的任何一个整数整除,则判定i不是素数。基于以上分析,可以用如下步骤判断i是否为素数:(1)假设i是素数,定义变量is_prime=1;(2)设计循环结构,循环变量j从2循环到i-1;(3)在循环体中,判断i是否能被j整除,如果能整除,说明i不是素数,推翻假设,令is_prime=0,然后用break退出循环;(4)循环结束后,若is_prime的值为1,则i为素数,否则不是素数。代码实现34//素数判断00#include<stdio.h>01intmain()02{03inti;04intis_prime=1;//假设i为素数05printf("请输入一个大于1的正整数:");06scanf("%d",&i);07if(i<=1){08printf("输入错误!\n");09return1;10}11for(intj=2;j<=i/2;j++){12if(i%j==0){13is_prime=0;//如果j能整除i,则i不是素数14break;15}16}17if(is_prime){18printf("%d是素数\n",i);19}else{20printf("%d不是素数\n",i);21}22return0;23}任务3:素数判断代码分析35
程序第4行定义了变量is_prime且初值为1,用于假设i是素数;
第5~10行处理输入的正整数并检查输入是否合法;
第11~16行的循环结构用来验证假设是否正确,若假设正确,循环体中if结构的条件表达式将一直为假,不会执行if结构中的代码块,从而is_prime将一直保持其初始值1;若假设错误,当j是i的因子时,将执行if结构中的代码块,将is_prime赋值为0从而推翻假设。
第17~21行根据is_prime的结果进行相应的输出。任务3:素数判断任务1:迫击炮弹运动轨迹
任务2:莱布尼兹级数求圆周率
任务3:素数判断
任务4:输出100以内的全部素数
任务5:打印等腰三角形目录36任务4:输出100以内的全部素数
任务描述
素数的分布规律是数论的核心问题之一。素数在自然数中分布稀疏且不规则,研究素数的分布规律对密码学、算法优化和数学理论发展具有重要意义。截至2023年,计算机发现的最大素数是282,589,933-1,共有24,862,048位。
本任务要求以5个数字为一行,输出100以内的全部素数。37循环的嵌套38循环结构的嵌套是指在一个循环结构内部包含另一个或多个循环的结构,通常使用外层循环控制整体流程,而内层循环则处理细节。嵌套结构中,外层循环和内层循环可以是for循环,也可以是while循环或do-while循环。例如,外层循环是for循环,内层循环是while循环。for(初始化1;条件1;更新1){//外层循环while(条件2){//内层循环//循环体语句}}任务4:输出100以内的全部素数循环的嵌套39在执行嵌套循环时,外层循环首先开始执行,外层循环的每次迭代都会触发内层循环的一轮完整执行。这意味着,在外循环的每次迭代中,内循环都会被执行若干次,直到其条件不再满足。然后外层循环会继续执行,进入下一次内层循环的迭代。这个过程会一直持续,直到外层循环的条件不再满足为止。
实际中,应该谨慎使用过多层次的循环嵌套,因为过深的嵌套会导致代码难以理解和维护。任务4:输出100以内的全部素数循环的嵌套40
使用嵌套循环时,需要注意嵌套的层次,嵌套的内外层循环不能使用同名的循环变量,而并列的循环结构中可以使用同名的循环变量。
例如,下面的嵌套循环结构中,外层和内层循环分别使用不同的循环变量i和j:
下面的并列循环结构中,使用了相同的循环变量i:for(inti=1;i<=10;i++){//外层循环for(intj=0;j<i;j++){//内层循环//循环体语句}}任务4:输出100以内的全部素数for(inti=1;i<=10;i++){//循环体语句}for(inti=1;i<=15;i++){//循环体语句}设计思路41
设计一个循环结构,以i为循环变量,从2循环到99,再将任务3判断正整数i是否为素数的代码作为循环体,即可判断2~99的每一个整数是否为素数。
上述循环结构与判断素数代码的循环结构一起,构成了一个双重循环结构。
外层循环枚举了2~99之间的所有需要验证是否为素数的数字i,而内层循环则枚举i的所有可能因子j完成判断数字是否为素数的细节。具体实现步骤如下:(1)构造外层循环,循环变量i从2循环到99,外层循环枚举需要判定素数的整数;(2)构造内层循环,循环变量j从2循环到i/2,内层循环枚举i的所有可能因子;(3)内层循环的循环体通过i%j是否为0,判断i是否为素数;(4)外层循环的循环体包含整个内层循环和输出语句,输出语句在内层循环结束后根据判定结果输出素数。任务4:输出100以内的全部素数设计思路42
要实现每行显示5个素数,需要统计素数的个数。可以初始化一个计数器count=0,每找到一个素数时,输出该素数,然后令count加1。若count%5==0,则输出换行符\n,实现每行显示5个数字。任务4:输出100以内的全部素数素数问题的双重循环结构代码实现43//输出100以内的素数00#include<stdio.h>01intmain()02{03intcount=0;04for(inti=2;i<100;i++){//外循环,枚举2到99的整数05intis_prime=1;//假设i为素数06for(intj=2;j<=i/2;j++){//内循环,判断i是否为素数07if(i%j==0){08is_prime=0;//如果j能整除i,则i不是素数09break;10}11}12if(is_prime){13count++;//找到的素数数目加114printf("%-5d",i);15if(count%5==0){//每5个素数换行16printf("\n");17}18}19}20return0;21}任务4:输出100以内的全部素数
代码分析44
程序第3行定义了一个整型变量count,用于统计素数的总数。
第4~19行是外层循环,也是程序的核心框架,外层循环以循环变量i枚举2~99之间的所有整数。
程序5~11行的功能和任务3相同,先假设i是素数(令is_prime为1),然后通过一个内层循环枚举2~i/2之间的所有整数,然后在内层循环的循环体中依次检查j能否整除i,若有任意j能整除i,则推翻i是素数的假设(令is_prime为0);第12~18行统计素数总数,然后每5个素数一行进行输出。任务4:输出100以内的全部素数
2357111317192329313741434753596167717379838997
上面的程序通过使用两层嵌套的循环来查找并输出100以内的所有素数,并且每行输出5个素数。
程序的运行结果如下:任务1:迫击炮弹运动轨迹
任务2:莱布尼兹级数求圆周率
任务3:素数判断
任务4:输出100以内的全部素数
任务5:打印等腰三角形目录45任务5:打印等腰三角形任务描述
编写程序,从第一行开始循环点亮LED灯,使用符号“*”表示灯,打印下图所示由字符*构成的等腰三角形图形。
图形的高度n是程序的输入。由*构成的等腰三角形46更简单的图形下图是一个由字符*构成的矩形图形,共有7行,每行8个字符。可采用循环嵌套的方式,外层循环的循环变量i控制行数,从1到7;内层循环的循环变量j控制列数,从1到8。在每行结束时输出换行符。for(inti=1;i<=7;i++){//外循环for(intj=1;j<=8;j++){//内循环printf("*");}printf("\n");}任务5:打印等腰三角形471.矩形图形由*构成的矩形更简单的图形下图是一个由字符*构成的直角三角形图形,共有7行,每行字符数目从1个开始每行递增2个,第7行为13个字符。采用循环嵌套的方式:外层循环的循环变量i控制行数,从1到7;由于不同行输出的字符数目不同,内层循环的循环次数和行号相关。任务5:打印等腰三角形外层循环变量i每行字符数目m1123354759611713
外层循环变量i(行号)与每行字符数目m之间的关系:482.直角三角形由*构成的直角三角形更简单的图形可设计内层循环变量j,其变化区间为[1,2i-1],实现在第i行输出2i-1个字符。任务5:打印等腰三角形intn=7;for(inti=1;i<=n;i++){//外循环for(intj=1;j<=2*i-1;j++){//内循环printf("*");}printf("\n");}49设计思路任务5:打印等腰三角形外层循环变量i每行空格数目t每行字符数目m1612533454375296111
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年太原市万柏林区工会人员招聘考试模拟试题及答案详解
- 2026年长春市绿园区政务服务中心(窗口人员)招聘考试参考题库及答案详解
- 2026年宜昌伍家岗区公费师范毕业生专项招聘笔试备考题库及答案详解
- 2026山东第一医科大学第二附属医院住院医师规范化培训调剂招收4人笔试备考题库及答案详解
- 2026年广西壮族自治区百色市政务服务中心(窗口人员)招聘笔试参考题库及答案详解
- 2025年衢州市衢江区医疗系统事业编人员招聘笔试试题及答案详解
- 2025年北京市门头沟区医疗系统事业编人员招聘笔试试题及答案详解
- 2025年铜陵市狮子山区政务服务中心(窗口人员)招聘笔试试题及答案详解
- 2025年肇庆市鼎湖区政务服务中心(窗口人员)招聘笔试试题及答案详解
- 2026年苏州市虎丘区政务服务中心(窗口人员)招聘考试参考题库及答案详解
- 2025江苏苏州市昆山开发区招聘编外辅助人员29人(公共基础知识)综合能力测试题附答案解析
- 《废弃物绿色再利用碳减排量核算技术规范》征求意见稿
- 研发费用归集管理办法
- 医学检验质量安全管理培训
- 二升三语文暑假衔接作文习作指导(含范文)
- T/CNCIA 01030-2023负离子涂料
- 《卫星导航与惯性导航》课件
- 2025年浙江省慢阻肺病患者健康服务规范试题
- 电工(考评员、高级考评员)-练习题
- 律师办理刑事案件规范
- (正式版)SHT 3046-2024 石油化工立式圆筒形钢制焊接储罐设计规范
评论
0/150
提交评论