说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

快来找BUG(华为试题)!!-csf

编辑:说三道四文库 发布时间:2017-04-26 10:06
HTML文档下载 WORD文档下载 PDF文档下载
实现字符串反序排列。
请问有没有BUG。或者高手拿出巧妙的算法
让华为的瞧瞧!!

char * revers(char *s)
{
int len;
len=strlen(s);
//char *p=new char[len];
char *p=(char *)malloc(sizeof(char)*len);
char *h=p; 
char *t;int l=len-1;
for(t=s+l;l>=0;l--,t=s+l)
{*p=*t;
p++;
}
return h;

}
main()
{
char *s="string";
printf("%s",revers(s));
_getch();

}
这里h是局部变量,它的作用域只在revers函数中
所以当return后,该指针也就随之消失,
所以将得到一个莫名的地址.
打印的也就不知道是什么了.:)
应该在for语句后再加上一条
*p='\0';
这样字符串才能正常结束
打印才能正常:)
我上面的说法好像是错了
不要介意呦:)
t=s+l  ->*t=*s+l
t=s+l ->*t=*s+l
char * revers(char *s)
{
    int len =strlen(s);
    char *p=new char[len + 1];
    for(int i = len;i == 0; i--)
        p[len - i] = s[i];
    p[len + 1] = '\0';
    return p;
    
}
char * revers(char *s)
{
    int len =strlen(s);
    char *p=new char[len + 1];
    for(int i = len;i == 0; i--)
        p[len - i] = s[i];
    p[len + 1] = '\0';
    strcpy(s, p);
    delete p;
    return s;
    
}
应该是 delete []p;
strlen 得到的是字符串实际长度,l = len -1就开始好像有问题了!
strlen 得到的是字符串实际长度,l = len -1就开始好像有问题了!
#include <stdio.h>
#include <string.h>
#include <conio.h>

char * revers(char *s)
{
        int len,index=0;
        len=strlen(s);
        char * p = new char[len];
        while( len - index > 0 )
                *(p+index) = *(s+len-1-index++);
        *(p+len)=0;
        return p;
}

void main()
{
        char *s="string";
        char * rs;
        printf("%s",rs=revers(s));
        getch();
        delete []rs;
}
holyfire(发了财的众神之焰):
你的 p 并没有释放,会不会有问题?
delete []rs;
这不就释放了吗。
请问原试题是在*.c文件上还是*.cpp上。
我的感觉是华为比较喜欢考纯 C 的程式.
我的:


char * revers(char *s)
{
    int len=strlen(s);
    int idMax=len-1;
    len>>=1;
        
    for(int i=0;i<len;i++)
    {
     s[i]^=s[idMax-i];
     s[idMax-i]^=s[i];
     s[i]^=s[idMax-i];
    }     
       
    return s;
    
}
呵呵,正规的应该是:
char*   reverse (char*   s)
{
      char    c;
      char*   begin;
      char*   end;

      begin = end = s;

      while (*end++);

      end --;

      while (end>=begin)
      {
           c = *begin;
           *begin = *end;
           *end = c;
           end --;
           begin ++;
      }

      return s;
}



                华为那这种考题来考你,摆明了就是不打算要你了:)



与其说是有bug,应该说这个程序是错误的更恰当。
第一,strlen返回的字符串长度不包括字符串结束符'\0',所以char *p=(char *)malloc(sizeof(char)*len);应该是sizeof(char)*len+1;
第二,该程序中最大的错误是在函数体中使用malloc函数分配内存,但是没有在函数中释放内存。事实上该程序不需要分配内存,而是使用原来的字符串就可以了。
liuto(b34)写的程序是正确的。

如果要求不改变源字符串则函数的声明应该是
循环次数减少一半

