华为C语言招聘笔试题目_笔试题目.doc

合集下载

华为招聘笔试、面试 试题及经验

华为招聘笔试、面试 试题及经验

第一部分,不定向选择第二部分,填空题1. 什么是UML?分哪两类?2. OS一般的两种进程调度策略3. 进程间的四种通讯方式4. 一棵二叉树的前序,中序,后序遍历结果第三部分,问答题1. 通常递归所采用的数据结构?递归和循环的区别?2. 将一个单链表逆序。

3. A,B,C,D四个进程,A向一个缓冲区写数据,B,C,D从该缓冲区读数据,A 要等到B,C,D都已经读好才能写下一个。

用p,v操作实现通讯。

4. C 程序写运行结果。

class A{public:void f1(){printf("A::f1\r\n");}virtual void f2(){printf("A::f2\r\n");}void callfunc(){printf("A::callfunc\r\n");f1();f2();}};class B :public A{public:void f1(){printf("B::f1\r\n");}void f2(){printf("B::f2\r\n");}void callfunc(){printf("B::callfunc\r\n");f1();f2();}};int main(){B *pB=new B;pB->callfunc();A *pA=pB;pA->callfunc();return 0;} 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、前面已经有人写了,hehe,我写一下稍微详细的版本:中断优先级排序补码:写出0,-1,-5的二进制补码递归的优缺点;写程序的结果;求出一个学生成绩数组的max,min和average的值网络知识:路由器的作用,DNS的原理项目开发:软件流程,瀑布模型;黑盒测试数据库:创建一个数据库,创建一个表,包含主键,索引。

2023华为笔试题及答案

2023华为笔试题及答案

2023华为笔试题及答案1. 找错void test1() { char string[10]; char* str1=0123456789; strcpy(string, str1); }答:表面上并且编译都不会错误。

但假如string数组原意表示的是字符串的话,那这个赋值就没有达到意图。

最好定义为char string[11],这样最终一个元素可以存储字符串结尾符; void test2() { char string[10], str1[10]; for(int I=0; I 10;I++) { str1[I] =a; } strcpy(string, str1); } 答:strcpy使用错误,strcpy只有遇到字符串末尾的才会结束,而str1并没有结尾标志,导致strcpy 函数越界访问,不妨让str1[9]=,这样就正常了。

void test3(char* str1) { char string[10]; if(strlen(str1) =10) { strcpy(string, str1); } } 答:这又会消失第一道改错题的错误了。

strlen(str1)算出来的值是不包含结尾符的,假如str1刚好为10个字符+1结尾符,string就得不到结尾符了。

可将strlen(str1) =10改为strlen(str1) 10。

2. 找错#define MAX_SRM 256 DSN get_SRM_no() { static int SRM_no; int I; for(I=0;I =MAX_SRM) return (NULL_SRM); else return SRM_no; }答:我不知道这段代码的详细功能,但明显有两个错误1,SRM_no没有赋初值2,由于static的声明,使该函数成为不行重入(即不行猜测结果)函数,由于SRM_no变量放在程序的全局存储区中,每次调用的时候还可以保持原来的赋值。

华为笔试题

华为笔试题

一.用变量a给出下面的定义1)一个整形数2)一个指向整形数的指针3)一个指向指针的指针,它指向的指针是指向一个整形数4)一个有10个整形数的数组5)一个有10个指针的数组,该指针是指向一个整形数的6)一个指向有10个整形数数组的指针7)一个指向函数的指针,该函数有一个整形参数并返回一个整形数8)一个指向有10个指针的数组,该指针指向一个函数,该函数有一个整形函数并返回一个整形二.说出static 的作用三.说出全局变量和静态全局变量的区别,并分别怎么使用C语言面试题1、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。

要用全局变量,需要使用"::"局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。

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

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

