c语言实验报告.doc

上传人:飞****2 文档编号:52201534 上传时间:2022-10-21 格式:DOC 页数:55 大小:2.91MB
返回 下载 相关 举报
c语言实验报告.doc_第1页
第1页 / 共55页
c语言实验报告.doc_第2页
第2页 / 共55页
点击查看更多>>
资源描述

《c语言实验报告.doc》由会员分享,可在线阅读,更多相关《c语言实验报告.doc(55页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、实验课时安排实验内容课时说明实验一 C语言运行环境2必做实验二 C语言基础知识2必做实验三 顺序程序设计2必做实验四 if-else语句2必做实验五 switch语句2必做实验六 while语句、do-while语句2必做实验七 for语句2必做实验八 函数12必做实验九 函数22必做实验十 一维数组2必做实验十一 二维数组2必做实验十二 字符数组与字符串处理函数2必做实验十三 预处理2必做实验十四 指针12必做实验十五 指针22必做实验十六 结构体和共同体2必做实验十七 综合实验2必做合计32实验一 C程序的运行环境一、 实验目的 1. 了解和使用Visual C+ 6.0(简称VC)集成开

2、发环境; 2. 熟悉VC的控制台应用程序的开发、调试步骤和方法; 3、掌握C程序的编辑、编译、连接和运行过程; 4、了解工程、文件、工作区等基本概念; 5、能理解常见错误的提示信息,并根据提示进行改错。二、 相关知识点 VC集成开发环境; C语言的编辑、编译、连接和运行过程; C 语言的调试方法和工具; C语言的基本组成特点。 术语:“控制台应用程序”是一个在DOS窗口中运行的基于字符的程序。由于这种模式的应用程序比 Windows程序简单,我们先选择利用 Visual C+来建立这样一个应用,这样使得我们可以将精力先投入到学习使用 C 或者 C+编程语言,而不需要把过多的精力投入到学习复杂的

3、 Windows编程中去。三、 实验内容一(验证及程序分析) Eg1-1:使用Visual C+ 6.0 集成环境来编辑、编译并运行下面的示例程序: #include void main() printf(This is my first C program!n); 【说明:】本题要求完成一个字符串的输出,并且是“依葫芦画瓢”哦! 实验步骤: (1)启动Visual C+开发环境 (2)创建一个工程 a. 单击File菜单中的 New选项,显示出新建对话框 b. 选择Win32 Console Application。 c. 选择项目所在路径及输入项目的名称 d. 在建立一个什么类型的控制台应

4、用程序中,选中“一个空工程”,按“完成” 按钮,至此,已经建立好工程相关的文件。 (3)建立C+源程序文件 a. 选菜单命令Project|Add to Project|New,弹出New 对话框 b. 在 New 对话框的 Files 选项卡中选择 C+ Source File,并填入文件名称,单击OK按钮,完成新建C+源程序文件 (4) 编辑C+源程序文件 a. 在文件编辑窗口中输入代码 b. 完成后,选择菜单 File|Save保存这个文件 (5) 编译、链接并运行可执行程序 a. 选择菜单命令 Compile,建立目标代码文件; 如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息

5、,根据这些错误信息对源程序进行修改后,重新选择菜单命令 Compile建立目标代码文件。 b. 选择菜单命令 Build,建立可执行程序 如果你正确输入了源程序,此时便成功地生成了可执行程序。 如果程序有链接错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源程序进行修改后,重新选择菜单命令 Build 建立可执行程序。 c. 选择菜单命令 Run,运行程序,观察屏幕显示内容。 【说明】有时也可直接选择菜单命令 Run,将“编译、链接并运行”几个步骤合为一起。 (6) 关闭工作空间 选择菜单命令 File|Colse WorkSpace关闭工作空间。四、上机内容:1.输入并运行程序

6、,写出运行结果。main()inta,b,sum;a=123;b=456;sum=a+b;printf(“sumis%dn”,sum);2.输入并运行程序,写出运行结果。main()inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max=%d”,c);intmax(intx,inty)intz;if(xy)z=x;elsez=y;return(z);3.编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for.实验二C语

7、言的基础知识【目的与要求】1掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。2学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减(-)运算符的使用。3进一步熟悉C程序的编辑、编译、连接和运行的过程。【上机内容】【一般示例】【例1】输入并运行下程序,写出运行结果。mian()charc1,c2;c1=97;c2=98;printf(“%c%c”,c1,c2);在此基础上1)加一个printf语句,并运行之。printf(“%d,%d”,c1,c2);2)再将第二行改为:intc1,c2;再使之运