char * revers(char *s)
{
    int i;
    char c;
    int len=strlen(s);

    for (i=0;i<len/2;i++){
        c=s[i];
        s[i]=s[len-i-1];
        s[len-i-1]=c;
    }
   
    return s;
    
}
其实,华为不是一个软件公司。
所以,只好出这样的题
去华为的人将来就一辈子研究这样的问题了,.
别动不动就把华为的试题拿出来,烦着呢,华为有什么了不起
p没有释放内存,很显然造成内存泄漏。
太初级
改正后的程序为:
这个BUG很狡猾,它是一个逻辑错误,不是一个语法错误。所以程序是能运行的,甚至显示给你看的还是正确的结果。为什么呢?
由于字符串没有结束标记'\0',所以返回的h会将得到一些无用的字符,这是因为h碰不到结束标记'\0',它会一直向下查找,到发现'\0'标记为止。如果该字符串所占用的内存后面的内存是空的,就可能只显示反字符串,否则,不知道会有什么东东。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
char * revers(char *s)
{
    int len;
char *tt;
    len=strlen(s);
    //char *p=new char[len];
    char *p=(char *)malloc(sizeof(char)*len+1);
    char *h=p; 
    char *t;int l=len-1;
    for(t=s+l;l>=0;l--,t=s+l)
    {*p=*t;
    p++;
    }
*(p++)='\0';
        return h;
    
}
void main()
{
    char *s="string";
    printf("%s",revers(s));
    _getch();
}
田野说的对!
华为的考官就是这个意思!
错误岂止一个啊,首先算法效率就已经不高,分配的内存也不够,字符串结束的时候忘记加结束符,分配了的空间又没有释放。简直就是垃圾,我刚学C的时候也不至于出这么多错误啊
赫赫,程序写成这个样子也敢拿出来作考题,赫赫赫赫




                如果被问了这种问题,你应该说:“请问点有难度的问题吧,今天我很忙,不是来玩的。”你难道就一点都不以为这种难度的问题根本就不是用来考程序员的吗?简直就实践你在当三岁的小孩耍嘛。



这是华为的找bug题吧?
首先strlen返回实际长度。所以分配内存就少了一个字节。
然后,将源串copy完后,又没有在最后加一个\0.(想加按它这样也是个Access vialation.)
这本来就是改错题
华为不是一个软件公司



什么意思
华为确实不是一个软件公司。
面试华为的考题都很简单,象这样的已经很难了。
看这里,采用递归实现逆序
#include <iostream.h>
#include <stdio.h>

void Reverse( char* string)
{
  if(*string)
 {
  Reverse( string+1 );
  cout<< *string;
 }
}

void main()
{
 char   s[128];
 cout << "Please the string:" ;
 cin >> s ;
 cout << "The backward string is:";
 Reverse( s );
 cout << endl;
}
这是什么的考官啊。
小中见大,各位都在吹牛皮,你们看看,上面有几位把bug找全了呢,我看没有,华为出这道题,肯定有他的用心,华为人并不是吃干饭的,否则他也不会在国内那么出名!!!
话不能这么说,你先看看那个考题,那也叫程序呀,算法,语言的使用,哪有一样上的了台面?你出个改错题面儿上总得过得去吧。
说说我的看法,存在的问题如下:

1.strlen(s)得到的长度值不包括0,所以应多一个字符空间:
char *p=(char *)malloc(sizeof(char)*(len+1));
从而t的初值当然也不对了,应是t=s+len-1;
从而逆排后还要加个0。

2.循环中用t--更快,l在这里可不用。

3.在main中没有保存返回的h指针,所以逆排字符串的内存块无法释放,
解决方法是:或是原地逆排,或是改原型为char *reverse(char *src, char *tag);

4.我会这样写:
char *reverse(char *src, char *tag)
{
 char *p=tag+strlen(src);
 *(p--)=0;
 while (*src)
  *(p--)=*(src++);
 return tag;
}
main()
{
 char *tmpbuffer=(char *)malloc(100*sizeof(char)), *s="hello.";
 printf("%s\n",reverse(s,tmpbuffer);
 free(tmpbuffer);
}
若是原地逆排,可为:
char *reverse(char *src)
{
 char *p1=src, *p2=src+strlen(src)-1, tmp;
 while (p1<p2)
 { tmp=*p1, *p1=*p2, *p2=tmp; p1++; p2--; }
 return src;
}
我觉得这样写没什么不清楚的。而且strlen是用汇编写的,应该比自己的
while要快一点点,且易读。

5.虽然我没见过什么招聘的考试题目,但我觉得这可能不是真的考题,
有点.....。
 希望是真的吧,那样我就好找工作了。
关于效率
strlen尽管你可以认为它是汇编写的,但它决不会比while快
因为while也会变成汇编:)