3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错4、语句for( ;1 ;)有什么问题?它是什么意思?5、do……while和while……do有什么区别?1. 找错void test1(){char string[10];char* str1="0123456789";strcpy(string, str1);}void test2(){char string[10], str1[10];for(int I=0; I<10;I++){str1[I] ='a';}strcpy(string, str1);}void test3(char* str1){char string[10];if(strlen(str1)<=10){strcpy(string, str1);}}2. 找错#define MAX_SRM 256DSN get_SRM_no(){static int SRM_no;int I;for(I=0;I;i++){SRM_no %= MAX_SRM;if(MY_SRM.state==IDLE){break;}}if(I>=MAX_SRM)return (NULL_SRM);elsereturn SRM_no;}3. 写出程序运行结果int sum(int a){int c=0;static int b=3;c+=1;b+=2;return(a+b+c);}void main(){int I;int a=2;for(I=0;I<5;I++){printf("%d,", sum(a));}}4.int func(int a){int b;switch(a){case 1: b=30;case 2: b=20;case 3: b=16;default: b=0;}return b;}则func(1)=?5:int a[3];a[0]=0; a[1]=1; a[2]=2;int *p, *q;p=a;q=&a[2];则a[q-p]=?6.定义int **a[3][4], 则变量占有的内存空间为:_____7.编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。

华为最新笔试题——编程题及答案

华为最新笔试题——编程题及答案

问题:输入一个字符串,用指针求出字符串的长度。

答案:#include <stdio.h>int main(){char str[20], *p;int length=0;printf(“Please input a string: ”);gets(str);p=str;while(*p++){length++;}printf(“The length of string is %d\n”, length);return 0;}问题:使用C语言实现字符串中子字符串的替换描述:编写一个字符串替换函数,如函数名为StrReplace(char* strSrc, char* strFind, char* strReplace),strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。

举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:ABCDEFGHIJKLMNOPQgggUVWXYZ答案一:#include <stdio.h>#include <string.h>void StrReplace(char* strSrc, char* strFind, char* strReplace);#define M 100;void main(){char s[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";char s1[]="RST";char s2[]="ggg";StrReplace(s,s1,s2);printf("%s\n",s);return 0;}void StrReplace(char* strSrc, char* strFind, char* strReplace){int i=0;int j;int n=strlen(strSrc);int k=strlen(strFind);for(i=0;i<n;i++){if(*(strSrc+i)==*strFind){for(j=0;j<k;j++){if(*(strSrc+i+j)==*(strFind+j)){*(strSrc+i+j)=*(strReplace+j);}else continue;}}}}问题:编写一个程序实现功能:将字符串”Computer Secience”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完成。

c语言笔试考试题及答案

c语言笔试考试题及答案

c语言笔试考试题及答案C语言笔试考试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个是合法的变量名?A. 2variableB. variable-nameC. variable_nameD. variable$name答案:C2. 下列哪个选项是C语言的关键字?A. defineB. intC. integerD. float答案:B3. 以下哪个语句不能通过编译?A. int a = 10;B. int b = 10.5;C. int c = 'a';D. int d = 1.0;答案:B4. C语言中,以下哪个函数用于计算两个数的和?A. pow()B. sqrt()C. sin()D. sum()答案:D(注意:sum()不是C语言标准库函数,这里假设它是一个自定义函数)5. 以下哪个选项是正确的C语言数组声明?A. int numbers[];B. int numbers[10] = {};C. int numbers = 10;D. int [10] numbers;答案:B6. 以下哪个是C语言中正确的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello\nWorld"D. "Hello\"World"答案:A7. 在C语言中,以下哪个是正确的函数声明?A. void myFunction();B. int myFunction;C. myFunction();D. int myFunction()答案:A8. 下列哪个选项不是C语言的标准输入输出库函数?A. printf()B. scanf()C. cout()D. getchar()答案:C9. 在C语言中,以下哪个是正确的逻辑运算符?A. &&B. ||C. ||D. ++答案:A10. 下列哪个选项是C语言的预处理指令?A. #includeB. defineC. ifD. else答案:A二、简答题(每题5分,共20分)1. 请简述C语言中数组和指针的区别。

华为C语言招聘笔试题目_笔试题目doc

华为C语言招聘笔试题目_笔试题目doc

华为C 语言招聘笔试题目_笔试题目一、对或错(用“T”代表正确,用“F”代表错误,并解释原因。

每项4 分,共20 分)1.有一个数组定义int a={{1} ,{2,3 } };值为0。

( )2.int (*ptr)() ,ptr 是一维数组的名称。

( )3.指针可以在任何情况下进行操作。

( )4.在switch(c) 语句中,c 可以是int 、long、char、float 、unsigned int 类型。

