`
SpringArt
  • 浏览: 328612 次
社区版块
存档分类
最新评论

C语言面试题大汇总之华为面试题

阅读更多
1、局部变量能否和全局变量重名?

  答:能,局部会屏蔽全局。要用全局变量,需要使用"::"

  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

  2、如何引用一个已经定义过的全局变量?

  答:extern

  可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

  3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

  答:可以,在不同的C文件中以static形式来声明同名全局变量。

  可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错

  4、语句for( ;1 ;)有什么问题?它是什么意思?

  答:和while(1)相同。

  5、do……while和while……do有什么区别?

  答:前一个循环一遍再判断,后一个判断以后再循环

  6、请写出下列代码的输出内容

  #include<stdio.h>
  main()
  {
   int a,b,c,d;
   a=10;
   b=a++;
   c=++a;
   d=10*a++;
   printf("b,c,d:%d,%d,%d",b,c,d);
   return 0;
  }

  答:10,12,120

  7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

  全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

  从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

  static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

  static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
  static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
  static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

  8、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。

  9、设有以下说明和定义:

  typedef union {long i; int k[5]; char c;} DATE;
  struct data { int cat; DATE cow; double dog;} too;
  DATE max;

  则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:___52____

  答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20
data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.
所以结果是 20 + 32 = 52.

  当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20

  10、队列和栈有什么区别?
  
  队列先进先出,栈后进先出

  11、写出下列代码的输出内容

  #include<stdio.h>
  int inc(int a)
  {
   return(++a);
  }
  int multi(int*a,int*b,int*c)
  {
   return(*c=*a**b);
  }
  typedef int(FUNC1)(int in);
  typedef int(FUNC2) (int*,int*,int*);

  void show(FUNC2 fun,int arg1, int*arg2)
  {
   INCp=&inc;
   int temp =p(arg1);
   fun(&temp,&arg1, arg2);
   printf("%d\n",*arg2);
  }

  main()
  {
   int a;
   show(multi,10,&a);
   return 0;
  }

  答:110

  12、请找出下面代码中的所以错误

  说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

  1、#include"string.h"
  2、main()
  3、{
  4、 char*src="hello,world";
  5、 char* dest=NULL;
  6、 int len=strlen(src);
  7、 dest=(char*)malloc(len);
  8、 char* d=dest;
  9、 char* s=src[len];
  10、 while(len--!=0)
  11、 d++=s--;
  12、 printf("%s",dest);
  13、 return 0;
  14、}

  答:

  方法1:

  int main()
  {
   char* src = "hello,world";
   int len = strlen(src);
   char* dest = (char*)malloc(len+1);//要为\0分配一个空间
   char* d = dest;
   char* s = &src[len-1];//指向最后一个字符
   while( len-- != 0 )
   *d++=*s--;
   *d = 0;//尾部要加\0
   printf("%s\n",dest);
   free(dest);// 使用完,应当释放空间,以免造成内存汇泄露
   return 0;
  }


回复人:yanglilibaobao() ( 一级(初级)) 信誉:100 2007-1-17 14:25:05 得分:0
?

方法2:

  #include <stdio.h>
  #include <string.h>
  main()
  {
   char str[]="hello,world";
   int len=strlen(str);
   char t;
   for(int i=0; i<len/2; i++)
   {
    t=str[i];
    str[i]=str[len-i-1]; str[len-i-1]=t;
   }
   printf("%s",str);
   return 0;
  }

  1.-1,2,7,28,,126请问28和126中间那个数是什么?为什么?

  第一题的答案应该是4^3-1=63

  规律是n^3-1(当n为偶数0,2,4)n^3+1(当n为奇数1,3,5)

  答案:63

  2.用两个栈实现一个队列的功能?要求给出算法和思路!

  设2个栈为A,B, 一开始均为空.

  入队:
  将新元素push入栈A;

  出队:
  (1)判断栈B是否为空;
  (2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;
  (3)将栈B的栈顶元素pop出;

  这样实现的队列入队和出队的平摊复杂度都还是O(1), 比上面的几种方法要好。3.在c语言库函数中将一个字符转换成整型的函数是atool()吗,这个函数的原型是什么?

  函数名: atol
  功 能: 把字符串转换成长整型数
  用 法: long atol(const char *nptr);
  程序例:
  #include <stdlib.h>
  #include <stdio.h>
  int main(void)
  {
   long l;
   char *str = "98765432";
   l = atol(lstr);
   printf("string = %s integer = %ld\n", str, l);
   return(0);
  }

  13.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

  c用宏定义,c++用inline

  14.直接链接两个信令点的一组链路称作什么?

  PPP点到点连接
  
  15.接入网用的是什么接口?
 
  16.voip都用了那些协议?

  17.软件测试都有那些种类?

  黑盒:针对系统功能的测试
  白合:测试函数功能,各函数接口

  18.确定模块的功能和模块的接口是在软件设计的那个队段完成的?

  概要设计阶段

  19.
  enum string
 {
   x1,
   x2,
   x3=10,
   x4,
   x5,
  }x;

  问x= 0x801005,0x8010f4 ;

  20.
  unsigned char *p1;
  unsigned long *p2;
  p1=(unsigned char *)0x801000;
  p2=(unsigned long *)0x810000;

  请问p1+5= ;
    p2+5= ;

  选择题:

  21.Ethternet链接到Internet用到以下那个协议?

  A.HDLC;B.ARP;C.UDP;D.TCP;E.ID
 
  22.属于网络层协议的是:
 
   A.TCP;B.IP;C.ICMP;D.X.25

  23.Windows消息调度机制是:

  A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;

  24.
  unsigned short hash(unsigned short key)
  {
 return (key>>)%256
 }

  请问hash(16),hash(256)的值分别是:

   A.1.16;B.8.32;C.4.16;D.1.32

  找错题:

  25.请问下面程序有什么错误?

  int a[60][250][1000],i,j,k;
  for(k=0;k<=1000;k++)
  for(j=0;j<250;j++)
  for(i=0;i<60;i++)
  a[i][j][k]=0;

  把循环语句内外换一下

  26.
  #define Max_CB 500
  void LmiQueryCSmd(Struct MSgCB * pmsg)
  {
   unsigned char ucCmdNum;
   ......
  for(ucCmdNum=0;ucCmdNum<Max_CB;ucCmdNum++)
   {
    ......;
   }

   死循环

  27.以下是求一个数的平方的程序,请找出错误:

  #define SQUARE(a)((a)*(a))
  int a=5;
  int b;
  b=SQUARE(a++);

  28.
  typedef unsigned char BYTE
  int examply_fun(BYTE gt_len; BYTE *gt_code)
  {
   BYTE *gt_buf;
   gt_buf=(BYTE *)MALLOC(Max_GT_Length);
   ......
   if(gt_len>Max_GT_Length)
   {
    return GT_Length_ERROR;
   }
   .......
  }

  问答题:

  29.IP Phone的原理是什么?

  IPV6

  30.TCP/IP通信建立的过程怎样,端口有什么作用?

  三次握手,确定是哪个应用程序使用该协议

  31.1号信令和7号信令有什么区别,我国某前广泛使用的是那一种?

  32.列举5种以上的电话新业务?



转http://develop.csai.cn/c/200609191606071118.htm
分享到:
评论

相关推荐

    基于ssm的网络教学平台(有报告)。Javaee项目,ssm项目。

    重点:所有项目均附赠详尽的SQL文件,这一细节的处理,让我们的项目相比其他博主的作品,严谨性提升了不止一个量级!更重要的是,所有项目源码均经过我亲自的严格测试与验证,确保能够无障碍地正常运行。 1.项目适用场景:本项目特别适用于计算机领域的毕业设计课题、课程作业等场合。对于计算机科学与技术等相关专业的学生而言,这些项目无疑是一个绝佳的选择,既能满足学术要求,又能锻炼实际操作能力。 2.超值福利:所有定价为9.9元的项目,均包含完整的SQL文件。如需远程部署可随时联系我,我将竭诚为您提供满意的服务。在此,也想对一直以来支持我的朋友们表示由衷的感谢,你们的支持是我不断前行的动力! 3.求关注:如果觉得我的项目对你有帮助,请别忘了点个关注哦!你的支持对我意义重大,也是我持续分享优质资源的动力源泉。再次感谢大家的支持与厚爱! 4.资源详情:https://blog.csdn.net/2301_78888169/article/details/144929660 更多关于项目的详细信息与精彩内容,请访问我的CSDN博客!

    2024年AI代码平台及产品发展简报-V11.pdf

    2024年AI代码平台及产品发展简报-V11

    蓝桥杯JAVA代码.zip

    蓝桥杯算法学习冲刺(主要以题目为主)

    QPSK调制解调技术研究与FPGA实现:详细实验文档的探索与实践,基于FPGA实现的QPSK调制解调技术:实验文档详细解读与验证,QPSK调制解调 FPGA设计,有详细实验文档 ,QPSK调制解调;

    QPSK调制解调技术研究与FPGA实现:详细实验文档的探索与实践,基于FPGA实现的QPSK调制解调技术:实验文档详细解读与验证,QPSK调制解调 FPGA设计,有详细实验文档 ,QPSK调制解调; FPGA设计; 详细实验文档,基于QPSK调制的FPGA设计与实验文档

    PID、ADRC和MPC轨迹跟踪控制器在Matlab 2018与Carsim 8中的Simulink仿真研究,PID、ADRC与MPC轨迹跟踪控制器在Matlab 2018与Carsim 8中的仿真研

    PID、ADRC和MPC轨迹跟踪控制器在Matlab 2018与Carsim 8中的Simulink仿真研究,PID、ADRC与MPC轨迹跟踪控制器在Matlab 2018与Carsim 8中的仿真研究,PID, ADRC和MPC轨迹跟踪控制器Simulink仿真模型。 MPC用于跟踪轨迹 ADRC用于跟踪理想横摆角 PID用于跟踪轨迹 轨迹工况有双移线,避障轨迹,正弦轨迹多种 matlab版本为2018,carsim版本为8 ,PID; ADRC; MPC; 轨迹跟踪控制器; Simulink仿真模型; 双移线; 避障轨迹; 正弦轨迹; MATLAB 2018; CarSim 8,基于Simulink的PID、ADRC与MPC轨迹跟踪控制器仿真模型研究

    基于Springboot的个性化图书推荐系统。Javaee项目,springboot项目。

    重点:所有项目均附赠详尽的SQL文件,这一细节的处理,让我们的项目相比其他博主的作品,严谨性提升了不止一个量级!更重要的是,所有项目源码均经过我亲自的严格测试与验证,确保能够无障碍地正常运行。 1.项目适用场景:本项目特别适用于计算机领域的毕业设计课题、课程作业等场合。对于计算机科学与技术等相关专业的学生而言,这些项目无疑是一个绝佳的选择,既能满足学术要求,又能锻炼实际操作能力。 2.超值福利:所有定价为9.9元的项目,均包含完整的SQL文件。如需远程部署可随时联系我,我将竭诚为您提供满意的服务。在此,也想对一直以来支持我的朋友们表示由衷的感谢,你们的支持是我不断前行的动力! 3.求关注:如果觉得我的项目对你有帮助,请别忘了点个关注哦!你的支持对我意义重大,也是我持续分享优质资源的动力源泉。再次感谢大家的支持与厚爱! 4.资源详情:https://blog.csdn.net/2301_78888169/article/details/144486173 更多关于项目的详细信息与精彩内容,请访问我的CSDN博客!

    Matlab实现Transformer-Adaboost时间序列预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文档详细介绍了一个利用Matlab实现Transformer-Adaboost结合的时间序列预测项目实例。项目涵盖Transformer架构的时间序列特征提取与建模,Adaboost集成方法用于增强预测性能,以及详细的模型设计思路、训练、评估过程和最终的GUI可视化。整个项目强调数据预处理、窗口化操作、模型训练及其优化(包括正则化、早停等手段)、模型融合策略和技术部署,如GPU加速等,并展示了通过多个评估指标衡量预测效果。此外,还提出了未来的改进建议和发展方向,涵盖了多层次集成学习、智能决策支持、自动化超参数调整等多个方面。最后部分阐述了在金融预测、销售数据预测等领域中的广泛应用可能性。 适合人群:具有一定编程经验的研发人员,尤其对时间序列预测感兴趣的研究者和技术从业者。 使用场景及目标:该项目适用于需要进行高质量时间序列预测的企业或机构,比如金融机构、能源供应商和服务商、电子商务公司。目标包括但不限于金融市场的波动性预测、电力负荷预估和库存管理。该系统可以部署到各类平台,如Linux服务器集群或云计算环境,为用户提供实时准确的预测服务,并支持扩展以满足更高频率的数据吞吐量需求。 其他说明:此文档不仅包含了丰富的理论分析,还有大量实用的操作指南,从项目构思到具体的代码片段都有详细记录,使用户能够轻松复制并改进这一时间序列预测方案。文中提供的完整代码和详细的注释有助于加速学习进程,并激发更多创新想法。

    液滴穿越障碍:从文献到案例的复现研究,液滴破裂与障碍物穿越:文献复现案例研究,液滴生成并通过障碍物破裂 该案例是文献复现,文献与案例一起 ,液滴生成; 障碍物破裂; 文献复现; 案例研究,液滴破

    液滴穿越障碍:从文献到案例的复现研究,液滴破裂与障碍物穿越:文献复现案例研究,液滴生成并通过障碍物破裂。 该案例是文献复现,文献与案例一起。 ,液滴生成; 障碍物破裂; 文献复现; 案例研究,液滴破裂:障碍挑战的文献复现案例

    蓝桥杯练习题_2.zip

    蓝桥杯算法学习冲刺(主要以题目为主)

    蓝桥杯笔记,用于个人学习进步.zip

    蓝桥杯算法学习冲刺(主要以题目为主)

    基于最小递归二乘法的MPC自适应轨迹跟踪控制优化 针对轮胎刚度时变特性提升模型精度与鲁棒性,仿真验证满足车辆低速高精度跟踪与高速稳定性提升 ,基于变预测时域MPC自适应轨迹跟踪控制与轮胎侧偏刚度优化提

    基于最小递归二乘法的MPC自适应轨迹跟踪控制优化 针对轮胎刚度时变特性提升模型精度与鲁棒性,仿真验证满足车辆低速高精度跟踪与高速稳定性提升。,基于变预测时域MPC自适应轨迹跟踪控制与轮胎侧偏刚度优化提升模型精度和鲁棒性,基于变预测时域的MPC自适应轨迹跟踪控制,针对轮胎刚度时变的特点造成控制模型精度降低,基于最小递归二乘法(RLS)估算的轮胎侧偏刚度,提升了模型的控制精度和鲁棒性,通过carsim与simulink联合仿真结果发现,改进后的轨迹跟踪控制器既满足了车辆低速行驶下的轨 迹跟踪精度,也一定程度上克服了高速下车辆容易失去稳定性的问题。 有详细的lunwen分析说明和资料,以及本人的,仿真包运行。 ,基于变预测时域的MPC; 自适应轨迹跟踪控制; 轮胎刚度时变; 控制模型精度降低; 最小递归二乘法(RLS)估算; 模型控制精度和鲁棒性提升; carsim与simulink联合仿真; 轨迹跟踪控制器; 车辆稳定性。,基于变预测时域MPC的轮胎刚度自适应轨迹跟踪控制策略研究

    GMSK调制解调技术研究:基于FPGA设计与实验详解,GMSK调制解调技术详解:基于FPGA设计的实验文档与实践应用,GMSK调制解调 FPGA设计,有详细实验文档 ,GMSK调制解调; FPGA设计

    GMSK调制解调技术研究:基于FPGA设计与实验详解,GMSK调制解调技术详解:基于FPGA设计的实验文档与实践应用,GMSK调制解调 FPGA设计,有详细实验文档 ,GMSK调制解调; FPGA设计; 详细实验文档; 实验结果分析,GMSK调制解调技术:FPGA设计与实验详解

    (源码)基于Arduino和Python的Cansat卫星系统.zip

    # 基于Arduino和Python的Cansat卫星系统 ## 项目简介 本项目是一个Cansat卫星系统,旨在设计和实现一个小型卫星模型,通过火箭发射至1公里高空,并使用地面站接收其传输的数据。项目涉及Arduino编程、Python数据处理和可视化。 ## 主要特性和功能 1. 硬件组件 使用Arduino Nano作为Cansat的微控制器。 搭载BMP 280温度和压力传感器、ATGM336H GPS模块、LoRa通信模块等。 地面站使用Arduino Uno和LoRa通信模块接收数据。 2. 数据处理 使用Python进行数据处理和可视化,包括数据清洗、计算风速、绘制温度、压力、风速和海拔随时间变化的图表等。 3. 通信与控制 通过LoRa模块实现Cansat与地面站之间的数据传输。 提供实时监视和记录数据的脚本。 ## 安装和使用步骤 ### 1. 硬件准备

    LongSung-USB-Drivers-V2.0-for-Windows

    U9300C 龙尚4G模块安装后模块才能正常使用,win7 win10驱动程序,支持USB转接板。

    (源码)基于Arduino平台的物联网温湿度监控系统.zip

    # 基于Arduino平台的物联网温湿度监控系统 ## 项目简介 这是一个基于Arduino平台的物联网温湿度监控项目,旨在通过简单的硬件设备实现环境数据的实时监测与远程管理。该项目适用于智能家居、农业种植等领域。 ## 项目的主要特性和功能 1. 温湿度数据采集通过Arduino板连接温湿度传感器,实时采集环境数据。 2. 数据传输将采集到的数据通过无线网络模块发送到服务器或远程终端。 3. 数据可视化可在电脑或移动设备端展示实时的温湿度数据。 4. 报警功能当温湿度数据超过预设阈值时,自动触发报警通知。 ## 安装使用步骤 前提假设用户已经下载了本项目的源码文件。以下是简单明了的安装使用步骤 1. 环境准备安装Arduino开发环境,配置必要的硬件接口。 2. 硬件连接将Arduino板与温湿度传感器、无线网络模块连接。 3. 代码上传将本项目提供的Arduino代码上传至Arduino板。

    基于需求响应与清洁能源接入的配电网重构优化:综合成本与混合整数凸规划模型分析(matlab实现),基于需求响应与清洁能源接入的配电网重构算法研究:网损与成本优化的仿真分析,高比例清洁能源接入下计及需求

    基于需求响应与清洁能源接入的配电网重构优化:综合成本与混合整数凸规划模型分析(matlab实现),基于需求响应与清洁能源接入的配电网重构算法研究:网损与成本优化的仿真分析,高比例清洁能源接入下计及需求响应的配电网重构(matlab代码) 该程序复现《高比例清洁能源接入下计及需求响应的配电网重构》,以考虑网损成本、弃风弃光成本和开关操作惩罚成本的综合成本最小为目标,针对配电网重构模型的非凸性,引入中间变量并对其进行二阶锥松弛,构建混合整数凸规划模型,采用改进的 IEEE33 节点配电网进行算例仿真,分析了需求响应措施和清洁能源渗透率对配电网重构结果的影响。 该程序复现效果和出图较好(详见程序结果部分),注释清楚,方便学习 ,高比例清洁能源; 需求响应; 配电网重构; 二阶锥松弛; 综合成本最小化; MATLAB代码; IEEE33节点配电网; 复现效果; 出图; 注释清楚。,Matlab代码复现:高比例清洁能源接入下的配电网重构模型与需求响应分析

    (源码)基于C++的RapidJSON库测试项目.zip

    # 基于C++的RapidJSON库测试项目 ## 项目简介 本项目是一个基于C++的RapidJSON库测试项目,主要用于测试RapidJSON库的功能正确性、性能以及稳定性。RapidJSON是一个高效的C++ JSON解析生成库,广泛应用于各种场景。本项目通过编写一系列的单元测试,覆盖了RapidJSON库的主要功能点,包括JSON解析、生成、内存管理、编码转换等,以确保RapidJSON库在各种情况下都能正确、稳定地工作。 ## 项目的主要特性和功能 1. 单元测试框架使用Google Test测试框架进行单元测试,确保测试的可靠性和可扩展性。 2. 全面测试覆盖覆盖了RapidJSON库的主要功能点,包括JSON解析、生成、内存管理、编码转换等,以及针对各种输入数据的测试。 3. 性能测试通过性能基准测试,评估RapidJSON库在处理不同规模和类型的JSON数据时的性能表现。

    蓝桥杯单片机十一届试题.zip

    蓝桥杯算法学习冲刺(主要以题目为主)

    vmware虚拟机安装教程.docx

    内容概要:本文详细介绍如何安装和初步使用 VMware 虚拟机,从下载安装 VMware 到创建和配置新的虚拟机。主要内容包括:软件选择和安装步骤、虚拟机的新建配置、操作系统安装及初始化设置、安装 VMware Tools 提升性能以及一些常用的 VMWare 功能,如虚拟网络的不同连接方式及其应用场景。同时介绍了 VMware 软件在网络连接管理和服务配置方面的一些要点,确保虚拟机正常运行。 适用人群:计算机操作较为熟练、有意搭建不同操作系统测试环境的技术人员,以及想要了解虚拟机基本概念及应用的学生。 使用场景及目标:适合于个人用户进行系统兼容性和安全性的验证;适用于企业或开发者做软件测试、模拟复杂环境下作业,确保不影响宿主机正常工作的前提下完成多种任务;适用于教学培训环境中部署实验平台。此外,还可以用来隔离特定业务流程(比如银行工具)、探索不同类型操作系统的特点。 其他说明:需要注意的是,为了避免安装过程中出现问题,建议暂时关闭杀毒软件和防火墙。安装 VMware 需要接受许可协议,同时可以选择安装路径和安装类型(典型/自定义)。最后,对于网络设置,默认提供的三种模式——桥接模式、仅主机模式和 NAT 模式,可以帮助用户根据不同需求灵活调整网络连接方式。

    java毕业设计之网上校友录设计源码.zip

    java毕业设计源码

Global site tag (gtag.js) - Google Analytics