8、行。3)再将第三行改为:c1=300;c2=400;再使之运行,分析其运行结果。在该程序中,说明了字符型数据在特定情况下可作为整型数据处理,整型数据有时也可以作为字符型数据处理。【例2】分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。main()charc1=a,c2=b,c3=c,c4=101,c5=116;printf(“a%cb%ctabcn”,c1,c2,c3);printf(“tb%c%c”,c4,c5);在该程序中,主要考查对转义字符的掌握情况。【例3】分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。main(

9、)inti,j,m,n;i=8;j=10;m=+i;n=j+;printf(“%d,%d,%d,%d”,i,j,m,n);分别作以下改动之后,先分析再运行:1)将第四行改为:m=i+;n=+j;2)程序改为:main()inti,j;i=8;j=10;printf(“%d,%d”,i+,j+);3)在2)的基础上,将printf语句改为:printf(“%d,%d”,+i,+j);4)再将printf语句改为:printf(“%d,%d,%d,%d”,i,j,i+,j+);5)程序改为:main()inti,j,m=0,n=0;i=8;j=10;m+=i+;n-=-j;printf(“i=%d

10、,j=%d,m=%d,n=%d”,i,j,m,n);此程序主要考查自加、自减运算符以及复合运算符的用法。【作业】1要讲“China”译成密码,密码规律是:用原来的字母后面第5个字母代替原来的字母。例如,字母“A”后面第5个是“F”,用“F”代替“A”。因此,“China”应译为“Hmnsf”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为C、h、i、n、a,经过运算,使其分别变为H、m、n、s、f,并输出。实验三 顺序结构程序设计作业:1.输入一个非负实数,计算以该实数为半径的圆周长及面积。2. 输入两个整型变量a,b的值,输出a+b,a-b,a*b,a/b,flo

11、at)a/b,a%b的结果,要求连同算式一起输出,每个算式占一行。实验四 分支结构ifelse一、【实验题目】分支结构ifelse二、【实验类型】基础型实验三、【实验要求】1实验前必须做好实验准备,弄清实验内容和实验目的;2实验结束后,把程序运行结果写在程序旁边相应位置,并回答问题;3将完成后的实验报告交给任课教师。四、【实验目的】1. 理解分支结构中用到的逻辑表达式;2学会画程序流程图;3. 掌握ifelse语句及其嵌套的用法;4理解程序设计的基本思想。五、【实验内容】(一)调试运行下面的程序,理解关系表达式和逻辑表达式的计算:#include void main() printf(“TRU

12、E=%dn”, 3=2);printf(“FALSE=%dn”,3=2);printf(“432:%dn”, 432);printf(“43 & 32:%dn”,43 & 32); 1. 关系表达式或逻辑表达式的值为真(1)或假(0), 但注意用非0值可表示真;2. 区别表达式432与43 & 32;3. 关系运算符的优先级别要高于逻辑运算符,逻辑运算符的优先级的高低顺序为“!”、“&”、“|”。(二)下面的程序是输入三个整数,输出其最大值。理解程序求解的思路,并用NS图(PAD图)表示该算法思路。#include void main( )int a, b, c, max;scanf ( “%

13、d%d%d” , &a, &b, &c);max = a ;if ( b max ) max = b ;if ( c max ) max = c;printf ( “MAX=%dn”, max ); 1注意输入的三个数之间请用空格分开,若要在输入的三个数之间用逗号分隔,应该对程序如何修改;2若要求输出最小值,应该如何修改上述程序。(三)有以下分段函数,要求输入x值,输出相应的y值。#include void main()float x,y;printf(输入 x:);scanf(%f,&x);if(x=20) y=10*x-20;else y=8*x+6;printf(x=%-6.2fy=%-

14、6.2fn,x,y);1输入不同的值进行测试,检查是否满足题设要求,如果不满足,请找出出错的地方,改正后再上机执行;2请注意输出格式的控制;实验五 分支结构switchcase一、【实验题目】分支结构switch.case二、【实验类型】基础型实验三、【实验要求】1实验前必须做好实验准备,弄清实验内容和实验目的;2实验结束后,把程序运行结果写在程序旁边相应位置,并回答问题;3将完成后的实验报告交给任课教师。四、【实验目的】1. 理解分支结构中用到的逻辑表达式;2学会画程序流程图;3掌握switch.case语句的使用;4了解break语句在switch.case语句中的作用;5理解程序设计的基

