C语言2010华为网络面试题汇总.doc
《C语言2010华为网络面试题汇总.doc》由会员分享,可在线阅读,更多相关《C语言2010华为网络面试题汇总.doc(43页珍藏版)》请在咨信网上搜索。
学号:2009121001 姓名:达选芳 本题出自:<华为公司> 题目:<实现一个函数,把一个字符串的小写转化成大写> 答案: #include "stdio.h" #include "conio.h" void uppers(char *s,char *us) { for(;*s!='\0';s++,us++) { if(*s>='a'&&*s<='z') *us = *s-32; else *us = *s; } *us = '\0'; } int main() { char *s,*us; char ss[20]; printf("Please input a string:\n"); scanf("%s",ss); s = ss; uppers(s,us); printf("The result is:\n%s\n",us); getch(); } 学号:2009121003 姓名:孙英杰 本题出自:华为公司 题目:改错题(此代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”) 源代码为: #include"string.h" main() { char*src="hello,world"; char* dest=NULL; int len=strlen(src); dest=(char*)malloc(len); char* d=dest; char* s=src[len]; while(len--!=0) d++=s--; printf("%s",dest); return 0; } 答案: #include<stdio.h> int main() { char* src = "hello,world"; int len = strlen(src); char* dest = (char*)malloc(len+1); char* d = dest; char* s = &src[len-1]; while( len-- != 0 ) *d++=*s--; *d = 0; 学号:2009121004 姓名:胡蝶 本题出自:<华为> 题目:<按照编码规范写题目> 试题: 编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的. 答案:<有编码的答案按照编码规范写> 解答: 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) 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[10]; char *str1="0123456789"; strcpy( string, str1 ); } 答案:试题1字符串str1需要11个字节才能存放下(包括末尾的’\0’),而string只有10个字节的空间,strcpy会导致数组越界。 /* *试题2 */ #include“stdio.h” #include“string.h” void test2() { char string[10],str1[10]; int i; for( i=0; i<10; i++ ) { str1='a'; } strcpy( string, str1 ); } 答案:对试题2,如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpy(string, str1)调用使得从str1内存起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10 分。 /* *试题3 */ #include“stdio.h” #include“string.h” void test3(char *str1) { char string[10]; If( strlen(str1) <= 10 ) { strcpy( string, str1 ); } } 答案:对试题3,if( strlen(str1) <= 10 )应改为if( strlen(str1) < 10 ),因为strlen的结果未统计’\0’所占用的1个字节。 剖析: 考查对基本功的掌握: (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 strcpy( 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( (*strDest++ = *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); s[0]='B'; printf("%s",s); 有什么错? "AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。 cosnt char* s="AAA"; 然后又因为是常量,所以对是s[0]的赋值操作是不合法的。 学号:2009121007 姓名:白宁 本题出自:<思科> 题目:<用宏定义写出swap(x,y)> 1用宏定义写出swap(x,y) #define swap(x,y) x=x+y; y=x-y; x=x-y; 2数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字,时间复杂度必须为o(N)函数原型 Int do_duo(int a[],int N) 3一语句实现x是否为2的若干次幂的判断 Int i=512; Cout<<boolalpha<<((i&(i-1))?false:true)<<endl; 4 unsigned int intvert(unsigned int x ,int p, int n)实现对x的进行转换,p为起始转换为,n为需要转换的长度,假设起始点在右边,如x=0b0001 0001,p=4,n=3转换后x= 0b0110 0001 unsigned 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=_t<<p; X ^=_t; Return x; } 学号:2009121008 姓名:余晓虹 本题出自:华为技术有限公司 题目:求1000!的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3); 答案: /******* *华为技术有限公司 *************/ /*当前版本:1.0.0 *作者:余晓虹 *完成日期:2010-4-12 / #include<stdio.h> #define NUM 1000 int 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 %d\n",result); return 0; } 学号:2009121009 姓名:曾旭东 本题出自:<华为 > 题目:<s如何引用一个已经定义过的全局变量? > 答案:<答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 > 学号:2009121010 姓名:郭濠瑜 本题出自:IBM 题目: Output of the following program is main() { int i=0; for(i=0;i<20;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,17 b) 5,9,13,17 c) 12,17,22 d) 16,21 答案:d 学号:2009121011 姓名:吴英延 本题出自:<华为> 题目:<按照编码规范写题目> 试题:编写类String的构造函数、析构函数和赋值函数,已知类String的原型为: 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 char[1]; // 得分点:对空字符串自动申请存放结束标志'\0'的空 //加分点:对m_data加NULL 判断 *m_data = '\0'; } else { int length = strlen(str); m_data = new char[length+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); m_data = new char[length+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 char[length+1]; //加分点:对m_data加NULL 判断 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 integer d) 一个有10 个整型数的数组( An array of 10 integers) e) 一个有10 个指针的数组,该指针是指向一个整型数的。(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 take an integer argument and return an integer ) 答案: a) int a; b) int *a; c) int **a; d) int a[10]; e) int *a[10]; f) int (*a)[10]; g) int (*a)(int); h) int (*a[10])(int); 学号:2009121014 姓名:吴磊俊 本题出自:<華為 > 题目:<局部变量能否和全局变量重名? > 答案:<能,局部会屏蔽全局。要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内> 学号:2009121015 姓名:杨厚田 本题出自:<华为 > main() { int a[5] = {1,2,3,4,5}; int *ptr = (int*)(&a+1); printf("%d %d" , *(a+1), *(ptr-1) ); } 这段程序的输出是: (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 dayOfMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31}; if( *year < 0 || *month < 1 || *month > 12 || *date < 1 || *date > 31 || *hour < 0 || *hour > 23 || *minute < 0 ||*minute > 59|| *second <0 || *second >60 ) return; if( *year%400 == 0 || *year%100 != 0 && *year%4 == 0 ) dayOfMonth[1] = 29; if(*second >= 60) { *second = 0; *minute += 1; if(*minute >= 60) { *minute = 0; *hour += 1; if(*hour >= 24) { *hour = 0; *date += 1; if(*date > dayOfMonth[*month-1]) { *date = 1; *month += 1; if(*month > 12) { *month=1; *year += 1; } } } } } return; } 学号:2009121018 姓名:戴兴 阿里巴巴名面试题: 用用最小空间度将一个M*N的矩阵旋转90度(顺逆时针均可) // 个人用五个额处空间(两个循环控制三个暂存)实现。 //作者:陈昂(http974@) //算法说明: //设有一个(M×N)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 可以发现旋转后矩阵与原矩阵的关系: // 旋转后 原矩阵 // A[0,0] = A[2,0] = 9 // A[0,1] = A[1,0] = 5 // A[0,2] = A[0,0] = 1 // A[1,0] = A[2,1] = 10 // A[1,1] = A[1,1] = 6 // A[1,2] = A[0,1] = 2 // A[2,0] = A[2,2] = 11 // A[2,1] = A[1,2] = 7 // A[2,2] = A[0,2] = 3 // A[3,0] = A[2,3] = 12 // A[3,1] = A[1,3] = 8 // A[3,2] = A[0,3] = 4 代码: /*copyright 陈昂*/ #include<stdio.h> #include<conio.h> #define M 3 #define N 4 main() { int Matrix[M][N]={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 ",Matrix[i][j]); printf("\n"); } printf("顺时针转90度后:\n"); for (i= 0 ;i< N ; i++) { for(j= 0 ; j< M; j++) { //求该交换元素在原矩阵对应的位置 tmpi = M- j -1; tmpj = i ; //循环查找最后交换的位置 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 (*(&Matrix[0][0] + i * M + j) != Matrix[tmpi][tmpj]) { *(&Matrix[0][0] + i * M + j) = *(&Matrix[0][0] + i * M + j) + Matrix[tmpi][tmpj]; Matrix[tmpi][tmpj] = *(&Matrix[0][0] + i * M + j) - Matrix[tmpi][tmpj]; *(&Matrix[0][0] + i * M + j) = *(&Matrix[0][0] + i * M + j) - Matrix[tmpi][tmpj]; } printf(" %d ",*(&Matrix[0][0] + i * M + j)); } printf("\n"); } getch(); return 0; } 学号:2009121019 姓名:周凤建 本题出自:<華為 > 题目:<分辨函数 > #include<stdio.h> int inc(int a) int inc(int a) { return(++a); } int multi(int*a,int*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 temp =p(arg1); fun(&temp,&arg1, arg2); fun(&temp,&arg1, arg2); printf("%d\n",*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 * 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(p>pstr) { tmp=*p; *(p--)=*(pstr); *(pstr++)=tmp; } return pret; /* 本篇文章来自<A href=''>IDC专家网</a> 原文链接: * Copyright (c) IBM c语言面试题 * * 文件名称: ********** * 文件标识:根据软件工程设置 * 摘要:IBM公司的面试题 */ //下面其它的声明代码 … //下面是原作者、版本、完成、日期和当前版本的信息 /* 当前版本:1.0.1 * 作者:zhyindividual 责任编辑:lujiezhen ,修改日期:2005年4月5日 * 修改的地方描述: */ /* * 取代版本:1.0.0 * 原作者:zhyindividual 责任编辑:lujiezhen ,完成日期:2010年4月31日 */ 学号:2009121021 姓名:何科成 问题: struct a { int x; char y; struct a z; struct a *p; } 请问这种定义结构正确否? 如果有问题,问题在哪里? 答:结构中不能对定义结构本身的非指针变量,如果编译器支持则会导致无限嵌套,因此一般编译器都会认为struct a是未定义的类型,即使提前声明也不会有任何用处。 学 号:2009121022 姓 名:王浩 本题出自: 微软 题 目:设计程序让其CPU占用呈余弦曲线显示-perl版 #!/usr/bin/perl use 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 times my @idleSpan; # array of idle times my $half = INTERVAL / 2; my $radian = 0.0; my $i; for ($i = 0; $i < COUNT; $i++) { $busySpan[$i] = int(($half + (s- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 2010 华为 网络 试题 汇总
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文