( )5、#定义打印(x) printf( 编号,#x,是)第二,填空(共30 分)1、在windows 下,写运行结果,每空2 分,共10 分。

你好;char * p=strint n=10sizeof(str)=(sizeof(p)=(sizeof(n)=(void func(char 字符串){ }sizeof(str)=(2、void setmemory(char **p ,int num){ * p=(char *)malloc(num) ;}空隙测试(空隙){字符*字符串=空;getmemory( 字符串,100);strcpy(str ,hello);printf(str) ;}运行测试功能的结果是什么?()10 分3.设置int arr={6 ,7,8,9,10}。

int * ptr=arr(ptr)=123 ;printf(%d ,%d,*ptr,*(ptr)) ;三、程序设计试题(第一项20 分,第二项30 分)1.编写函数intstrcmp (char * source,char * dest ),而不使用库函数。

相等返回0,不相等返回-1;2.写一个函数int fun(char *p) 来判断一个字符串是否是回文。

它返回1 而不是0。

错误返回-1。

华为C语言笔试题1笔试题

华为C语言笔试题1笔试题

华为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,1207、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。

全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。

华为c 笔试题及答案

华为c   笔试题及答案

华为c 笔试题及答案华为C笔试题及答案一、简介华为C是华为公司面向应届大学生的笔试选拔考试,旨在评估应聘者的综合素质和潜力。

本文将介绍华为C笔试题目及答案,帮助应聘者更好地准备华为C笔试。

二、题目及答案1. C语言基础题目:请编写一个程序,输出1-100之间的所有偶数。

答案:#include <stdio.h>int main() {int i;for(i=1; i<=100; i++) {if(i%2 == 0) {printf("%d ", i);}}return 0;}2. 数据结构与算法题目:请说明哈希表的原理及其应用场景。

答案:哈希表是一种根据关键字直接访问内存地址的数据结构。

其原理是通过哈希函数将关键字转换为一个索引值,然后将数据存储在对应索引值的位置上。

哈希表的应用场景包括缓存系统、数据库索引、字典等。

3. 计算机网络题目:请解释TCP和UDP协议的区别及其适用场景。

答案:TCP和UDP都是传输层的协议,但有一些区别。

TCP是面向连接的可靠传输协议,能够保证数据的完整性和顺序,适用于需要可靠传输的场景,如文件传输。

UDP是无连接的不可靠传输协议,不保证数据的完整性和顺序,适用于实时性要求较高的场景,如音视频传输。

4. 数据库题目:请解释事务的概念,并说明ACID原则。

答案:事务是数据库操作的最小单位,是一组对数据库进行的操作。

ACID是事务的四个基本属性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),保证事务的可靠性和稳定性。

5. 操作系统题目:请解释什么是进程和线程,并说明它们的区别。

答案:进程是操作系统进行资源分配和调度的最小单位,是程序在执行过程中的一个实例。

线程是进程中的一条执行路径,是CPU调度的最小单位。

进程之间相互独立,拥有独立的地址空间,而线程共享同一地址空间。

华为笔试题——编程题及答案.doc

华为笔试题——编程题及答案.doc

问题:输入一个字符串,用指针求出字符串的长度。

答案:ttinclude <stdio. h>int main (){char str[20], *p;int length=0;printf (''Please input a string: 〃);gets(str);p=str;while (*p++)(length++;}printf (''The length of string is %d\n〃,length);return 0;}问题:使用c语言实现字符串中子字符串的替换描述:编写一个字符串替换函数,如函数名为StrReplace(char* strSrc, char* strFind, char* StrReplace), strSrc为原字符串,strFind是待替换的字符串,StrReplace为替换字符串。

举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:ABCDEFGHIJKLMNOPQgggUVWXYZ答案一:ftinclude <stdio. h>ftinclude <string. h>void StrReplace(char* strSrc, char* strFind, char* StrReplace); ftdefine M 100;void main ()(char s口二〃ABCDEFGHIJKLMNOPQRSTUVWXYZ〃;char sl[]=〃RST〃;char s2[]=〃ggg〃;StrReplace(s, si, s2);printf (/z%s\n,z, s);}void StrReplace(char* strSrc, char* strFind, char* StrReplace){int i=0;int j;int n=strlen (strSrc);int k=strlen(strFind);for (i=0;i<n;i++){if (* (strSrc+i) =*strFind){for(j=0;j<k;j++){if (* (strSrc+i+j) =* (strFind+j))(* (strSrc+i+j)=*(strReplace+j);}else continue;}}}}答案二:ftinclude <stdio. h>ftdefine MAX 100StrReplace(char *s, char *sl, char *s2) {char *p;for(; *s; s++) {for(p = si; *p && *p !二*s; p++);if (*p) *s 二*(p - si + s2);int main ()char s[MAX]; 〃s是原字符串char si [MAX], s2[MAX] ; 〃sl 是要替换的//s2是替换字符串puts (,z Please input the string for s:〃);scanf (〃%s〃,s);puts (,z Please input the string for sl:〃);scanf(〃%s〃,si);puts (/z Please input the string for s2:〃);scanf(〃%s〃,s2);StrReplace(s, si, s2);puts (z,The string of s after displace is:〃);printf (〃%s\n〃,s);return 0:答案三:ftinclude <stdio. h>ftinclude <stdlib. h>ftinclude <string. h>ftdefine M 100void StrReplace(char* strSrc, char* strFind, char* StrReplace);int main ()(char s [] =,Z ABCDEFGHIJKLMNOPQRSTUVWXYZ";char si □二〃RST〃;char s2 □=〃gggg〃;StrReplace(s, si,s2);printf(〃%s\n〃,s);return 0:}void StrReplace(char* strSrc, char* strFind, char* StrReplace)if(^strSrc = *strFind){if(strncmp(strSrc, strFind, strlen(strFind)) = 0 ){int i 二strlen(strFind);int j 二strlen(strReplace);printf (z/i 二%d, j 二%d\n〃,i, j);char *q = strSrc + i;printf(〃*q 二%s\n〃, q);while((*strSrc++ = *strReplace++) != ' \0');printf (/z strSrc - 1 = %s\n,/, strSrc - 1);printf(〃*q = %s\n〃, q);while((*strSrc++ = *q++) != '\0');}else{strSrc++;}}else{strSrc++;}}}问题:编写一个程序实现功能:将字符串” Computer Secience”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完成。

校园招聘C语言类笔试题

校园招聘C语言类笔试题

一、预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL考点:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。

3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。

4).表达式中用到UL(表示无符号长整型)2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

#define MIN(A,B) ((A) <= (B) ? (A) : (B))这个测试是为下面的目的而设的:1). 标识#define在宏中应用的基本知识。

这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。

2). 三重条件操作符的知识。

这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。

3). 懂得在宏中小心地把参数用括号括起来4).讨论下面宏的副作用,例如:当你写下面的代码时会发生什么事?least = MIN(*p++, b);二、数据声明(Data declarations)用变量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; // An integerb) int *a; // A pointer to an integerc) int **a; // A pointer to a pointer to an integerd) int a[10]; // An array of 10 integerse) int *a[10]; // An array of 10 pointers to integersf) int (*a)[10]; // A pointer to an array of 10 integersg) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integerh) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer三、Static关键字static的作用是什么?在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

华为笔试题(答案)

华为笔试题(答案)

笔试题选择题1、以下程序的输出结果是:#include <stdio.h>int main(){int n =4;while (n--){printf("%d ", --n); }printf("\r\n");return0;}答案:2 02、设有以下宏定义:#define N 4#define Y(n) ((N+1)*n)则执行语句:Y(5+1)为:答案:263、enum ENUM_A{x1,y1,z1 =5,a1,b1};enum ENUM_A enumA = y1; enum ENUM_A enumB = b1;请问enumA和enumB的值是多少?答案:1,74、若有函数max(a,b),并且函数指针变量p已经指向函数,当调用该函数时正确的调用方法是:答案:(*p)(a,b)或者p(a,b)5、对栈S进行下列操作:push(1), push(5), pop(), push(2), pop(), pop(), 则此时栈顶元素是:答案:没有元素,栈空。

6、在一个32位的操作系统中,设void *p = malloc(100),请问sizeof(p)的结果是:答案:32位操作系统的寻址大小是32位,即4字节。

7、若已定义: int a[9], *p = a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是:A)p+1 B)a+1 C) a++ D) ++p答案:C8、设有如下定义:unsigned long pulArray[] = {6,7,8,9,10};unsigned long *pulPtr;则下列程序段的输出结果是什么?pulPtr = pulArray;*(pulPtr + 2) += 2;printf("%d, %d\r\n", *pulPtr, *(pulPtr + 2));A) 8, 10 B) 6, 8 C) 7, 9 D) 6, 10答案:D9、以下程序运行后,输出结果是什么?void main(){char *szStr = "abcde";szStr += 2;printf("%1u\r\n", szStr);return;}A) cde B) 字符c的ASCII码值C) 字符c的地址D) 出错答案:C10、给出以下定义:char X[] = "hello";char Y[] = {'h', 'e', 'l', 'l', 'o'};则正确的叙述为:A)数组X和数组Y等价B) 数组X和数组Y的长度相同C) 数组X的长度大于数组Y的长度D) 数组X的长度小于数组Y的长度答案:C11、在32位X86下,有下列程序#include <stdio.h>void main(){union{int k;char i[2];} *s, a;s = &a;s->i[0] = 0x39;s->i[1] = 0x38;printf("%x\r\n", a.k);}输出结果是:A) 3839 B) 3938 C) 380039 D) 不可预知答案:A12、有如下函数定义:unsigned long MyFunc(unsigned long ulKey){return (((ulKey & 0x000000ff UL) << 24) |((ulKey & 0x0000ff00UL) << 8) |((ulKey & 0x00ff0000UL) >> 8) |((ulKey & 0xff000000UL) >> 24));}则MyFunc(0x12345678)的返回值是:A) 0x12345678 B) 0x87654321 C) 0x78563412 D) 0x12563478答案:C13、((a>b)?a:b)代表什么含义:A) 代表a,b之中较小的那个值B) 代表a,b之中较大的那个值C) 代表a是否比b大D) 语法错误答案:B14、某系统总线的一个总线周期包含3个时钟周期,每个总线周期可以传送32位数据。