strlen不见得比while快,呵呵,因为while最终也要变成机器码,呵呵呵呵
我觉得这题出得有意思,你能设计出这样在这么小的程序中出现这么多有代表性问题的问题吗?
有malloc没有free,对称性。有后面还有朋友在函数外delete呢,不还是关于编程的习惯问题的。不是许多人都强调不要在函数内申请内存而在其它地方释放吗?
另一个是关于字符串的结束问题的,你以为你平时编程序就一定注意到吗?
在别人说出来之后你觉得简单,但如果你自己的程序里有这问题你未必能很快找出来或者说你可能根本就不在意。但这是好习惯吗?
你见过大多数时候是好的而有时不知道怎么回事就是不正常的系统吗?这可能就与这小小的毛病引起的,你真的能时时注意到吗?
又是这道题,俺都要看的不耐烦了!
华为难道每年都是这些题贴来贴去的吗?华为太失败了!

为什么没有人使用STL??????????????????????
大家在嘲笑别人的时候 只是证明自己的无知 操!!!
redfaceeggs(夜深沉)
注意用语

这是就事论事,这道题用STL未免小题大做而且效率不高不合题意。

先让我们来看看这个函数的界面
char * revers(char *s);
如作为函数的使用者来说,我将存在以下疑问!
1  返回值是指向原来的字符串地址么?极不明确!
如果是:
  在原来的字符串地址上进行反序合理么?
  例如:
  char *str="hello";
  char *rstr=revers(str);
  cout <<"originally string :"<< str << " reversed string "<< rstr<< endl;
    高了半天两个string 是一样的。使使用者很容易犯下这样的错误。
    
如果不是:
那返回的字符串地针是指向的什么地址呢? 用malloc 分配在堆的?还是用new 分配的呢?
还是静态的缓冲区呢?(估计不会是栈上的吧:))
    还关系到我对于这块缓冲区怎样处理的问题,要不要释放?怎样释放?
    
2 我怎样知道函数反序成功了呢?
   我的理解是当返回值为null就是失败了。反之则成功!
char *str="hello";
char *rstr;
if(null==(rstr=revers(str))); 
//当然也可以写成if(rstr=revers(str)),但这样意思更表达不明显! 
在一上判断的语句中不要把赋值工作加上去!

那这个函数界面写成这样:
bool  revers(const char *ostr,char *rstrbuf,size_t buflen);
  应不需要解释参数了吧。

使用起来:
char *str="hello";
size_t nlen=strlen(str)+1;
char *rstr=new char[nlen];
if(revers(str,rstr,nlen))
{
........
}
delete [] rstr;
或使用auto_ptr更方便!

关于函数的实现,可以下:

bool  revers(const char *ostr,char *rstrbuf,size_t buflen){
assert(ostr);
assert(rstrbuf);
assert(buflen==strlen(obstr)+1);// 这里是不是有一个问题 buflen 空间大小必须与原来的一值么?要求过分?

*(rstrbuf+buflen-1)='\0';
while('\0'!=ostr && --buflen){
*(rstrbuf+buflen-1)=*ostr;
ostr++;
}
return buflne;
}
关注
char *p=(char *)malloc(sizeof(char)*len);
如果P 返回NULL的话,全歇,后面就是对一个不安全的指针进行操作,谁知道现在P 指向哪里,
也许是系统区。呵呵。我去中兴也碰到了。
    



       chishufei:
                  你其实是在找人帮你做作也吧,我今天去华为面试,就没见你的这些“经典题”。




给我加分:::::

我非常同意cppfan(易得糊涂) 的看法,如果叫我回答你也是这样,其他的方法全错!!因为用指针返回是非常危险的做法,应开以参数的形式传递并最终获得结果,这点你一定要记住!!不然华为一定会炒你!!!!!


前天万里兄的源码分析较为透彻;
Kevin伙计率先采用对称交换方法,的确可以提高效率并达到目的可惜算法实现不够精确,字符串正中部位的两处字符有时会得不到处理;
无忌的处理方法又有新意,但只是输出回环有效,而结果却没有保存。
我对源程序中revers子程序的意见:
1、该子程序返回指针值,该指针所指向的资源不可能是在该子程序内分配的,而只能是指针类型
   参数所指的资源,因此万里兄的代码中有
   a、 strcpy(s, p);//将回环字符串指针p的资源内容拷贝到s所指的资源中
   b、 return s;//*****s便是实参了*****
