最新c语言--华为-网络面试题汇总.doc

上传人:1595****071 文档编号:34714657 上传时间:2022-08-18 格式:DOC 页数:183 大小:272KB
返回 下载 相关 举报
最新c语言--华为-网络面试题汇总.doc_第1页
第1页 / 共183页
最新c语言--华为-网络面试题汇总.doc_第2页
第2页 / 共183页
点击查看更多>>
资源描述

《最新c语言--华为-网络面试题汇总.doc》由会员分享,可在线阅读,更多相关《最新c语言--华为-网络面试题汇总.doc(183页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言-2010-华为-网络面试题汇总学号:2009121001学号:2009121001姓名:达选芳本题出自:题目:答案: #include stdio.h#include conio.hvoid uppers(char *s,char *us)for(;*s!=0;s+,us+)if(*s=a&*s=z)*us = *s-32;else*us = *s;*us =

2、 0;int main()char *s,*us;char ss20;printf(Please input a string:n);scanf(%s,ss);s = ss;uppers(s,us);printf(The result is:n%sn,us);getch();学号:2009121003姓名:孙英杰本题出自:华为公司题目:改错题(此代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”) 源代码为: #includestring.h main() char*src=hello,world; char*dest=NULL; intlen=strlen(src); dest=(

3、char*)malloc(len); char*d=dest; char*s=srclen; while(len-!=0) d+=s-; printf(%s,dest); return0; 答案: #includeintmain() char*src=hello,world; intlen=strlen(src); char*dest=(char*)malloc(len+1); char*d=dest; char*s=&srclen-1; while(len-!=0) *d+=*s-; *d=0;学号:2009121004姓名:胡蝶本题出自:题目:试题: 编写一个 C 函数,该函数在一个字符串

4、中找到可能的最长的子字符串,且该字符串是由同一字符组成的.答案:解答:char * search(char *cpSource, char ch) char *cpTemp=NULL, *cpDest=NULL; int iTemp, iCount=0; while(*cpSource) if(*cpSource = ch) iTemp = 0; cpTemp = cpSource; while(*cpSource = ch) +iTemp, +cpSource; if(iTemp iCount) iCount = iTemp, cpDest = cpTemp; if(!*cpSource)

5、break; +cpSource; return cpDest;学号:2009121005姓名:张虹本题出自:(无相关信息)题目:找错题/*文件名称:C/C+程序设计面试深入剖析*文件标识:C/C+笔试 面试*摘要:本课程的目的并不在于提供C/C+程序员求职面试指导,而旨在从技术上分析面试题的内涵。*/*作者:张虹,修改日期:2010年4月10日*修改的地方描述:主要是格式、说明内容的补充,代码上没有做任何修改。*/*原作者:马良,完成日期:2009年5月26日*/*试题1*/#include“stdio.h”#include“string.h”void test1() char string

6、10; char *str1=0123456789; strcpy( string, str1 );答案:试题1字符串str1需要11个字节才能存放下(包括末尾的0),而string只有10个字节的空间,strcpy会导致数组越界。/*试题2*/#include“stdio.h”#include“string.h”void test2() char string10,str110; int i; for( i=0; i10; i+ ) str1=a; strcpy( string, str1 );答案:对试题2,如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcp

7、y(string, str1)调用使得从str1内存起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10 分。/*试题3*/#include“stdio.h”#include“string.h”void test3(char *str1) char string10; If( strlen(str1) = 10 ) strcpy( string, str1 ); 答案:对试题3,if( strlen(str1) = 10 )应改为if( strlen(str1) 10 ),因为strlen的结果未统计0所占用的1个字节。剖析:考查对基

8、本功的掌握: (1)字符串以0结尾; (2)对数组越界把握的敏感度; (3)库函数strcpy的工作方式,如果编写一个标准strcpy函数的总分值为 10,下面给出几个不同得分的答案:/2分void strcpy( char *strDest, char *strSrc ) while( (*strDest+ = *strSrc+) !=0); /4分void strcpy( char *strDest, const char *strSrc ) /将源字符串加const,表明其为输入参数,加2分 while( (*strDest+ = *strSrc+) !=0); /7分void strc