15、本思想。五、【实验内容】(一)输入一个不超过5位的整数,求整数的位数、每一位上的数字,并按逆序输出各位数字。#includevoid main() int x,a,b,c,d,n=1; printf(“请输入一个不超过5位的整数:”); scanf(“%d”,&x); a=x/10000; x=x%10000; if(d!=0) n+;if(c!=0) n+;if(b!=0) n+;if(a!=0) n+;printf(“%d位数:”,n);switch(n) case 1: printf(“%d”,e);break; case 2: printf(“%d,%d”,e,d);break; ca

16、se 3: printf(“%d,%d,%d”,e,d,c);break; case 4: printf(“%d,%d,%d,%d”,e,d,c,b);break; case 5: printf(“%d,%d,%d,%d,%d”,e,d,c,b,a);break;1在程序中空白的地方填上适当的语句使程序完整,并上机调试执行,看看执行结果是否满足题目的要求;2想一想:程序中哪些语句是相似的、重复的?如果本算法的目的是给人看,你会用什么更简洁的自然语言语句描述它?(二) 计算奖金:当企业利润P等于或低于0.5万元时,奖金为利润的1%;当0.5P1万元时,超过0.5万元部分的奖金为利润的1.5%,0

17、.5万元以下仍按1%计算;当1P2万元时,1万元以下部分仍按前面的方法计算,超过1万元的部分其奖金按利润的2%计算;当2P5万元时,2万元以下部分仍按前面的方法计算,超过2万元部分的奖金按利润的2.5%计算;当5P10万元时,超过5万元部分的奖金利润的3.0%计算;当P10万元,5万元以下部分仍按前面的方法计算,超过10万元部分按3.5%计算。其中P从键盘输入,计算并输出相应的奖金数W。#include void main()double p,w=0.0;int k;printf(请输入企业利润 p:);scanf(%lf,&p);if(k10) k=10;else if(k0.5)k=(in

18、t)p;switch(k)case 9: w=w+0.035*(p-10.0); p=10.0;case 8: case 7: case 6: case 5: w=w+0.03*(p-5.0); p=5.0;case 4:case 3: case 2: w=w+0.025*(p-2.0); p=2.0;case 1: w=w+0.02*(p-1.0); p=1.0; case 0: w=w+0.015*(p-0.5); p=0.5; default: w=w+0.01*p; printf(奖金数w=%fn,w);1注意p在输入时格式的控制;2结合switch结构的执行特点,分析程序中if.el

19、se结构对k做预处理的作用;3将double类型转换为int类型时的强制类型转换方法;4注意case标号出现的顺序;5输入不同的测试数据,分析程序的执行流程;7试用if.else结构实现本题。(三) 编程:等级转换。考试结束后,老师要将同学的成绩转换成五等制,转换原则是:90分以上 优秀,8980分 良好,7970分 中等,6960分 合格,60分以下 不合格。你自告奋勇来做老师的小帮手,现在就动手吧! 要求:先设想一下,对于本题是用if.else结构实现好,还是用switch结构实现好?选择一种你认为好的结构实现本题。实验六 条件型循环结构 一实验目的 1. 理解循环结构的概念2. 掌握对w

20、hile、do while 语句的使用3. 掌握while与do while 语句之间的异同点 二. 预习知识 1. while与do while语句构成的循环2. While与do while语句构成的循环的比较3. 应用while与do while语句解决一些实际应用问题 三.改正程序错误 (1) while循环n=5;while (n);m+;printf (“%d”, m);(2) do while循环n=5;do;m+;printf (“%d”, m);while (n)四. 实验内容编程序并上机调试运行。(1) 编程实现以下功能:输出两位数中个位和十位的乘积大于个位和十位的和的所有

21、整数。分析及算法从10开始取数 a 把两位数的十位赋给变量r。 b 把两位数的个位赋给变量q。 c 进行是否满足条件的判断 d 若条件满足则输出该数并统计满足条件的数的个数,其中个数统计用于每行输出个数的控制,当每行输出个数达到5个时就换行。 e 当完成对一个数的判断和执行后,继续下一个数的判断,回到步骤b。依次类推,直到把所有的两位数判断完。其中用到的主要算法如下: 计算个位可以通过该数除以10取余的方法获得。 计算十位可以通过该数除以10的商的方法获得。 换行的实现方法为:用输出的数的个数是否能 被5整除来判断是否进行换行,当能被5整除时 就换行,否则就不换行。要求:方法1:用while语