华为笔试题(附答案)

华为笔试题(附答案)

1什么是预编译,何时需要预编译:答:1)总是使用不经常改动的大型代码体。

2)程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。

在这种情况下,可以将所有包含文件预编译为一个预编译头。

2 char * const p char const * p const char *p 上述三个有什么区别?答: char * const p; //常量指针,p的值不可以修改char const * p;//指向常量的指针,指向的常量值不可以改const char *p; //和char const *p 相同3 char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc";const char str4[] = "abc";const char *str5 = "abc";const char *str6 = "abc";char *str7 = "abc";char *str8 = "abc";cout < < ( str1 == str2 ) < < endl;cout < < ( str3 == str4 ) < < endl;cout < < ( str5 == str6 ) < < endl;cout < < ( str7 == str8 ) < < endl;结果是:0 0 1 1str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。

4 以下代码中的两个sizeof用法有问题吗?void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母{ for( size_t i=0; i <sizeof(str)/sizeof(str[0]); ++i )if( 'a' <=str && str <='z' ) str -= ('a'-'A' );}char str[] = "aBcDe";cout < < "str字符长度为: " < < sizeof(str)/sizeof(str[0]) < < endl;UpperCase( str );cout < < str < < endl;答案:函数内的sizeof有问题。

华为c和c++笔试题

