收藏 分销(赏)

C语言2010华为网络面试题汇总.doc

上传人:丰**** 文档编号:3066172 上传时间:2024-06-14 格式:DOC 页数:43 大小:130KB
下载 相关 举报
C语言2010华为网络面试题汇总.doc_第1页
第1页 / 共43页
C语言2010华为网络面试题汇总.doc_第2页
第2页 / 共43页
C语言2010华为网络面试题汇总.doc_第3页
第3页 / 共43页
C语言2010华为网络面试题汇总.doc_第4页
第4页 / 共43页
C语言2010华为网络面试题汇总.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、学号: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 = 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();学号:200912

2、1003姓名:孙英杰本题出自:华为公司题目:改错题(此代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”) 源代码为: #includestring.h main() char*src=hello,world; char*dest=NULL; intlen=strlen(src); dest=(char*)malloc(len); char*d=dest; char*s=srclen; while(len-!=0) d+=s-; printf(%s,dest); return0; 答案: #includeintmain() char*src=hello,world; intlen=s

3、trlen(src); char*dest=(char*)malloc(len+1); char*d=dest; char*s=&srclen-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

4、(*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+程序员求职面试指导,而旨在从技术上分析面试题的

5、内涵。*/*作者:张虹,修改日期:2010年4月10日*修改的地方描述:主要是格式、说明内容的补充,代码上没有做任何修改。*/*原作者:马良,完成日期:2009年5月26日*/*试题1*/#include“stdio.h”#include“string.h”void test1() char string10; char *str1=0123456789; strcpy( string, str1 );答案:试题1字符串str1需要11个字节才能存放下(包括末尾的0),而string只有10个字节的空间,strcpy会导致数组越界。/*试题2*/#include“stdio.h”#includ

6、e“string.h”void test2() char string10,str110; int i; for( i=0; i10; 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 *str

7、1) char string10; 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( (*

8、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分

9、/为了实现链式操作,将目的地址返回,加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(st

10、r);return 0;答:没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。char* s=AAA;printf(%s,s);s0=B;printf(%s,s);有什么错?AAA是字符串常量。s是指针,指向这个字符串常量,所以声明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数组

11、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 unsigned int intvert(unsigned int x ,int p, int n)实现对x的进行转换,p为起始转换为,n为需要转换的长度,假设起始点在右边,如x=0b0001 0001,p=4,n=3转换后x= 0b0110 0001unsigned intvert(unsigned i

12、nt 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!的未尾有几个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)nu

13、m/=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姓名:曾旭东本题出自:题目:答案:学号: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;ca

14、se 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的构造函数、析构函数和赋值函数,已知类String的原型为:class String public: String(const char *str = NULL); / 普通构造函数 String(const String &other); / 拷贝构造函数 String(void); / 析构函数String & operate =(c

15、onst String &other); / 赋值函数 private: char *m_data; / 用于保存字符串 ;答案:解答:/普通构造函数String:String(const char *str) if(str=NULL) m_data = new char1; / 得分点:对空字符串自动申请存放结束标志0的空 /加分点:对m_data加NULL 判断 *m_data = 0; else int length = strlen(str); m_data = new charlength+1; / 若能加 NULL 判断则更好 strcpy(m_data, str); / Stri

16、ng的析构函数String:String(void) delete m_data; / 或delete m_data;/拷贝构造函数String:String(const String &other) / 得分点:输入参数为const型 int length = strlen(other.m_data); m_data = new charlength+1; /加分点:对m_data加NULL 判断 strcpy(m_data, other.m_data); /赋值函数String & String:operate =(const String &other) / 得分点:输入参数为const

17、型 if(this = &other) /得分点:检查自赋值 return *this; delete m_data; /得分点:释放原有的内存资源 int length = strlen( other.m_data ); m_data = new charlength+1; /加分点:对m_data加NULL 判断 strcpy( m_data, other.m_data ); return *this; /得分点:返回本对象的引用学号:2009121012姓名:吴昊天出处:未知题目:用变量a 给出下面的定义a) 一个整型数(An integer)b) 一个指向整型数的指针( A point

18、er to an integer)c) 一个指向指针的的指针,它指向的指针是指向一个整型数A pointer to a pointer to an integerd) 一个有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 funct

19、ion 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 a10;e) int *a10; f) int (*a)10;g) int (*a)(int); h) int (*a1

20、0)(int); 学号:2009121014姓名:吴磊俊本题出自:题目:答案:学号:2009121015姓名:杨厚田本题出自:main() inta5 = 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

21、分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,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 ) d

22、ayOfMonth1 = 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度(顺逆时针均可) / 个人用

23、五个额处空间(两个循环控制三个暂存)实现。 /作者:陈昂(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 可以发现旋转后矩阵与原矩阵的关系: / 旋转后 原矩阵 / 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 = A

24、1,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 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;

25、 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 ; /循环查找最后交换的位置 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 - t

26、mpj; tmpi = (M-tmpi -1); /交换矩元素,后一个作暂存用 if (*(&Matrix00 + i * M + j) != Matrixtmpitmpj) *(&Matrix00 + i * M + j) = *(&Matrix00 + i * M + j) + Matrixtmpitmpj; Matrixtmpitmpj = *(&Matrix00 + i * M + j) - Matrixtmpitmpj; *(&Matrix00 + i * M + j) = *(&Matrix00 + i * M + j) - Matrixtmpitmpj; printf( %d ,

27、*(&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*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*)

28、; 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(%dn,*arg2); main() int a; int a; show(multi,10,&a); return 0; return 0; 学号:20

29、09121020姓名:杨川本题出自: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 ps

30、tr;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); *(pstr+)=tmp; return pret;/*本篇文章来自IDC专家网 原文链接:* Copyright (c) IBM c语言面试题* 文件名称: * 文件标识:根据软件工程设置* 摘要:IBM公司的面试题*/下面其它的声明代码/下面是原作者、版本、完成、日期和当前版本的信息/* 当

31、前版本: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是未定义的类型,即使提前声

32、明也不会有任何用处。学 号: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 + (s

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服