22、句实现方法2:用do while语句实现 (2)编写程序找出1-99之间的全部同构数。 同构数的概念:如果1个数出现在其平方的右边,则该数为同构数。例如5的平方是25,而5出现在25的右边;25的平方是625,而25出现在625的右边,因此5和25都是同构数。 分析1.位数平方的特点是最大为81,即只可能是1个1位数或者是1个2位数。两位数的平方的特点是只可能是一个3位数或者4位数。2.算法 依次取199之间的数。 被取数若是1位数,则取其平方的个位与其本身比较,若被取数满足条件在输出该数(取低两位可用求余方法得到)。 被取数若是两位数,则取其平方的低两位与其本身比较,若被取数满足条件则输出该

23、数(取低两位可用求余的方法获得)。 (3) 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 (4) 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子虼掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。 在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。请修改程序,并运行,检查结果是否正确。 五实验要求及总结 1. 结合上课内容,对上述程序先阅读,然后上机并调试程序,并对实验结果写出你自己的分析结论。2. 整理上机步骤,

24、总结经验和体会。3. 完成实验报告和上交程序。实验七 记数型循环结构 一实验目的 1. 掌握对for 语句及其特殊形式的使用2. 掌握for语句与while语句之间的转换3. 掌握循环的嵌套4. 学会调试程序 二. 预习知识 1. for语句构成的循环及其特殊形式2. for与while语句之间的转换3. 循环的嵌套的用法 三.改正程序错误 (1) for循环 for (n=5; ;n-); m+; printf (“%d”, m); 四. 实验内容 编程序并上机调试运行。 (1) 打印“水仙花数”,所谓“水仙花数”是指一个 3 位数,其各位数字的立方和等于该数本身。例如15313+53+33

25、,所以153是“水仙花数”。算法分析: 这个数n应该满足100n1000,设其百位权为i,十位权为j,个位权为k,则i,j,k应该满足公式(i*100+ j*10+ k=i*i*i+ j*j*j+ k*k*k)。 这样问题就转化为寻找满足条件的i,j,k。i=n/100 (百位)j=n/10-i*10 (十位)k=n%10 (个位) (2)有人说,任意一个两位数乘以167加上2500所得到的值,其低两位数乘以3后所得到的值的低两位数正好等于该两位数,例如,35*167+25008345,45*3135,135的低两位数正好是35。编写程序验证此结论。算法分析: 所有的两位数进行验算,若所有的式

26、子 都成立,则结论正确,否则结论错误。 (3)编程输出以下图形,运行情况:please input a num: 3 (Enter) * *please input a num: 5 (Enter) * * * * * *(4)输出1001000之间的所有素数,打印时每行输出10个数 (5)木马板凳三十三,百个腿腿地下翻。编程求解:木马和板凳各有多少条? (6)今有一楼梯(少于300阶),每步跨2阶,最后余1阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;每步跨6阶,最后余5阶;每步跨7阶,最后正好到达楼顶。编程计算楼梯的总阶数。 五实验要求及总结 1. 结合上课内容,对上述程序先阅读,然

27、后上机并调试程序,并对实验结果写出你自己的分析结论。2. 整理上机步骤,总结经验和体会。3. 完成实验报告和上交程序。实验八 函数1实验九 函数2作业:1 定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数值。用主函数来调用它,统计50个学生成绩中,高于平均成绩的有多少人?2编写一个对n个数据从大到小的排序C函数,再编写一个计算最后得分的C函数,计算方法是:去除一个最高分,去除一个最低分,其余的平均分为参赛选手的最后得分。并在主函数中调用它们对有n个评委评分,m个选手参赛的最后得分,从大到小排序输出。实验十 一维数组【目的与要求】 1掌握一维数组的定义、赋值和输入输出的方

28、法;2掌握字符数组的使用;3掌握与数组有关的算法(例如排序算法)。【上机内容】【一般示例】【例1】在键盘上输入N个整数,试编制程序使该数组中的数按照从大到小的次序排列。分析:C中数组长度必须是确定大小,即指定N的值。排序的方法有多种,我们取出其中两种作为参考。方法一:起泡排序从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比较后,最大的数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍比较后就可以完成排序。源程序如下:#define N 10#includestdio.hmain()int aN,i,j,te

