版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Visual C+语言实验报告 专业班级: 电气工程及其自动化 实验一 熟悉 Visual C+程序调试方法 一、实验目的(1) 熟悉Visual C+ 6.0 开发环境;(2) 掌握在Visual C+ 6.0 开发环境调试程序的方法。二、实验内容(1) 创建三个项目,项目类型分别为:Win32 Console Application、Win32Application 和MFC AppWizard(exe),分别编译运行各个程序,观察各种项目类型程序的特点。(2) 创建一个Win32 Console Application 类型的项目,输入下面的代码,按照要求对代码进行调试。说明:下面的程
2、序求1001000 以内的水仙花数,所谓水仙花数就是一个三位的整数,其个位数字、十位数字和百位数字的立方和等于该数本身的值,则这个数称为水仙花数。#include "iostream.h"#include "math.h"void narcissus(); / 求水仙花数void main()narcissus();void narcissus()int x1; / 百位数字int x20; / 十位数字个位数字 int x2; / 十位数字int x3; / 个位数字int count = 0; / 找到的水仙花数的总数for(int x=100; x
3、<1000; x+)x1 = x/100;x20 = x%100;x2 = x20/10;x3 = x20%10;if(x1*x1*x1+x2*x2*x2+x3*x3*x3 = x)count+;cout<<"One narcissus number found:"<<x<<endl;cout<<"The total number of narcissus numbers is:"<<count<<endl;调试要求: 1、在程序代码的 main 函数中设置
4、断点,启动程序执行到断点处停止; 2、在函数 narcissus 调用处进入函数内部,跟踪函数执行的过程; 3、单步执行程序,观察各个变量值的变化情况; 4、单步执行若干步后,跳出函数体,回到 main 函数。三、实验要求(1) 观察三种项目类型对应的程序特点,做出简要说明;(2) 列出C+程序清单,以及程序的运行结果;(3) 记录调试过程中变量值的变化情况;(4) 在Visual C+ 6.0 中如何进行程序的跟踪调试;(5) 总结实验的心得体会,实验中遇到的困难以及解决的方法等。四、实验步骤1、观察三种项目类型对应的程序特点,做出
5、简要说明; 三者都是工作在32位Windows环境下的程序。 (1)Win32 Console Application 创建Win32控制台应用程序Win32 Console Application(win32控制台应用程序)往往是像MS-DOS窗口(XP 中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它,它与纯dos程序区别是:它是32位的; 或者叫CUI(Character User Interface字符用户接口)。 console程序以main()为入口,不能使用win32 API函数。 (2)Win32Application 创建Win32应用程序
6、Win32Application 是普通的常见的窗口应用程序,有的界面做得比较个性化,比如圆形的、不规则形状的 它们都是所谓的GUI(Graphics User Interface图形用户接口),我们可以通过鼠标点击来完成控制。该系统环境是为开发windows应用程序所准备的,程序以WinMain()为入口,能够使用win32 API函数。(3)MFC AppWizard(exe) 创建MFC可执行程序MFC程序向导,微软为了减轻开发人员的工作负担,推出了MFC,MFC其实是一个框架,里面包含了200多个类,MFC比较复杂,MFC框架把基本的功能都实现了,我们只是需要把自己特殊的功能加到MFC
7、里面, 比如你想建一个windows窗口,MFC APPWIZARD下,MFC中自包含了CWnd串口类,但是win32 application,就是要你自己写一个窗口类,才能用。2、 列出C+程序清单,以及程序的运行结果。 程序清单见实验内容; 程序运行结果为:3、 记录调试过程中变量值的变化情况。 程序调试时变量值的变化情况为:4、 在Visual C+ 6.0 中如何进行程序的跟踪调试。按F5键进入调试模式,通过使用F9来设置断点,然后可以用F10,F11来进行想要的单步调试或快速调试,用shift+F5退出调试模式。在程序代码的 main 函数中设置断点,启动程序执行到断点处停
8、止在函数 narcissus 调用处进入函数内部,跟踪函数执行的过程按F5然后按F11。F9:添加/去除断点 F5:进入调试模式 F10:跳步执行当前语句、函数 F11:单步执行5、 实验中遇到的困难以及解决的方法。在实验开始时将程序考到工作空间中,运行后一直有错误,错误显示如下: error LNK2001: unresolved external symbol _WinMain16经检查是工程建错了,应该是建win32 console application(32位控制台应用程序),而我建的是Win32 Application ,出现错误的原因是WinMain 是Windows 程序的入口
9、,而我又写了一个main 函数,编译的时候就报错了。 而如果工程名为MFC AppWizard(exe)时错误为:fatal error C1010: unexpected end of file while looking for precompiled header directiveGenerating Code.解决方案1: 右键单击项目工程中的cpp文件,在菜单Project->Settings->C/C+->Precompile Header,设置为第一项:Not using precompile headers。解决方案2:在.cpp文件开头添加包含文件stda
10、fx.h。 #include"stdafx.h"5、 实验总结通过本次试验我熟悉了Visual C+ 6.0 开发环境;掌握了在Visual C+ 6.0 开发环境调试程序的方法;了解了Win32 Console Application、Win32Application 和MFC AppWizard(exe)三者的不同之处;同时进一步巩固了单步调试的步骤和方法,为以后的编程练习打下了基础。补充内容:程序调试操作类型功能键 对应菜单 含义Ctrl+F5 Build | Run exe 运行当前项目F7 Build | Build exe 建立可执行程序F5 Build | S
11、tart Debugging 启动调试程序F5 Debug | Go 继续运行F11 Debug | Step into 进入函数体内部ShiftF11 Debug | Step out 从函数体内部运行出来F10 Debug | Step Over 执行一行语句F9 设置/清除断点CtrlF10 Debug | Run to cursor 运行到光标所在位置Shift Debug | Quick Watch 快速查看变量或表达式的值Shift Debug | Stop Debugging 停止调试 实验二 熟悉Windows 源程序基本结构一、实验目的(1) 熟悉Visual C+ 6.0
12、开发环境;(2) 熟悉Windows 系统事件驱动的运行机制;(3) 熟悉Windows 应用程序源程序基本结构;二、实验内容创建一个空白的 Win32 Application 应用程序,建立相关文件,手工输入下列代码,实现一个Windows 窗口程序。#include "windows.h"LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae,WPARAM wParam,LPARAM lParam);/以下初始化窗口类int WINAPI WinMain (HINSTANCE hThisInst, HINSTANCE hPrevI
13、nst,LPSTR lpszCmdLine, int nCmdShow)WNDCLASS ws;HWND hWnd;MSG msg;ws.style = 0; /窗口类型为默认类型ws.lpfnWndProc = WndProc; /窗口处理函数为WndProcws.cbClsExtra = 0; /窗口类无扩展ws.cbWndExtra = 0; /窗口实例无扩展ws.hInstance = hThisInst; /当前实力句柄ws.hIcon = LoadIcon(NULL, IDI_HAND); /窗口最小化图标ws.hCursor = LoadCursor(NULL,IDC_CROSS
14、); /窗口箭头光标ws.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); /窗口背景为白色ws.lpszMenuName = NULL; /窗口中无菜单ws.lpszClassName = "DemoClass" /窗口类名/以下进行窗口类的注册if(!RegisterClass(&ws) return -1; /创建窗口hWnd = CreateWindow("DemoClass","My First Windows Program", /窗口类名,窗口实例名WS_
15、OVERLAPPEDWINDOW,100,200,640,480, /窗口位置及高和宽NULL,NULL,hThisInst,NULL); /无父窗口,无主菜单,创建此窗口应用程序的当前句柄,不使用该值ShowWindow(hWnd,nCmdShow); /显示窗口UpdateWindow(hWnd); /绘制用户区while(GetMessage(&msg,NULL,0,0) / 消息循环TranslateMessage(&msg);DispatchMessage(&msg);return msg.wParam; /程序终止时将信息返回系统LRESULT CALLBA
16、CK WndProc(HWND hwnd,UINT messgae,WPARAM wParam,LPARAM lParam)switch(messgae)case WM_DESTROY:PostQuitMessage(0); /调用PostQuitMessage发出WM_QUIT消息break;default: / 默认时采用系统消息默认处理函数return DefWindowProc(hwnd,messgae,wParam,lParam);return 0;三、实验报告(1) 列出源程序清单,以及程序的运行结果;程序清单见实验内容;运行结果为:(2) 总结Windows 源程序的结构特点,说
17、明各个主要程序段的作用; Windows 源程序主要结构由WinMain 和WinProc 两个函数构成,其中WinMain是入口函数,函数名称和参数都是固定的,WndProc 是窗口函数,其函数名称可由用户自行定义,但是参数是固定的。WinMain 函数的主要功能如下:(1)注册窗口类,建立窗口及执行其他必要的初始化工作。(2)建立窗口及执行必要的初始化,包括窗口类的定义、注册、创建窗口实例、显示窗口四部分。(3)消息循环,Windows应用程序的运行以消息为核心。进入消息循环,根据接收的消息调用相应的处理过程,当消息循环检索到WM_QUIT 时终止程序运行。Windows 的消息循环(I)
18、Windows 系统为应用程序保持一个消息队列。(II)当有事件发生后,Windows 先将激发事件翻译成一个Windows 消息,然后再把这个消息加入到这个应用程序的消息队列中去。(III)应用程序需要通过消息循环来接收这些消息。常见的消息循环代码如下:MSG msg; / 定义MSG 变量while (GetMessage (&msg, NULL, 0, 0)TranslateMessage (&msg) ; / 翻译消息DispatchMessage (&msg) ; / 分发消息窗口函数WndProc 定义了应用程序对接收到的不同消息的响应,包含了对各种可能接收
19、到的消息的处理过程。WndProc 函数由一个或多个switch 语句组成,每一条case 语句对应一种消息,当应用程序接收到一个消息时,相应的case 语句被激活并执行相应的响应程序模块。(3) 总结实验的心得体会,实验中遇到的困难以及解决的方法等。通过此次上机实验,进一步熟悉了熟悉Visual C+ 6.0 开发环境,了解了Windows 系统事件驱动的运行机制,同时也熟悉Windows 应用程序源程序基本结构,学习了其主程序段的作用。实验三 Windows 图形绘制编程实验一、实验目的(1) 熟悉Visual C+ 6.0 开发环境;(2) 掌握Windows 图形输出的方法;(3) 理
20、解设备环境、画笔、画刷的概念,掌握常用的绘图函数。二、实验内容请编写程序,要求如下:(1) 定义一支黄色画笔,绘制一条线段;(1) 定义一支紫色画笔,绘制一条多段线;(3) 定义一支红色画笔,绘制一个正方形,并用适当的画刷填充图形内部;(4) 定义一支绿色画笔,绘制一个圆,并用适当的画刷填充图形内部;(5) 定义一支蓝色画笔,绘制一个正六边形,并用适当的画刷填充图形内部。三、实验报告(1)程序代码清单#include "windows.h"LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae,WPARAM wParam,LPARAM
21、 lParam);int WINAPI WinMain (HINSTANCE hThisInst, HINSTANCE hPrevInst,LPSTR lpszCmdLine, int nCmdShow)WNDCLASS ws;HWND hWnd;MSG msg;ws.style = 0;ws.lpfnWndProc = WndProc;ws.cbClsExtra = 0;ws.cbWndExtra = 0;ws.hInstance = hThisInst;ws.hIcon = LoadIcon(NULL, IDI_HAND);ws.hCursor = LoadCursor(NULL,IDC_
22、CROSS);ws.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);ws.lpszMenuName = NULL;ws.lpszClassName = "DemoClass"if(!RegisterClass(&ws)return -1;hWnd = CreateWindow("DemoClass","My First Windows Program",WS_OVERLAPPEDWINDOW,100,200,640,480,NULL,NULL,hThisInst,NUL
23、L);ShowWindow(hWnd,nCmdShow);UpdateWindow(hWnd);while(GetMessage(&msg,NULL,0,0)TranslateMessage(&msg);DispatchMessage(&msg);return msg.wParam;LRESULT CALLBACK WndProc(HWND hWnd,UINT messgae,WPARAM wParam,LPARAM lParam)HDC hdc;/设备句柄HBRUSH hbrush;/定义画刷句柄HPEN hPen;/定义画笔句柄HPEN hPenOld;/定义画笔句
24、柄PAINTSTRUCT PtStr;/定义包含绘图信息的结构体变量 POINT pts5; pts0.x = 300; pts0.y = 20; pts1.x = 400; pts1.y = 20; pts2.x = 350; pts2.y = 120; pts3.x = 250; pts3.y = 120; pts4.x = 340; pts4.y = 50; POINT pts16; pts10.x = 760; pts10.y = 200; pts11.x = 900; pts11.y = 200; pts12.x = 970; pts12.y = 321; pts13.x = 900
25、; pts13.y = 442; pts14.x = 760; pts14.y = 442; pts15.x = 690; pts15.y = 321;switch(messgae)case WM_PAINT: hdc=BeginPaint(hWnd,&PtStr); SetMapMode(hdc,MM_ANISOTROPIC); hPenOld=(HPEN)GetStockObject(BLACK_PEN); /直线 hPen=CreatePen( PS_SOLID,3,RGB(255,255,0) ); hPenOld=(HPEN)SelectObject(hdc,hPen); M
26、oveToEx(hdc,100,50,NULL); LineTo(hdc,250,300); /折线 hPen=CreatePen( PS_SOLID,3,RGB(255,0,255) ); hPenOld=(HPEN)SelectObject(hdc,hPen); Polyline(hdc,pts,4); /填充正方形 hPen=CreatePen( PS_SOLID,3,RGB(255,0,0) ); hPenOld=(HPEN)SelectObject(hdc,hPen); hbrush=(HBRUSH)GetStockObject(BLACK_BRUSH); SelectObject(
27、hdc,hbrush); Rectangle(hdc,300,300,400,400); /填充圆 hPen=CreatePen( PS_SOLID,3,RGB(0,255,0) ); hPenOld=(HPEN)SelectObject(hdc,hPen); hbrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH); SelectObject(hdc,hbrush); Ellipse(hdc,500,50,700,250);/填充正六边形 hPen=CreatePen( PS_SOLID,3,RGB(0,0,255) ); hPenOld=(HPEN)Selec
28、tObject(hdc,hPen);/ hbrush=CreateSolidBrush(RGB(212,110,111); hbrush=(HBRUSH)GetStockObject(LTGRAY_BRUSH); SelectObject(hdc,hbrush); Polygon(hdc,pts1,6); SelectObject(hdc,hPenOld); DeleteObject(hPen);DeleteObject(hbrush); EndPaint(hWnd,&PtStr);break;case WM_DESTROY: PostQuitMessage(0); break;def
29、ault:return DefWindowProc(hWnd,messgae,wParam,lParam);return 0;显示结果为:(2) 总结在Windows 程序中绘制图形的基本操作步骤;首先写好窗口的整体框架,类似于实验二,创建好窗口后,编写消息循环部分,处理刷新消息WM_PAINT和关闭窗口消息WM_DESTROY, WM_DESTROY消息按实验二。在WM_PAINT消息中完成设计内容,画出各种波形。HDC hdc;/设备句柄HBRUSH hbrush;/定义画刷句柄HPEN hPen;/定义画笔句柄HPEN hPenOld;/定义画笔句柄PAINTSTRUCT PtStr;/
30、定义包含绘图信息的结构体变量然后设置点的位置,调用各种绘图函数,完成实验中所要求的内容。具体的调用函数如下所示:注意:当用函数Polyline绘制折线 、用函数Polygon绘制多边形两个函数需要先定义POINT数组存放点的坐标。绘图函数表函数作用BeginPaint获取设备环境SetMapMode设置映像模式GetStockObject获取系统objectCreatePen创建画笔CreateSolidBrush 和CreateHatchBrush创建画刷SelectObject选择object(画笔画刷)DeleteObject删除objectMoveToEx LineTo绘制线段Poly
31、line绘制折线Ellipse绘制椭圆(圆)Rectangle绘制正方形Polygon绘制多边形Pie绘制饼形EndPaint释放设备环境(3) 总结实验的心得体会,实验中遇到的困难以及解决的方法等。1)编写的程序一般都是在消息循环中,所以可以在一个word文档中编写好窗口函数,然后平时编写程序时直接调用即可。2)创建画笔后,必须调用SelectObject函数将其选入设备环境,当不再使用画笔时,需删除画笔,以避免占用内存。 调用函数GetStockObject获取Windows系统提供的画刷,选入输入设备环境。创建画刷后,通过SelectObject将其选入设备环境。删除画刷时,可用Dele
32、ctObject删除画刷,释放内存。遇到的问题:刚开始没有设置折线和多边形的存放点的数组,所以绘制不出折线和多边形,最后定义两个数组点后成功绘制出。总结:通过本次实验进一步熟悉Visual C+ 6.0 开发环境,掌握了Windows 图形输出的方法,理解了设备环境、画笔、画刷的概念,掌握了常用的绘图函数。实验四 鼠标和键盘编程实验一、实验目的(1) 掌握键盘和鼠标的消息传递机制;(2) 掌握在Windows 程序中处理键盘和鼠标消息的方法;(3) 掌握在Visual C+的程序调试方法。二、实验内容请编写程序,要求如下:(1) 在屏幕上绘制一个矩形,并将举行内部划分成4 个矩形区域;(2)
33、在矩形内移动鼠标时,在上面划分的4 个区域中显示不同的光标,并在屏幕左上角显示光标坐标;(3) 当用户按下SHIFT 和CTRL 键并移动鼠标时,显示一个消息框,提示用户按下的是哪个键。三、实验报告(1) 列出消息处理程序代码清单;#include "windows.h"#include "stdio.h"LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae,WPARAM wParam,LPARAM lParam);int WINAPI WinMain (HINSTANCE hThisInst, HINSTANC
34、E hPrevInst,LPSTR lpszCmdLine, int nCmdShow)WNDCLASS ws;HWND hWnd;MSG msg;ws.style = 0;ws.lpfnWndProc = WndProc;ws.cbClsExtra = 0;ws.cbWndExtra = 0;ws.hInstance = hThisInst;ws.hIcon = LoadIcon(NULL, IDI_HAND);ws.hCursor = LoadCursor(NULL,IDC_CROSS);ws.hbrBackground = (HBRUSH) GetStockObject(WHITE_BR
35、USH);ws.lpszMenuName = NULL;ws.lpszClassName = "DemoClass"if(!RegisterClass(&ws)return -1;hWnd = CreateWindow("DemoClass","My First Windows Program",WS_OVERLAPPEDWINDOW,100,200,640,480,NULL,NULL,hThisInst,NULL);ShowWindow(hWnd,nCmdShow);UpdateWindow(hWnd);while(GetM
36、essage(&msg,NULL,0,0)TranslateMessage(&msg);DispatchMessage(&msg);return msg.wParam;LRESULT CALLBACK WndProc(HWND hWnd,UINT messgae,WPARAM wParam,LPARAM lParam)HDC hdc;/设备句柄HBRUSH hbrush;/定义画刷句柄HPEN hPen;/定义画笔句柄PAINTSTRUCT PtStr;/定义包含绘图信息的结构体变量TEXTMETRIC tm;/定义包含字体信息的结构体变量 staticWORD x=0
37、,y=0;/定义变量存储鼠标坐标HCURSOR hcursor;/定义光标句柄char buffer30;/定义字符数组memset(buffer,0x00,30);/初始化数组/消息循环switch(messgae)case WM_LBUTTONUP:/处理按下鼠标左键消息.if(wParam&MK_CONTROL)/同时按下Ctrl键时.if(wParam&MK_SHIFT)MessageBox(hWnd,"您按的是Ctrl键与shift键!","提示",MB_OK);elseMessageBox(hWnd,"您按的是Ctr
38、l键!","提示",MB_OK);break;else if(wParam&MK_SHIFT)/同时按下shift键时.MessageBox(hWnd,"您按的是shift键!","提示",MB_OK);break; break; case WM_MOUSEMOVE:/处理鼠标移动消息. hdc=GetDC(hWnd); GetTextMetrics(hdc,&tm); SetTextColor(hdc,RGB(255,255,255); sprintf(buffer," %d,%d ",
39、x,y);/定义坐标输出格式 TextOut(hdc,10,10,buffer,strlen(buffer);/覆盖原显示坐标 x=LOWORD(lParam); y=HIWORD(lParam);/获取坐标 SetTextColor(hdc,RGB(255,155,0); sprintf(buffer," %d,%d ",x,y); TextOut(hdc,10,10,buffer,strlen(buffer);/显示当前坐标/*判断鼠标移动到哪个区域*/ if(x>=0&&x<=800&&y>=0&&y&
40、lt;=100) hcursor=LoadCursor(NULL,IDC_SIZEWE); SetCursor(hcursor); if(x>=0&&x<=800&&y>=100&&y<=200) hcursor=LoadCursor(NULL,IDC_SIZEALL); SetCursor(hcursor); if(x>=0&&x<=800&&y>=200&&y<=300) hcursor=LoadCursor(NULL,IDC_WAIT); Set
41、Cursor(hcursor); if(x>=0&&x<=800&&y>=300&&y<=400) hcursor=LoadCursor(NULL,IDC_HELP); SetCursor(hcursor); ReleaseDC(hWnd,hdc); return 0;case WM_PAINT: hdc=BeginPaint(hWnd,&PtStr); SetMapMode(hdc,MM_ANISOTROPIC); hPen=(HPEN)GetStockObject(BLACK_PEN); SelectObject(hdc,hPen); Rectangle(hdc,0,0,800,100); hbrush=CreateSolidBrush(RGB(255,0,0); SelectObject(hdc,hbrush); Rectangle(hdc,0,100,800,200); hbrush=CreateSolidBrush(RGB(0,255,0); SelectObject(hdc,hbrush); Rectangle(hdc,0,200,800,300)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建省能源石化集团有限责任公司秋季招聘416人考试笔试模拟试题及答案解析
- 2025新疆青河县社保中心综柜岗位见习生招聘1人笔试考试备考题库及答案解析
- 2025浙江温州市平阳县兴阳控股集团有限公司下属房开公司招聘项目制员工15人笔试考试备考试题及答案解析
- 2026广东五华县兵役登记考试笔试模拟试题及答案解析
- 2025四川九洲防控科技有限责任公司招聘综合管理岗1人考试笔试模拟试题及答案解析
- 六年级下册期末数学模拟真题经典套题及答案解析
- 2026年浙江大学医学院附属第四医院招聘高层次人才50人笔试考试备考试题及答案解析
- 2025海南省海宾酒店管理集团有限公司招聘2人笔试考试参考试题及答案解析
- 2025年嘉兴海宁市教育系统事业单位赴天津职业技术师范大学招聘4人笔试考试参考试题及答案解析
- 2025广西河池市天峨县消防救援大队招录政府专职消防员3人考试笔试模拟试题及答案解析
- 培训学校教师安全教育课件
- 2025年12月“第一议题”学习内容清单
- 2025年高考化学习题分类练:化学反应机理的探究
- 2025年关于意识形态工作自检自查报告
- 观赏鸟的营养需要
- 财税托管托管合同范本
- 发现自己的闪光点课件
- 2025建筑节能工程监理实施细则
- 2025-2026学年苏教版(新教材)小学科学三年级上册科学期末复习卷及答案
- 发电厂汽轮机副操岗位考试试卷及答案
- 阿里合伙人合同
评论
0/150
提交评论