9、py( char *strDest, const char *strSrc ) /对源地址和目的地址加非0断言,加3分assert( (strDest != NULL) & (strSrc != NULL) );while( (*strDest+ = *strSrc+) != 0); /10分/为了实现链式操作,将目的地址返回,加3分!char * strcpy(char *strDest, const char *strSrc) assert( (strDest != NULL) & (strSrc != NULL) );char *address=strDest; while( (*str

10、Dest+ = *strSrc+) != 0); return address; /The end学号:2009121006姓名:李宛芩本题出自:华为题目:请问以下代码有什么问题:int main()char a;char *str=&a;strcpy(str,hello);printf(str);return 0;答:没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。char* s=AAA;printf(%s,s);s0=B;printf(%s,s);有什么错?AAA是字符串常量。s是指针,指

11、向这个字符串常量,所以声明s的时候就有问题。cosnt char* s=AAA;然后又因为是常量,所以对是s0的赋值操作是不合法的。学号:2009121007姓名:白宁本题出自: 题目:1用宏定义写出swap(x,y)#define swap(x,y)x=x+y;y=x-y;x=x-y;2数组aN,存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字,时间复杂度必须为o(N)函数原型Int do_duo(int a,int N)3一语句实现x是否为2的若干次幂的判断Int i=512;Coutboolalpha(i&(i-1)?false:true)endl;4 unsign

12、ed int intvert(unsigned int x ,int p, int n)实现对x的进行转换,p为起始转换为,n为需要转换的长度,假设起始点在右边,如x=0b0001 0001,p=4,n=3转换后x= 0b0110 0001unsigned intvert(unsigned int x ,int p, int n )Unsigned int_t=0;Unsigned int_a=1;For(int i=0;I n;+i)_t|=_a;_a=_a;_t=_tp;X =_t;Return x;学号:2009121008姓名:余晓虹本题出自:华为技术有限公司题目:求1000!的未尾有

13、几个0(用素数相乘的方法来做,如72=2*2*2*3*3);答案:/*华为技术有限公司*/*当前版本:1.0.0*作者:余晓虹*完成日期:2010-4-12/#include#define NUM 1000int find5(int num)int ret=0;while(num%5=0)num/=5;ret+;return ret;int main()int result=0;int i;for(i=5;i=NUM;i+=5)result+=find5(i);printf( the total zero number is %dn,result);return 0;学号:2009121009

14、姓名:曾旭东本题出自:题目:答案:学号:2009121010姓名:郭濠瑜本题出自:IBM题目: Output of the following program ismain() int i=0;for(i=0;i20;i+)switch(i)case 0:i+=5;case 1:i+=2;case 5:i+=5;default i+=4;break;printf(%d,i);a) 0,5,9,13,17b) 5,9,13,17c) 12,17,22d) 16,21答案:d学号:2009121011姓名:吴英延本题出自:题目:试题:编写类String的构造函数、析构函数和赋值函数,已知类Stri

15、ng的原型为:class String public: String(const char *str = NULL); / 普通构造函数 String(const String &other); / 拷贝构造函数 String(void); / 析构函数String & operate =(const String &other); / 赋值函数 private: char *m_data; / 用于保存字符串 ;答案:解答:/普通构造函数String:String(const char *str) if(str=NULL) m_data = new char1; / 得分点:对空字符串自动申

16、请存放结束标志0的空 /加分点:对m_data加NULL 判断 *m_data = 0; else int length = strlen(str); m_data = new charlength+1; / 若能加 NULL 判断则更好 strcpy(m_data, str); / String的析构函数String:String(void) delete m_data; / 或delete m_data;/拷贝构造函数String:String(const String &other) / 得分点:输入参数为const型 int length = strlen(other.m_data);