华为c和c++笔试题

(一)(1)什么是预编译,何时需要预编译?答: a、总是使用不经常改动的大型代码体。

b、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。

在这种情况下,可以将所有包含文件预编译为一个预编译头。

(2)char * const p char const * p const char *p上述三个有什么区别?答: char * const p:常量指针,p的值不可以修改char const * p:指向常量的指针,指向的常量值不可以改const char *p: 指向字符的指针,该指针的值不可修改(3)char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; cout < < ( str7 == str8 ) < < endl;请写出程序运行结果。

答:结果是:0 0 1 1 。

str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。

CC++笔试题系列二(华为招聘

CC++笔试题系列二(华为招聘

CC++笔试题系列二(华为招聘华为笔试题;C;C++;1.说出下面这个程序的运行结果,并简要叙述其理由:char buf1[10]="hello";char buf2[10]="hello";if (buf1==buf2)printf("equal!");else printf("not equal!");答:因为buf1,buf2分配了不同的内存块,而比较的是数组名,实际上是两个分别指向数组起始元素地址的指针。

2.指出下面这段程序中存在一些什么问题:int loop,a[5];int* p=a;for (loop=0;loop<5;loop++){ p++;*p=loop;}答:数组a[5]在创建时没有初始化,在for循环里也没有起到完全初始化数组的作用,而且对一块未知内存赋值。

在最后一轮循环结束时p指向了数组a[5]的最后一个元素的下一个地址。

string 系列char * strcpy( char *strDest, const char *strSrc ){assert( (strDest != NULL) && (strSrc != NULL) );char *address = strDest;while( (*strDest++ = * strSrc++) != ‘\0’ );return address;}char* strncpy(char* strdest, const char* strsrc, int n){assert((strdest != NULL) && (strsrc != NULL));char* address = strdest;while(n-- > 0)*strdest++ = *strsrc++;return address;}int strcmp(const char* str1, const char* str2){assert((str1 != NULL) && (str2 != NULL);int ret = 0;while (!(ret = (unsigned char*)*str1 - (unsigned char*)*str2) && (*str2)) {str1++;str2++;}if (ret > 0)ret = 1;else if (ret < 0)ret = -1;return ret;}int strlen(const char* str){assert(str != NULL);int len = 0;while ('\0' != *str++)len++;return len;}类string的构造函数string::string(const char* str){if(str == NULL){m_data = new char[1];*m_data = '\0';}else{int length = strlen(str);m_data = new char[str + 1];strcpy(m_data, str);}}string 的析构函数string::~string(){delete [] m_data;}string 的拷贝构造函数string ::string(const string& other){int len = strlen(other.m_data);m_data = new char[len + 1];strcpy(m_data, other.m_data);}string 的赋值函数string& string::operator=(const string& other) {if (this == &other)return *this;delete [] m_data;int len = strlen(other.m_data);m_data = new char[len + 1];strcpy(m_data, other.m_data);return *this;}不用任何局部和全局变量实现int strlen(char *a)int strlen(char *a) {if('\0' == *a)return 0;elsereturn 1 + strlen(a + 1);}1)sizeof相关系列问题2)const相关系列问题3)大量林锐书的习题,以及各种变种这三个几乎是每次必出现,下面的这些是程序相关题,很多都是以前有讨论过的1)求出相似度的算法.2)写出二分查找的代码.int binary_search(int* arr, int key, int n){int low = 0;int high = n - 1;int mid;while (low <= high){mid = (high + low) / 2;if (arr[mid] > k)high = mid - 1;else if (arr[mid] < k)low = mid + 1;elsereturn mid;}return -1;}3)写出在母串中查找子串出现次数的代码.*4)写出快速排序或者某种排序算法代码出现次数相当频繁5)写出查找从一个集合中输出所有子集合的算法.6)实现strcpy函数char* strcpy(char* dest, const char* src){assert((dest != NULL) && (src != NULL));char* address = dest;while ('\0' != (*dest++ = *src++));return address;}出现次数相当频繁7)实现strcmp函数int mystrcmp(const char* str1, const char* str2){assert((str1 != NULL) && (str2 != NULL));int ret = 0;while (!(ret = *(unsigned char*)str1 - *(unsigned char*)str2) && *str2) {str1++;str2++;}if (ret > 0)ret = 1;else if (ret < 0)ret = -1;return ret;}出现次数相当频繁8)将一个单链表逆序struct test{int number;double score;test* next;}void reverse(test*& head){test* pe = head;test* ps = head->next;while(ps != NULL){pe->next = ps->next;ps->next = head;head = ps;ps = pe->next;}}9)循环链表的节点对换和删除。