2、设有int len=strlen(s);
   a、则华为源码中char*p=(char *)malloc(sizeof(char)*len;应为
      char*p=(char*)malloc(len+1)
   b、在strcpy(s, p)之前,应有
      p[len+1]="\0";
3、回环算法:各位已有诸多展示,归纳起来为如下三种:
   a、经典算法:如万里和华为源码所示
   b、中心对称交换法:如Kevin所示
   c、递归法:如无忌所示
   d、其它.................................
   




    
出这样的题的侧重点是考程序员找bug的能力,以及对细节的注意,而不是考你的新技术。要知道一个小小的bug是很可能足以让一台交换机down掉的,到了那时候,电信局好多天的话费单可能就会因为这样一个小bug就丢了,电信局要赔偿的时候,开发人员可是要吃不了兜着走的。这些题目里要考的东西实际上也是开发人员常犯的错误的一部分,而且一般都是有以往的实际教训的。
更社交化:谷歌将推出Google Play平台服务 C语言对磁盘文件进行快速排序 传Google已关闭短信搜索服务 PayPal首席安全官:靠密码验证身份即将寿终正寝 DRM你又赢了:其API纳入HTML5标准 豌豆荚王俊煜:洗白白其实是一个计划外的产物 抢Google等巨头生意,纽约大学小伙挖掘并出售自己数据 noBackend:前端优先的开发模式 C、CPP const 详解 三星5G技术获得突破性进展 未来传输速度可达10Gbps 5月14日:1984年美国社交网站Facebook创办人Mark Zuckerberg出生 Chartkick:一行代码即可绘制出漂亮的图表 用友UAP将打造开放平台 建应用商店销售企业级应用 共享软件营销:如何将你的产品推向海外 谷歌使用Debian Linux作为GCE的默认操作系统 大数据?别唬人了!我们真的需要盲目烧钱追求大数据吗? 日本社交手游公司GREE巨星陨落 中国区全员被裁 战歌:85后手游开发团队背后的故事 分秒钟做款App:细数国内外在线DIY应用网站 指点传媒CEO专访:紧握二三线市场用户命脉 专访Waygo创始人:白切鸡怎么翻译? 探究共享软件海外营销新策略(西安站) 讲师秀8:车音网沈康麒和他的智能驾车服务 数据可视化独领风骚:看这6家初创公司如何玩转大数据? 最新研究显示:IE10防恶意软件能力比Chrome等浏览器都要强 Windows Blue正式定名Windows 8.1 对Windows 8及RT用户免费 Testin云测试破1000万次 自动化测试成趋势 接手Android后首次接受媒体采访 Sundar Pichai谈Android未来 C语言实现二分法查找 让开发者高效编程的10个新框架 Google Analytics中显示访客停留时间为“0”的秘密 关于javabean的路径问题 新配了一台机子,有点问题,望高手指点? 请问当知道局域网内机器的ip以及文件夹的路径能否访问其文件夹下面的文件 我买了一台新机子,有点问题,清高手指点 一个关于TreeView的问题 谁有http代理方面的资料或文档? 数据库问题很难...初级莫入 算法设计 用cuteftp如何上传大于1M的文件!?? 查询和统计问题 一个关于随机数的算法问题! Redhat 7.2下怎样安装双网卡,没有XWINDOW??? 怎样把下拉列表框设置为只读属性?? 我读取的html文件内容用innerHTML方式放入iframe中为什么部分内容被删除了? AutoCAD VBA 的问题 我在98下装media player为什么提示wmvcore.dll错误 如何进行序列化? 我在LAN中装pp点点通为什么登陆不了 在Delphi三层结构中如何实现传递自定义类型 在线等待!!我在W2K Ser下装Norton antivirus,可自动保护服务不能启动,为什么?? unix-遍程基础:避免僵尸进程defunc的方法有那些?欢迎参与讨论 在Delphi三层结构中如何实现传递自定义类型 关于CDaoQueryDef的SetSql语句占着内存不放 求教! 关于PB的打包问题 央视版《射雕英雄传》主题歌 ,搞笑!!! 关于BSTR的奇怪问题 国内Delphi 的最高认证是什么?一个菜鸟~走到那一步大约要花多少时间? SOS 有没有位可以捕捉到接收开始,象RI捕捉接收结束一样 JSP环境配置、软件下载。 大四女生的困惑 The C++ Programming Language(网上有购这本书的吗) 秋水,有没有见过这个好东西? Install shield怎么把不同的5组文件安装到不同目录下? 有没有哪位大哥有超时重发的源代码可供我参考一下,指个方向也行 拷光盘 很菜的问题,在线等候,谢谢! 怎样才能够将日期型、数字型的数值添加到字段里 能否做到这样? 各位高手,请教关于C++函数指针的问题, 急等。 Install shield怎么把不同的5组文件安装到不同目录下? 关于DNS的,大家看看 大四女生的困惑 我上个月定的程序员第六期为何至今还未收到? 我为什么上不来CSDN?不用代理服务器~ 全球制造业蜂拥中国 美专家担心导致全球全球过度依赖大陆 怎样使程序不在任务栏显示! 一个新手问题,在线等待,多谢帮助! Install shield怎么把不同的5组文件安装到不同目录下? 如何让系统每隔一段时间向数据库中写一次数据 二氧化氯的性质及作用 能用于装修带来得污染么? 怎样把氧化物写成盐的形式 如Fe3O4,写成Fe(FeO2)2, Pb3O4,写成Pb2PbO4 11KW电机配多大断路器配3P,32A小型断路器可行吗? 请问FLUENT软件里有蒸发模型嘛? 我要参加一个唱歌比赛,希望有个短而精彩的自我介绍!简短的要,棒棒忙吧,谢谢了 起重机的电器是怎么配置的啊,比如10KW的电机怎么计算所需陪用多大的接触器,断路器我是长远一个起重机厂的,需要学配电啊 堵煤开关有什么特性? 大队长改选一分钟自我介绍(现在是大队长,马上要改选了,要短的,能让人投自己一票的) 1000瓦的电机用 多大的 断路器1000瓦的电机用多大的断路器比较合适?能起到保护作用. fluent的图怎么放大我用的是双键鼠标 帮助里面提示用三键鼠标的中键来放大缩小我用的是双键的鼠标 没有中键 改选大队长两分钟自我介绍滥竽充数的死一边去!抄袭者死...不废话了!好的加250哦!开玩笑的...20! 10KW的机器,应该用多大的断路器,选择断路器有什么区别吗?选择断路器,是不是要先算出多少安倍,才可以选择多大的断路器?比如10KW/380V=26.13,那就要选择26A的断路器吗?是不是太小了啊?如果我选 开关机械特性速度m 红磷燃烧后玻璃管中有黄色固体附着是什么 白磷变黄是化学变化吗? 开关都有哪些品牌?各有什么特点? 有机玻璃的制备为什么会变黄 为什么铁与稀硝酸反应不能生成氢气? 断路器的分断能力和脱扣特性怎样理解例如,NDB1C-63C32 4p,分断能力6KA,这怎么理解,是说此断路器能分断的最大电流为6KA,脱扣特性为C型,但脱扣不也是指断开吗?这分断能力和脱扣特性有什么区别 一个起重机吊着1200牛的物体以2米每秒的速度向上运动,钢绳对物体的拉力多大? 少量铁与稀硝酸反应怎么就不能生成氢气?别说硝酸根氧化性强于氢离子,毕竟它还无法氧化氢气,所以即便铁置换了氢,硝酸根氧化性再强也没办法.再说我这已经说明了量的关系,扯别的的人就 团支书的自我介绍 吊车调起1吨的货物匀速向上运动,则吊车的钢丝绳所需的拉力为多少N?若吊着它匀速下降时,则钢丝绳的拉里关键是最后一问哈 我等到难死了 铁和稀硝酸反应不放出氢气,若硝酸过量,生成的盐是?若反应后无铁剩余,则生成的盐可能是什么或什么或什么?若反应后有铁剩余,则生成的盐是? 北虫草用塑料盆是什么材料制成的 起重机用钢丝拉一物体加速竖直向上运动时钢丝绳突然断后的一瞬间,物体将(  )A.加速下落 B.停止上升 C.继续上升 D.静止后下落 注意:是加速运动,不是匀速运动 灰褐色是什么颜色 团支书自我介绍 一支温度计的刻度均匀,但示数不准,在一个标准大气压下,将它放在沸水中,示数为95摄氏度,放入冰水混合物中,示数为5摄氏度,把温度计悬挂在教师的墙上,其示数为32摄氏度,则教室内的实际温 什么灰蓝色、灰褐色、灰棕色、黄绿色、紫红色、银灰色,其实它们是一种颜色还是两种颜色啊?譬如灰蓝色,是不是灰色+蓝色啊? 我是大一新生,想要竞选团支书,该怎样在全班同学面前作自我介绍及一些注意事项呢?,说的时间大概一到三分钟 1.5KW的单相电动机用多大的空气开关啊?怎样计算的啊? 1.5KW,额定电流3.42A的电机,用最大4A的开关可以吗? 欧洲哪可以坐热气球 小学生四年级20字以内自我简介是校园之星的自我简介,不能太长.请在今天内回答我,明天就要交,我会提高悬赏.)我是个女孩哦! HDPE是高压塑料还是低压塑料粒子 使肉发臭单细胞生物是? 加热红磷为什么会产生黄色气体 LED T5 和T8灯管的区别? 使肉发臭的单细胞生物属于() 红磷在加热条件下能与氧气发生反应吗 山那边的山啊,铁青着脸/给我的幻想打了一个零分!用了什么修辞手法?并仿写一个句子. 肉发臭了还能吃么?昨天晚上买的里脊肉.忘记放到冰箱里了.今天中午准备做得时候才发现有点发臭了.用盐阉了一下.用油炸了下,请问能吃不了?.本人比较懒.家里实在没吃的了.又不想出去买了 有一只温度计刻度不准,将温度计放入冰水混合物中示数是-3℃,放入沸水(1标准大气压)中示数是97℃,若放入室内示数是20℃,那么室内的实际温度是多少? 赏析句子:山那边的山啊,铁青着脸,给我的幻想打了一个零分 食肉发臭的是一种单细胞生物(),这类生物个体微小,用()才能观察到单个个体,但我们可以看到大量的()繁殖在一起所形成的() N2(g)+3H2(g)==2NH3(g)△H=akJ/mol,在恒温恒容时甲乙两容器分别充入1molN2,3molH2、和2molNH3.反映结束后能量变化为bkJ,ckJ,则a,b,c之间有什么关系 氧气和液态氧是同一种物质么? 吃了发臭的肉怎么办?不小心吃了发臭的鸡呀 肉呀,该吃点什么或怎么做来避免肚子痛等不良症状? 请大家帮忙写写评选大队长的自我介绍! 目前世界最高年产量的金属是铁还是铝? 制作透明塑料袋的配方哪家会分析?我们厂想制作一些透明塑料袋,有一批进口的塑料袋想分析下, 红磷加热到416度升华后冷凝成白磷是化学变化吗 目前全球年产量第一位的金属是什么 FeO、Fe2O3、Fe3O4现有两种氧化物组成的混合物,其中Fe、O两元素的质量比为35:12,小明分析混合物组成FeO和Fe2O3、FeO和Fe3O4、Fe2O3和Fe3O4,那组正确 铁有三种常见的氧化物:FeO、Fe2O3、Fe3O4.现有某铁的氧化物样品,已知其中铁元素与氧元素的质量之比是21:8,关于该样品的说法正确的是_______A.一定是纯净物B.一定是混合物C.可能是纯净物,也可 红磷烧到416度的时候就能升华变白磷,那为什么烧过之后出来的是五氧化二磷?(火的温度肯定高于416度) 如何检测塑料粒子中所含的油分?最近我们公司所做的膜普遍出现电晕衰退现象,疑为塑料粒子或填充料中的油分经成型后,在成品膜表面析出一定的油分所致,苦思找不到检测其油分好办法,有 已知Fe元素在化合物里通常显示+2或+3价,因此Fe3O4,可写成氧化物形式FeO·Fe2O3,或盐的形式Fe(Fe02)2,他属于偏铁酸盐,Pb在化合物里显+2或+4价.那么Pb3O4也可以写成____或_____.(答案是2PbO·PbO2 或 Pb2Pb 氯化钠在通电后发生了电离,所以,它的水溶液能导电.这句话哪里错了能不能用简单的语言来回答我呢
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