17、 m_data = new charlength+1; /加分点:对m_data加NULL 判断 strcpy(m_data, other.m_data); /赋值函数String & String:operate =(const String &other) / 得分点:输入参数为const型 if(this = &other) /得分点:检查自赋值 return *this; delete m_data; /得分点:释放原有的内存资源 int length = strlen( other.m_data ); m_data = new charlength+1; /加分点:对m_data加N

18、ULL 判断 strcpy( m_data, other.m_data ); return *this; /得分点:返回本对象的引用学号:2009121012姓名:吴昊天出处:未知题目:用变量a 给出下面的定义a) 一个整型数(An integer)b) 一个指向整型数的指针( A pointer to an integer)c) 一个指向指针的的指针,它指向的指针是指向一个整型数A pointer to a pointer to an integerd) 一个有10 个整型数的数组( An array of 10 integers)e) 一个有10 个指针的数组,该指针是指向一个整型数的。(

19、An array of 10 pointers to integers)f) 一个指向有10 个整型数数组的指针( A pointer to an array of 10 integers)g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)h) 一个有10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that t

20、ake an integer argument and return an integer )答案:a) int a;b) int *a;c) int *a; d) int a10;e) int *a10; f) int (*a)10;g) int (*a)(int); h) int (*a10)(int); 学号:2009121014姓名:吴磊俊本题出自:题目:答案:学号:2009121015姓名:杨厚田本题出自:main() inta5 = 1,2,3,4,5; int *ptr =(int*)(&a+1); printf(%d %d , *(a+1), *(ptr-1) ); 这段程序的

21、输出是: (a) 2 2 (b) 2 1 (c) 2 5 (d) 以上均不是 答案 c版权:华为学号:2009121017姓名:张冬本题出自:华为题目:编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。答案:/*本文来自: IT知道网() 详细出处参考:void ResetTheTime(int *year,int *month,int *date,int *hour,int *minute,int*second) int dayOfMonth12=31,28,31,30,31,30,31,31

22、,30,31,30,31; if( *year 0 | *month 12 | *date 31 | *hour 23 | *minute 59| *second 60 ) return; if( *year%400 = 0 | *year%100 != 0 & *year%4 = 0 ) dayOfMonth1 = 29; if(*second = 60) *second = 0; *minute += 1; if(*minute = 60) *minute = 0; *hour += 1; if(*hour = 24) *hour = 0; *date += 1; if(*date day

23、OfMonth*month-1) *date = 1; *month += 1; if(*month 12) *month=1; *year += 1; return; 学号:2009121018姓名:戴兴阿里巴巴名面试题:用用最小空间度将一个M*N的矩阵旋转90度(顺逆时针均可) / 个人用五个额处空间(两个循环控制三个暂存)实现。 /作者:陈昂(http974) /算法说明: /设有一个(MN)3*4维矩阵A,旋转后成4*3 / 1 2 3 4 9 5 1 / 5 6 7 8 = 10 6 2 / 9 10 11 12 11 7 3 / 12 8 4 可以发现旋转后矩阵与原矩阵的关系: /

24、 旋转后 原矩阵 / A0,0 = A2,0 = 9 / A0,1 = A1,0 = 5 / A0,2 = A0,0 = 1 / A1,0 = A2,1 = 10 / A1,1 = A1,1 = 6 / A1,2 = A0,1 = 2 / A2,0 = A2,2 = 11 / A2,1 = A1,2 = 7 / A2,2 = A0,2 = 3 / A3,0 = A2,3 = 12 / A3,1 = A1,3 = 8 / A3,2 = A0,3 = 4 代码:/*copyright 陈昂*/ #include #include #define M 3 #define N 4 main() int

25、 MatrixMN=1,2,3,4,5,6,7,8,9,10,11,12; int i=0 ; int j=0 ; int tmpi = 0; int tmpj = 0; int u = 0; printf(原矩阵为:n); for (i= 0 ;i M ;i+) for(j=0 ; j N; j+) printf( %d ,Matrixij); printf(n); printf(顺时针转90度后:n); for (i= 0 ;i N ; i+) for(j= 0 ; j M; j+) /求该交换元素在原矩阵对应的位置 tmpi = M- j -1; tmpj = i ; /循环查找最后交换