c语言笔试题目及答案

c语言笔试题目及答案

c语言笔试题目及答案一、选择题(每题2分,共10分)1. 下列哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. C语言中,用于定义一个字符常量的是?A. 'a'B. "a"C. aD. 1答案:A3. 下列哪个选项是正确的C语言函数定义?A. int function();B. int function;C. int function int x;D. int function(int x)答案:D4. 以下哪个选项不是C语言中的运算符?A. %=B. &&C. ::D. ||答案:C5. 在C语言中,一个变量的声明应该放在?A. 函数内部B. 函数外部C. 函数内部或外部D. 只能放在函数内部答案:C二、填空题(每题2分,共10分)1. 在C语言中,____关键字用于声明一个外部变量。

答案:extern2. C语言中,用于定义一个指针的语法是____。

答案:*变量名3. 用于在C语言中声明一个函数的关键字是____。

答案:int4. 在C语言中,____运算符用于计算两个整数的差。

答案:-5. 用于在C语言中声明一个数组的语法是____。

答案:类型名数组名[数组大小]三、简答题(每题5分,共20分)1. 简述C语言中数组和指针的关系。

答案:在C语言中,数组名可以被看作是一个指向数组首元素的指针,数组的每个元素可以通过指针运算来访问。

2. 解释C语言中的递归函数是什么?答案:递归函数是指在函数定义中调用自身的函数,它通常用于解决可以分解为更小、相似问题的任务。

