已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Fortran 90 程序设计 编译编译 器简简介 4 程序单元概念 1Fortran语言的发展 2源程序及其构成 3 语言元素 作用:把高级语言翻译成机器码,也就是常常可以看 到扩展名为EXE、COM的文件。 相同的程序代码可用不同厂商的编译器来编译,所生成 的文件也不会完全相同。编译器的好坏主要取决于编译结 果。 1.1 编译编译 器简简介 第一章 FORTRAN语言的发展简史 2.1 Fortran语言的发展简史 一、FORTRAN 含义及其适用范围 FORmula TRANslator 公式翻译器 科学和工程计算问题的程序设计语言 二、发展简史 代表性:1957 1958 FORTRAN 1962 FORTRAN 1978 FORTRAN77 1991.FORTRAN 90 1997. FORTRAN95 FORRAN95不象 FORTRAN90在 FORTRAN77添加很 多内容,只能视为90 的修正版,加强了并 行运算方面的支持 2.2 FORTRA90源程序基本结构 例:见书P15页例题2-12-22-3。 1、由若干个程序单元(位)组成: 主程序、外部子程序、模块、块数据单元 2、主程序结构 program 程序名称一般省略 声明语句部分 执行语句部分 ENDprogram 程序名称 3、END 停止运行 结束标记 书写格式 Fortran程序代码的编写格式有两种: Free Format(自由格式) 扩展名:.F90 建议所有程序全部改用自由格式来编程 Fixed Format(固定格式)本教材不采用 扩展名:.F或.FOR 书写格式 Fixed Format(固定格式) 第1个字符 如果是字母c、C或*,这一行文本会当成说明或批注 ,不会被编译。 第15个字符 如果是数字,就是用来给这一行程序代码取个代号 ,不然只能是空格。 第6个字符 如果是非0非空的任何字符,表示这一行程序会接续 上一行。 第772个字符Fortran程序代码的编写区域。 第73个字符以后 不使用这些列,语句超过该列的部分会被忽略,有 的编译器会发出错误信息。 书写格式 1.C FIXED FORMAT DEMO 2. PROGRAM MAIN 3. WRITE (*,*) HELLO 4. WRITE (*,*) 5. 1HELLO 6.100 WRITE (*,*)HELLO 7.10 STOP 8. END 程序代码命令之间的空格,不会有任何意义。FIXED FORMAT是为了配合早期使用穿孔卡片输入程序所发明的格式。 Free Format(自由格式) 基本上允许非常自由的编写格式,它没有规定每一 行的第几个字符有什么作用,但要注意: 1.!感叹号后面的文本都是注释。 2.每行可以编写132个字符。 3.行号放在每行程序的最前面。 4.一行程序代码的最后如果是符号”分隔 一个语句可分行写,读行标记为&(放在尾部),但如为 关键字,首尾均加&。 最多可有511个续行。 例 pro& &gram main 书写格式 空格:关键字、变量、常量内部不能用空格,但相邻两者之间 须用空格 语句前标号仅用于标识一个语句,与运行顺序无关。 语句有位置规定 说明语句必须出现在可执行语句之前,格式说明语句( FORMAT语句)除外。 书写格式 2.3 语言元素 Fortran90的语言元素是指在程序设计中所用到的基本 成分,例如字符集、常量、变量、记号以及其它的基本结构等 。只有了解并掌握了这些基本要素,才可能正确自如地使用该 种语言。 2.3.1 FORTRAN90字符集: 编写Fortran90程序时,所能使用的所有字符及符号。 AZ(az)程序中不区分大小写 26个 在大多数处理系统中允许使用小写字母,除了字符 串内的字符外,小写字母等价于相应的大写字母。 09 10个 空格 = + - * / ( ) , : . $ 22个 _(下划线)、!、”、%、&、;、=1) 实数:存储7位有效数字。如:2.300000 上溢:overflow 下溢:当0处理 4. 实数种别为8时常量的表示(双精度数) 有效位:15位; 数字部分De 例:0D0 Fortran的数据类型 3.复数(COMPLEX) 复型常数又叫复数。具有数学复数的近似值值。在科学和工程计计算中被 广泛用到。复数是实实数的有序对对,将两个实实数中间间用逗号分隔,然后再放 在一对对括号中就构成了一个复数。 复数以a+bi的形式来表示数值值,复数中的a、b称为实为实 部和虚部。可 为实为实 数,也可为为整数。 Complex(4)(默认认) 例: Complex(4):b Complex(8) 双精度 Complex(8):c,d,e 常量: 符号(实实部_kind_Value,虚部_kind_Value) 例:f=(1,2.0_8) Fortran的数据类型 复型常量的表示: 数学 2+3i 一般形式:(实实部系数,虚部系数) 一对对常量 整 实实 错错例:(1.0/2,3)正例:6i,(0,6) 当复数的实实部或虚部为变为变 量或表达式进进行赋值时赋值时 ,必 须须使用CMPLX()函数。 FORTRAN90 (2,3) Fortran的数据类型 4.字符(CHARACTER) 计算机除了存储数字之外,也可以在内存中记录一段文本,字符类型可 以记录的东西非常广,从键盘输入的任何东西,不论是数字、文本或任何特 殊符号,它都可以记录,只记录一个字母、符号时的数据类型称为“字符”, 记录一连串的字符时,就称为“字符串”,记录一个西文字符需要一个字节的 存储空间。一个汉字为两个字节的存储空间。 kind 指明计算机系统支持的字符种类. 字符常量:例:ASCII_”abcde” !kind值放在常量前面 例:Character(LEN=10,kind=GREEK):Greek_word len=10可以直接写为10 或缺省长度为1; 如只有一个没有命名的参数,一定是长度整数 Fortran的数据类型 字符常量的表示: 一串字符或“一串字符”(双引号) 空格 算一个 “ 算一个 起止界不算 长长度可为为0 字符中含改写为为 abcd 长长度: 字符的个数 注: 区分字符大小写 a A 空格有效 a b ab Fortran的数据类型 5.逻辑判断(LOGICAL) 逻辑判断只能保存两种逻辑结果,分别为“true”和“false”。 LOGICAL(_kind_value) LOGICAL(1) LOGICAL(2) LOGICAL(4)(默认,值存储在第一个字节中) 对数据的二进制最低位进行判断,如果为1,则接受为真 ,否则接受为假。 Fortran的数据类型 2.3.4 名字 对于名字有下列要求: 1.名字的长度不能超过31个字符 2.名字的组成成分可以是字母、数字和下划线 3.名字的第一个字符必须是字母 4.在名字中不能出现空格 提倡使用具有一定含义的名字,提高程序的清晰度和可 读性。 1、定义义:程序运行过过程中值值可变变化的量 2、命名的规则规则 字母、数字、下划线组线组 成 字母开头头 长长度1-31个 错错例 3A 、 x-3 、3.14 、A3 $ 2.3.5 变量 3、变变量含义义:实际实际 是内存中的一个存储单储单 元,存放 变变量的值值。 特性:取之不尽,一冲就跑,总总采用当前值值参与运算 。 例:A=2.0 A B B=3.0 A=A+B 5.0 15.0 B=A*B 注:A、B必须须有确定值值,如未定义义,值值不可预测预测 (有时时按0处处理) 2.0 3.0 4、变量类型:基本类型有五种,同常量 I-N规则(隐式说明):在程序变量名中,凡以字母I、J、K 、L、M、N六个字母开头的变量为整型变量。 implizcit none 可以取消I-N规则。 五种变量的类型说明关键字: 整型:INTEGER 实型: REAL 复型:COMPLEX 逻辑型:LOGICAL 字符型:CHARACTER 待说明的变量放在后面,中间用双分隔符:隔开,对于同时 说明多个变量,变量之间用逗号分隔。 Fortran90关于变量说明的新功能: 1.在变量说明的同时,可以给变量赋初值。 INTEGER:I=5,J=126 REAL:X=7.2,Z,W=774.2 2.在说明变量的同时也可说明其种别 3.在说明变量的同时,还可说明变量的属性 INTEGER,PARAMETER:I=5,J=123 REAL,DIMENSION(1:10):A 2.3.6 派生数据类型 根据需要而由基本数据类型定义新的数据类型。在一个派 生类型中可包含多个基本类型。 如: TYPE STUDENT (定义开始) CHARACTER(LEN=20):DEPARTMENT CHARACTER(LEN=10):CLASS CHARACTER(LEN=15):NAME INTEGER:NUMBER (成员定义) END TYPE STUDENT (定义结束) 派生类型变量的定义: TYPE(STUDENT):PERSON 变量的赋值: PERSON=(”COMPUTER”,”92_2”,”LI LIN”,21) 成员的表示: PERSON%CLASS=“92_2” PERSON%NAME=“LI LIN” 2.3.7 基本类型数组 数组是具有相同类型的元素的有序集合。数组在使用之前必须说明。 数组的说明: INTEGER,DIMENSION(1:50):X ;数组名为X,类型为整型,元素个数为50。 INTEGER,DIMENSION(5,3):B ;数组名为B,类型为整型,元素个数为5*3个 维界:1:50 上界:下界 缺省下界为1 数组中元素的个数称为它的大小,维数称为秩,每维中元素的个数称 为维的长度,长度的序列称为形。 数组的引用: 通过指定下标值的办法来实现。下标值可为整数或整型表 达式。下标值不能越界,个数必须与数组的秩相等。 注意:1.允许对数组名进行运算。 2.允许对数组片段进行操作。 所谓数组片段是指数组中某些连续元素的重新组合。数组 片段也是一个数组。 2.3.8 字符子串 字符型常量又叫字符串。一个字符串的一部分称为子字符 串或字符子串。 字符数组: CHARACTER(LEN=1),DIMENSION(80):ROW 引用: ROW(I) 字符串: CHARACTER(LEN=80):ROW 引用: ROW(I:I);ROW(4:7) 特殊:ROW(:I) 相当于 ROW(1:I) ROW(I:) 相当于 ROW(I:80) ROW(:) 相当于 ROW(1:80) 特定长度字符数组: CHARACTER(LEN=80),DIMENSION(25):ROWC 引用:ROWC(I)(J:J) 2.3.9 数据对象和子对象 由一个名引用的对象: 有名标量 有名数组 由子对象标志符引用的子对象是: 数组元素 数组片段 结构分量 子串 2.4 程序单元概念 程序单元是FORTRAN语言的基本成分。程序单元可以 是主程序、子程序、模块或块数据程序单元。子程序可以是 函数子程序或子例行子程序。模块包含的说明是对其它的程 序单元形成可访问性。块数据单元用来对有名公用区中的数 据对象赋初值。(F90中不提倡使用) 2.4.1 主程序 主程序是不包含SUBROUTINE、FUNCTION、MODULE或 BLOCK DATA语句作为其第一条语句的程序单元。 主程序的可执行部分不能包含有RETURN语句或者ENTRY语句。 程序名对可执行程序是全局的,而且不得于该可执行程序中的任何 其它程序单元名、外部过程名或公用块名相同,也不得于主程序内的任 何局部名相同。 在主程序的作用范围内的说明不得包含OPTIONAL语句、 INTENT语句、PUBLIC语句或它们的等价属性,在主程序内SAVE语 句不起作用。 主程序内的任何内部过程的定义必须跟在CONTAINS语句之后。 2.3.2 子程序 子程序是可以完成某一独立算法或功能的程序单元 ,但它功能的具体体现要通过主程序(或子程序)的调 用来实现。 按子程序与主程序的位置关系分为内部过程和外部 过程。 内部过程可以出现在主程序、外部过程或模块内。 2.4.3 模块 模块也是一种在程序单元之外独立编写的程序单元。它有独 特的形式,即模块程序单元内没有可执行语句,除了说明语句外 ,最多包含内部过程。模块的主要作用是供其它程序单元引用。 程序单元引用模块,实际是将模块内的全部语句复制到本程 序单元。模块的引用采用语句: USE 模块1,模块2, 2.4.4 块数据程序单元 块数据程序单元对有名公用块内的数据对象提供 初值。 由于块数据程序单元赖以支持的COMMON语句 和DATA语句在F90中已成为过时特性,因此,不提 倡使用块数据程序单元。 2004年4月45/149 GNU Compiler GNU Compiler 自由软件,一般操作系统都自带 支持C/C+、Fortran77、Java、COBAL等等许多语 言 支持大部分硬件平台 高性能计算中常用的: C/C+:GCC (GNU C/C+ Compiler) Fortran 77:G77 不支持Fortran 90/ 95 不支持OpenMP 是最常用的编译器,性能一般(相对于一些针对特定平 台优化的编译器) 由于缺少对Fortran 90/ 95,限制了其在高性能计算中 的使用 2004年4月46/149 PGI Compiler PGI Compiler 由Portland公司开发的编译器 支持AMD Opteron/Althon处理器、Intel Xeon处理器等, 在Opteron上同时支持32-bit和64-bit() 支持Linux、Windows 支持C/C+(pgcc)、Fortran77(pgf77)、Fortran90/95 (pgf90)、HPF(High Performance Fortran) 支持多线程和OpenMP 最新版本:10.1 需要购买,但可以从网上得到15天试用版本 2004年4月47/149 Intel Compiler Intel Compiler 由Intel公司针对Intel处理器开发(Xeon、Pentium) 支持Linux、Windows 支持C/C+(icc:Intel C/C+ Compiler)、 Fortran77/90/95(ifc: Intel Fortran Compiler) 支持多线程和OpenMP 需要购买,但可以从网上得到30天试用版本 /software 2004年4月48/149 编译优化 编译优化对于计算密集型程序的性能提高非常帮助 优化消耗CPU资源最多的那部分,即计算密集部分 一般采用-O2、-O3 可以采用SIMD指令集,eg: Intel和AMD处理器的MMX 、SSE1、SSE2 具体编译优化的选项和编译器以及CPU相关,参见编译 器手册 对于有些应用程序,过分的优化会导致计算结果错误 2004年4月49/149 编译优化 在双路Intel Xeon平台上,采用SSE2优化和不采用 SSE2优化,所获得的HPL性能。 在这种情况下,采用SSE2技术得到的性能高出近90 2004年4月50/149 编译简介 在Linux系统中,可执行文件没有统一的后缀, 系统从文件的属性来区分可执行文件和不可执 行文件 大部分编译器通过后缀来区别输入文件的类别 ,下面来介绍常用的一些后缀 .c:C语言源代码文件 .f:Fortran 77语言源代码文件 .o:编译后的目标文件 .a:由目标文件构成的档案库文件 .C、.cc、.cxx:C+源代码文件 .f90:Fortran 90语言源代码文件 .h:程序所包含的头文件 2004年4月51/149 基本的用法 cc/f77/f90 options filenames 编译器名 编译参数 编译文件 其中options就是编译器所需要的参数,filenames给出相 关的文件名称 2004年4月52/149 常用编译参数 -c:只编译,不连接成为可执行文件,编译器只是由输入的.c/.f等源代 码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序 文件。 -o output_filename:确定输出文件的名称为output_filename,同时这 个名称不能和源文件同名。如果不给出这个选项,就给出预设的可执行 文件a.out -g:产生符号调试工具所必要的符号资讯,要想对源代码进行调试,我 们就必须加入这个选项。 -O:对程序进行优化编译、连接,采用这个选项,整个源代码会在编译 、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提 高,但是,编译、连接的速度就相应地要慢一些。 -O2、-O3、-O4:比-O更好的优化编译、连接,当然整个编译、连接过程 会更慢。(具体和编译器相关) 2004年4月53/149 常用编译参数 -Idirname:将dirname所指出的目录加入到程序头文件目录 列表中,是在预编译过程中使用的参数。C程序中的头文件 包含两种情况: A)#include B)#include “myinc.h” 其中,A类使用尖括号(),B类使用双引号(“ ”)。对于 A类,预处理程序cpp在系统预设包含文件目录(如 /usr/include)中搜寻相应的文件,而对于B类,cpp在当前 目录中搜寻头文件,这个选项的作用是告诉cpp,如果在当 前目录中没有找到需要的文件,就到指定的dirname目录中 去寻找。在程序设计中,如果我们需要的这种包含文件分别 分布在不同的目录中,就需要逐个使用-I选项给出搜索路径 。 2004年4月54/149 常用编译参数 -Ldirname:将dirname所指出的目录加入到程序函数 档案库文件的目录列表中,是在连接过程中使用的参 数。在预设状态下,连接程序ld在系统的预设路径中( 如/usr/lib)寻找所需要的档案库文件,这个选项告诉 连接程序,首先到-L指定的目录中去寻找,然后到系 统预设路径中寻找,如果函数库存放在多个目录下, 就需要依次使用这个选项,给出相应的存放目录。 -lname:在连接时,装载名字为“libname.a”的函数库 ,该函数库位于系统预设的目录或者由-L选项确定的 目录下。例如,-lm表示连接名为“libm.a”的数学函数 库。 上面我们简要介绍了编译器最常用的功能和主要参数 选项,更为详尽的资料可以参看Linux系统的联机帮助 。 2004年4月55/149 GCC应用举例 1.gcc hello.c生成a.out 2. gcc o hello helo.c生成hello 3. gcc O o hello hello.c 生成hello 4. gcc O2 o hello hello.c 生成hello 5. gcc c hello.c生成hello.o gcc o hello hello.o生成hello 6. gcc c hello1.c生成hello1.o gcc c hello2.c生成hello2.o gcc o hello hello1.o hello2.o 生成hello 7. gcc o test test1.o lm I/home/czn/include MPI的安装 安装: #tar -xzvf mpich-1.2.6.tar.gz #cd mpich-1.2.6 #./configure -with-device=ch_p4 -prefix=/usr/local/mpich-1.2.6 #make #make install 环境变量设置 #vi /etc/profile 加入下面的行 export MPI_ROOT=/usr/local/mpich-1.2.6 export PATH=$MPI_ROOT/bin:$PATH export MANPATH=$MPI_ROOT/man:$MANPATH #source /etc/profile MPI的使用 mpirun的基本格式为: mpirun mpirun-options options 其中 mpirun-options, 主要选项如下: -np 要加载的进程个数,系统读machines.LINUX的内容 -p4pg 按照p4file文件中的要求加载用户进程 -machinefile 按照machinesfile文件中的节点名个数加载进程 p4file文件 该文件的格式为: 第一行: 第二行: 第 n行: 其中n为用户要加载进程的个数。结点名可以相同,也可以不同。且用户使用此 选项后, -np选项无效。 machines.LINUX文件和machinefile文件内容: nodeX:Y . nodeZ:W X-Z:机群节点名(系统名字)比如节点1-20 Y、W节点名对应的CPU个数 MPI使用简例 最简单的运行一个MPI应用程序的例子是: #mpirun -np 4 a.out, #mpirun machinefile machinefile a.out #mpirun p4pg ./p4file a.out 它将在并行机上加载个用户执行程序 一般情况下最好用-p4pg选项,p4file文件包含有关进程在哪些节点 上运行的信息。如你已登录到节点node1, 并用4个节点执行你的并 行程序 a.out, 执行文件的全路径 /public/user1/example/a.out, 则p4file内容如下: node1 0 /public/user1/example/a.out node2 1 /public/user1/example/a.out node3 1 /public/user1/example/a.out node4 1 /public/user1/example/a.out 执行命令为: # mpirun -p4pg ./p4file a.out MPI应用层优化 OMPI /public/openmpi-1.3-pgi/bin/mpirun -np 64 -mca btl openib,self,sm -mca btl_openib_max_btls 20 -mca btl_openib_rd_num 128 -mca btl_openib_rd_low 75 -mca btl_openib_rd_win 50 -mca btl_openib_max_eager_rdma 32 -mca mpool_base_use_mem_hooks 1 -mca mpi_leave_pinned 1 -machinefile ./ma ./vasp.pgi.7 MPI for PGI 下载mpich.tar.gz 解压 tar zxvf mpich.tar.gz 进入mpich目录执行: #export CFLAGS=“-fast“ #export CXXFLAGS=“-fast“ #export FFLAGS=“-fast“ #export F90FLAGS=“-fast“ #export LDFLAGS=“-fast“ #export OPTFLAGS=“-fast“ #export CC=“pgcc“ #export CXX=“pgCC“ #export F90=“pgf90“ #export FC=“pgf77“ #export CPP=“pgCC -E“ #./configure -prefix=/usr/local/mpich-pgi #make #make install MPI for PGI 设置环境变量 #vi /etc/profile 加入下面的行 export MPI_ROOT=/usr/local/mpich-pgi export PATH=$MPI_ROOT/bin:$PATH export MANPATH=$MPI_ROOT/man:$MANPATH #source /etc/profile MPI for intel Compiler 将mpich解压后,进入mpich目录执行: #./configure -with-device=ch_p4 -prefix=/usr/local/mpich- intel cc=icc fc=ifort c+=icpc f90=ifort #make #make install 设置环境变量相关 #vi profile 添加: export MPICH_ROOT=/usr/local/mpich-intel export $PATH=$MPICH_ROOT/bin:$PATH export $MANPATH=$MPICH_ROOT/man:$MANPATH 执行#source /etc/profile即可 一、引子 在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了 计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、 字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方 将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采 用的字节存储机制主要有两种:big-edian和little-endian。 为了叙述方便,下面先对本文中将要用到的两个术语做简单的定义。 1、MSB MSB是Most Significant Bit/Byte的首字母缩写,通常译为最重要的位或者最 重要的字节。它通常用来表明在一个bit序列(如一个byte是8个bit组成的一个序 列)或者一个byte序列(如word是两个byte组成的一个序列)中对整个序列取值影 响最大的那个bit/byte。 2、LSB LSB是Least Significant Bit/Byte的首字母缩写,通常译为最不重要的位或 者最不重要的字节。它通常用来表明在一个bit序列(如一个byte是8个bit组成的 一个序列)或者一个byte序列(如word是两个byte组成的一个序列)中对整个序 列取值影响最小的那个bit/byte。 二、endian的来由 1、Definition endian: The ordering of bytes in a multi-byte number. 定义:在计算机系统体系结构中用来描述在多字节 数中各个字节的存储顺序。 三、各种endian 1、big-endian A computer architecture in which, within a given multi-byte numeric representation, the most significant byte has the lowest address (the word is stored “big-end-first“). Most processors, including the IBM 370 family, the PDP-10, the Motorola microprocessor families, and most of the various RISC desi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 附着式升降脚手架专项施工方案
- 服装设计企业预算管理方案
- 房屋建筑与装饰工程竣工验收报告
- 地质队防治水现场作业指导规范
- 安全培训教育管理制度
- 2026年四川省自贡市单招职业技能考试题库及完整答案详解【易错题】
- 2027年豫宁专修高职学院高职单招职业技能考试模拟试卷(预热题)附答案详解
- 2024年南昌赣江产业职业学院高职单招职业技能考试题库(各地真题)附答案详解
- 2027年郑州体育职业学院高职单招职业技能考试题库及参考答案详解(B卷)
- 2025年唐山智能制造职业学院高职单招职业技能考试模拟试卷附完整答案详解【夺冠】
- 2026年内蒙古高考(化学)真题试卷带答案
- 蓬溪县国有资产监督管理局 面向社会公开招聘国有企业工作人员的(10人)考试备考题库及答案详解
- 绍兴市城市发展集团有限公司招聘考试笔试试题
- 2026年招标采购从业人员《招标采购专业实务(初级)》考试真题(附答案解析)
- 2026烟台辅警笔试题库
- 上海市河道维修养护管理技术规程
- 2026年高考全国二卷英语考试题目及答案
- 2026金华兰溪市机关事业单位编外招聘20人笔试参考题库及答案解析
- 2025年华东政法插班生笔试及答案
- 精神科患者噎食应急预案演练脚本
- 塔吊安装、使用、拆卸监理实施细则
评论
0/150
提交评论