26、的位置 while(tmpi * N + tmpj) i * M + j ) u= (tmpi * N + tmpj ); tmpi = u / M ; tmpj = u % M ; tmpi = tmpi + tmpj; tmpj = tmpi - tmpj; tmpi = tmpi - tmpj; tmpi = (M-tmpi -1); /交换矩元素,后一个作暂存用 if (*(&Matrix00 + i * M + j) != Matrixtmpitmpj) *(&Matrix00 + i * M + j) = *(&Matrix00 + i * M + j) + Matrixtmpit

27、mpj; Matrixtmpitmpj = *(&Matrix00 + i * M + j) - Matrixtmpitmpj; *(&Matrix00 + i * M + j) = *(&Matrix00 + i * M + j) - Matrixtmpitmpj; printf( %d ,*(&Matrix00 + i * M + j); printf(n); getch(); return 0; 学号:2009121019姓名:周凤建本题出自:题目:#include int inc(int a) int inc(int a) return(+a); int multi(int*a,int

28、*b,int*c) int multi(int*a,int*b,int*c) return(*c=*a*b); typedef int(FUNC1)(int in); typedef int(FUNC1)(int in); typedef int(FUNC2) (int*,int*,int*); typedef int(FUNC2) (int*,int*,int*); void show(FUNC2 fun,int arg1, int*arg2) void show(FUNC2 fun,int arg1, int*arg2) INCp=&inc; int temp =p(arg1); int

29、temp =p(arg1); fun(&temp,&arg1, arg2); fun(&temp,&arg1, arg2); printf(%dn,*arg2); main() int a; int a; show(multi,10,&a); return 0; return 0; 学号:2009121020姓名:杨川本题出自:IBM C语言面试题题目1:请编写能直接实现char * strcpy(char * pstrDest,const char * pstrSource)函数功能的代码。题目2:编写反转字符串的程序,要求优化速度、优化空间。1: char * strcpy(char *

30、pstrDest,const char * pstrSource) assert(pstrDest!=NULL)&(pstrSource!=NULL); char * pstr=pstrDest; while(*(pstrDest+)=*(pstrSource+)!=0); return pstr;2:char * strrev(char * pstr) assert(pstr!=NULL); char * p=pstr; char * pret=pstr; while(*(p+)!=0); p-; char tmp; while(ppstr) tmp=*p; *(p-)=*(pstr); *

31、(pstr+)=tmp; return pret;/*本篇文章来自IDC专家网 原文链接:* Copyright (c) IBM c语言面试题* 文件名称: * 文件标识:根据软件工程设置* 摘要:IBM公司的面试题*/下面其它的声明代码/下面是原作者、版本、完成、日期和当前版本的信息/* 当前版本:1.0.1* 作者:zhyindividual 责任编辑:lujiezhen ,修改日期:2005年4月5日* 修改的地方描述:*/* 取代版本:1.0.0* 原作者:zhyindividual 责任编辑:lujiezhen ,完成日期:2010年4月31日*/学号:2009121021姓名:何科

32、成问题:struct a int x; char y; struct a z; struct a *p; 请问这种定义结构正确否? 如果有问题,问题在哪里?答:结构中不能对定义结构本身的非指针变量,如果编译器支持则会导致无限嵌套,因此一般编译器都会认为struct a是未定义的类型,即使提前声明也不会有任何用处。学 号:2009121022姓 名:王浩本题出自: 微软题 目:设计程序让其CPU占用呈余弦曲线显示-perl版 #!/usr/bin/perluse strict;use warnings;use Win32;use constant COUNT = 200;use constant SPLIT = 0.01;use constant PI = 3.14159265;use constant INTERVAL = 300;use constant TRUE = 1;main();sub main my busySpan; # array of busy timesmy idleSpan; # array of idle timesmy $half = INTERVAL / 2;my $radian = 0.0;my $i;for ($i = 0; $i COUNT; $i+) $busySpan$i = int($half + (sin(PI * $ra

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

当前位置:首页 > 教育专区 > 成人自考

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