29、mp;printf(please input %d numbersn,N);for(i=0;iN;i+)scanf(%d,&a);for(i=0;iN-1;i+)for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;printf(the array after sort:n);for(i=0;iN;i+)printf(%5d,a);方法二:选择排序首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;然后,在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。以此类推,直到所有的值从小到大的顺序排列为止。#inclu

30、destdio.h#define N 10main()int aN,i,j,r,temp;printf(please input %d numbersn,N);for(i=0;iN;i+)scanf(%d,&a);for(i=0;iN-1;i+) r=i;for(j=i+1;jN;j+)if(ajar)r=j;if(r!=i)temp=ar;ar=a;a=temp;printf(the array after sort:n);for(i=0;iN;i+)printf(%5d,a);printf(n);【例2】青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,试编程求这位选手的平均得分(去掉一

31、个最高分和一个最低分)。分析:这道题的核心是排序。将评委所打的10个分数利用数组按增序(或降序)排列,计算数组中除第一个和最后一个分数以外的数的平均分,其中排序部分这里用选择法实现。main()int i,j,min;float temp,ave=0;float a11;printf(n输入评委所打的分数:n);for(i=1;i=10;i+)scanf(%f,&a);for(i=1;i=9;i+)min=i;for(j=i+1;jaj)min=j;temp=a;a=amin;amin=temp;for(i=2;i=9;i+) /*注意i值的变化范围*/ave=ave+a;printf(选手所

32、得最后分数:%6.1f,ave/8);printf(n);【例3】输入一串字符,计算其中空格的个数。#include main( )char c30;int i,sum=0;gets(c);for(i=0;istrlen(c);i+)if(c= )sum=sum+1;printf(空格数为:%d n,sum);【作业】1 已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。2 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。3 有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的

33、值。如果该数不在数组中,则打印出“无此数”。4 编一程序,将两个字符串连接起来,不要用strcat函数。实验十一 二维数组 【目的与要求】 1掌握二维数组的定义、赋值和输入输出的方法;2掌握字符数组的使用;3掌握与数组有关的算法(例如排序算法)。【上机内容】【一般示例】【例1】有一个34的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。#define M 3#define N 4main( )int max,i,j,r,c;static int aMN=123,94,-10,218,3,9,10,-83,45,16,44,-99;max=a00;for(i=0;iM;i+)for(j=

34、0;jmax)max= aij;r=i;c=j;printf(“max=%d , row =%d , colum=%d n”,max , r, c);【例2】打印以下图案:* * * * * * * * * * * * * * * * * * * * *main()char a5= * , * , * , * , * ;int i,j,k;char space= ;for(i=0;i5;i+) /*输出5行*/printf(n); /* 输出每行前先换行* /printf( ); /* 每行前面留5个空格 */for (j=1;j=i;j+) printf(%c,space); /* 每行再留

35、1个空格*/for ( k=0;k5;k+)printf(%c,ak); /*每行输入5个*号*/【例3】求矩阵下三角形元素之和。#define N 6main()int i,j,sum=0;int aNN=0;printf(input 55 data:n);for(i=1;iN;i+) printf(Input the %d line data:n,i);for(j=1;jN;j+)scanf(%d,&aij); for(i=1;iN;i+)for(j=1;jN;j+)printf(%5d,aij);printf(n); for(i=1;iN;i+)for(j=1;jd) for(k=0;k

36、d;k+) ch=ak;ak=bk;bk=ch; printf(a=%sn,a); printf(b=%sn,b); 程序中的strlen是库函数,功能是求字符串的长度,它的原型保存在头文件string.h中。调试时注意库函数的调用方法,不同的字符串输入方法,通过错误提示发现程序中的错误。 2编写程序,输入若干个字符串,求出每个字符串的长度,并打印最长一个字符串的内容。以stop作为输入的最后一个字符串。 3编写程序,输入任意一个含有空格的字符串(至少10个字符),删除指定位置的字符后输出该字符串。如:输入BEIJING123和删除位置3,则输出:BEIING123。 四、选做题 1编写程序,输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。如:输入BEIJING、123和位置3,则输出:BEI123JING123。 2编写程序,将输入的两个字符串进行合并,合并后的字符串中的字符按照其ASCII码从小到大的顺序排序,在合并后的字符串中相同的字符只出现一次。 五实验要求及总结 1复习字符串处理函数和字符数组的使用、库函数的调用方法。 2编写程序,运行程序并记录运行结果。 3将源程序、目标文件、可执行文件和实验

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com