3. 什么是C语言中的预处理指令?答案:预处理指令是C语言编译过程中处理的特殊指令,它们不是C语言的一部分,但对编译过程有影响,如#include、#define等。

4. 描述C语言中如何实现文件的读写。

答案:在C语言中,可以使用fopen、fprintf、fscanf、fclose 等函数来实现文件的打开、写入、读取和关闭。

华为笔试题(有答案)

华为笔试题(有答案)

华为笔试题(有答案)华为笔试题1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,112.某32位系统下, C++程序,请计算sizeof 的值(5分).char str[] = “/”char *p = str ;int n = 10;请计算sizeof (str ) = ?(1)sizeof ( p ) = ?(2)sizeof ( n ) = ?(3)void Foo ( char str[100]){请计算sizeof( str ) = ?(4)}void *p = malloc( 100 );请计算sizeof ( p ) = ?(5)答:(1)17 (2)4 (3) 4 (4)4 (5)43. 回答下面的问题. (4分)(1).头文件中的 ifndef/define/endif 干什么用?预处理答:防止头文件被重复引用(2). #include <filename.h> 和 #include "filename.h" 有什么区别?答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。

(3).在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”声明?答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。

由于编译后的名字不同,C++程序不能直接调用C 函数。

C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。

(4). switch()中不允许的数据类型是?答:实型4. 回答下面的问题(6分)(1).Void GetMemory(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);}请问运行Test 函数会有什么样的结果?答:输出“hello”(2). void Test(void){char *str = (char *) malloc(100);strcpy(str, “hello”);free(str);if(str != NULL){strcpy(str, “world”);printf(str);}}请问运行Test 函数会有什么样的结果?答:输出“world”(3). char *GetMemory(void){char p[] = "hello world";return p;}void Test(void){char *str = NULL;str = GetMemory();printf(str);}请问运行Test 函数会有什么样的结果?答:无效的指针,输出不确定5. 编写strcat函数(6分)已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华为C语言招聘笔试题目_笔试题目
一、对或错(用“T”代表正确,用“F”代表错误,并解释原因。

每项4分,共20分)
1.有一个数组定义int a={{1},{2,3 } };值为0。

( )
2.int (*ptr)(),ptr是一维数组的名称。

( )
3.指针可以在任何情况下进行操作。

( )
4.在switch(c)语句中,c可以是int、long、char、float、unsigned int 类型。

( )
5、#定义打印(x) printf(编号,#x,是)
第二,填空(共30分)
1、在windows下,写运行结果,每空2分,共10分。

你好;
char * p=str
int n=10
sizeof(str)=(
sizeof(p)=(
sizeof(n)=(
void func(char字符串)
{ }
sizeof(str)=(
2、void setmemory(char **p,int num)
{ * p=(char *)malloc(num);}
空隙测试(空隙)
{字符*字符串=空;
getmemory(字符串,100);
strcpy(str,hello);
printf(str);
}
运行测试功能的结果是什么?()10分
3.设置int arr={6,7,8,9,10}。

int * ptr=arr
(ptr)=123;
printf(%d,%d,*ptr,*(ptr));
三、程序设计试题(第一项20分,第二项30分)
1.编写函数intstrcmp (char * source,char * dest ),而不使用库函数。

相等返回0,不相等返回-1;
2.写一个函数int fun(char *p)来判断一个字符串是否是回文。

它返回1而不是0。

错误返回-1。

相关文档
最新文档