C语言面试题大汇总之华为面试题及答案

合集下载

华为C语言机试题面试题汇总

华为C语言机试题面试题汇总

1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50#include<stdio.h>main(){int num[50]={0};int i,n;printf("请输入整型数组的长度(1~50):");scanf("%d",&n);printf("请输入整型数组的元素:");for (i=0;i<n;i++){scanf("%d",&num[i]);}int min_num=num[0];int max_num=num[0];for(int j=0;j<n;j++){if(max_num<num[j])max_num=num[j];else if(min_num>num[j])min_num=num[j];}int sum=min_num+max_num;printf("数组中最大与最小值之和:%d\n",sum);return 0;}2.求两个长长整型的数据的和并输出,例如输入1233333333333333 。

3111111111111111111111111.。

,则输出。

#include<stdio.h>#include<string.h>#include<malloc.h>main(){char *num1,*num2; //两个长长整型数据char *sum;// int temp;int len_num1,len_num2; // 两个长长整型数据的长度int len_max,len_min;num1=(char*)malloc(sizeof(char));num2=(char*)malloc(sizeof(char));printf("输入两个长长整型数据:");scanf("%s",num1);printf("输入两个长长整型数据:");scanf("%s",num2);len_num1=strlen(num1);len_num2=strlen(num2);len_max=(len_num1>=len_num2)? len_num1:len_num2;len_min=(len_num1<=len_num2)? len_num1:len_num2;int len_max1=len_max;sum=(char*)malloc(sizeof(char)*len_max);memset(sum,0x00,len_max+1);//切忌初始化for(;len_num1>0&&len_num2>0;len_num1--,len_num2--){sum[len_max--]=((num1[len_num1-1]-'0')+(num2[len_num2-1]-'0'));}if(len_num1>0){sum[len_max--]=num1[len_num1 - 1 ]-'0';len_num1--;}if(len_num2>0){sum[len_max--]=num1[len_num2 - 1]-'0';len_num2--;}for(int j=len_max1;j>=0;j--) //实现进位操作{// temp=sum[j]-'0';if(sum[j]>=10){sum[j-1]+=sum[j]/10;sum[j]%=10;}}char *outsum=(char*)malloc(sizeof(char)*len_max1);j=0;while(sum[j]==0) //跳出头部0元素j++;for(int m=0;m<len_max1;j++,m++)outsum[m]=sum[j]+'0';outsum[m]='\0';printf("输出两长长整型数据之和:%s\n",outsum);return 0;}3.通过键盘输入一串小写字母(a~z)组成的字符串。

华为C++面试题、笔试题及答案经典

华为C++面试题、笔试题及答案经典

(一) 初级题1. 什么是预编译,何时需要预编译:答:(1) 总是使用不经常改动的大型代码体(2) 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。

在这种情况下,可以将所有包含文件预编译为一个预编译头<<预编译又称为预处理,是做些代码文本的替换工作处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等就是为编译做的预备工作的阶段主要处理#开始的预编译指令预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。

常见的预编译指令有:>>2. char * const pchar const * pconst char *p上述三个有什么区别?答:char * const p; //常量指针,p的值不可以修改char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p3.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是指针,它们指向相同的常量区域。

华为C++MFC面试题(附上个人答案不当之处请指正)

华为C++MFC面试题(附上个人答案不当之处请指正)

华为C++MFC面试题(附上个人答案不当之处请指正) pS:答案是本人随笔所写,可能不全甚至错误!请不要盲目将其作为标准答案,不当之处,请指正,谢谢。

C++/MFC 试题一.填空题 (26 分 )1 . WIN32 平台下, sizeof(short) = __2__ ,sizeof(int) = __4__ , sizeof(long) =__4__ 。

(3 分 ) /// sizeof(char)=1;sizeof(double) = 8;sizeof(float) = 4;2 .请给出如下程序的结果 (2 分 )int a = 3;int b = a << 3; ///00000011左移三位为00011000,即24a = __3__ ,b =__24__ 。

3 .请给出如下程序的结果 (2 分 )int aaa = 0x01;htonl(aaa) = _16^6___ 。

/// 0x01000000十六进制数,转换为十进制为16的6次方,即167772164 .请给出如下程序的结果 (2 分)#define MAX_NUM 100+200int nTemp = MAX_NUM*10;///宏的功能只是简单的字符替换,MAX_NUM*10表示100+200*10,所以用宏要小心则 Temp = __2100__ 。

5 .请给出如下程序的结果 (3 分 )char szTemp[1000] = "";int nLen1 = sizeof(szTemp);int nLen2 = strlen(szTemp);///strlen的计算结果不包含结束符\\\0\strcpy(szTemp, "abc");int nLen3 = sizeof(szTemp);int nLen4 = strlen(szTemp);int nTemp[100];int *pTemp = nTemp;int nLen5 = sizeof(pTemp);///在32位系统中,指针只占4位字节,不管它指向地址的内容有多大!char szResult[200] = "";sprintf(szResult, "%d,%d,%d,%d,d.", nLen1, nLen2, nLen3, nLen4,nLen5);则 szResult = _1000,0,1000,3,04___ 。

华为面试题

华为面试题
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)4
2.并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。
3.多CPU系统中,使用线程提高CPU利用率
4.改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独
立的运行部分,这样的程序会利于理解和修改。
其他情况都使用单线程。
11.Windows是内核级线程么。
答:见下一题
12.Linux有内核级线程么。
答:线程通常被定义为一个进程中代码的不同执行路线。从实现方式上划分,线程有两
种类型:“用户级线程”和“内核级线程”。 用户线程指不需要内核支持而在用户程序
中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度
和管理线程的函数来控制用户线程。这种线程甚至在象 DOS 这样的操作系统中也可实现
dLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProcAddress获取DLL函数的
出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了

27.IP组播有那些好处?
答:Internet上产生的许多新的应用,特别是高带宽的多媒体应用,带来了带宽的急剧
if(str != NULL){
strcpy(str, “world”);

华为、中心、公司面试常用c++问题及回答

华为、中心、公司面试常用c++问题及回答

1、请问C++的类和C里面的struct有什么区别?类中可以包含函数而struct中只能包含变量,类可以继承,封装,多态和抽象性而struct 不可以2、请讲一讲析构函数和虚函数的用法和作用?析构函数是当一个对象的生命周期结束时,系统调用析构函数来释放对象所占内存空间。

虚函数是实现运行多态的函数3、面向对象的概念对象:现实事物的实体叫对象。

对象是包含现实世界中事物特征的抽象实体,它反应了系统为止保存信息和与之交互的方法。

对象=数据+作用于这些数据的操作。

类:类是对象的模板。

即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。

类是在对象之上的抽象,对象则是类的具体化,是类的实例。

类可有其子类,也可有其它类,形成类层次结构。

消息:消息是对象之间进行通信的一种规格说明。

一般它由三部分组成:接收消息的对象、消息名及实际变元。

面向对象主要特征:封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。

封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。

封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。

继承性:继承性是子类自动共享父类之间数据和方法的机制。

它由类的派生功能体现。

一个类直接继职其它类的全部描述,同时可修改和扩充。

继职具有传达室递性。

继职分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。

类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。

继承不仅支持系统的可重用性,而且还促进系统的可扩充性。

多态性:对象根据所接收的消息而做出动作。

同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。

华为C语言机试题面试题汇总.docx

华为C语言机试题面试题汇总.docx

1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50#include<stdio.h>main(){int num[50]={0};int i,n;printf("请输入整型数组的长度(1~50):");scanf("%d",&n);printf("请输入整型数组的元素:");for (i=0;i<n;i++){scanf("%d",&num[i]);}int min_num=num[0];int max_num=num[0];for(int j=0;j<n;j++){if(max_num<num[j])max_num=num[j];else if(min_num>num[j])min_num=num[j];}int sum=min_num+max_num;printf("数组中最大与最小值之和:%d\n",sum);return 0;}2.求两个长长整型的数据的和并输出,例如输入1233333333333333 。

3111111111111111111111111.。

,则输出。

#include<stdio.h>#include<string.h>#include<malloc.h>main(){char *num1,*num2; //两个长长整型数据char *sum;// int temp;int len_num1,len_num2; // 两个长长整型数据的长度int len_max,len_min;num1=(char*)malloc(sizeof(char));num2=(char*)malloc(sizeof(char));printf("输入两个长长整型数据:");scanf("%s",num1);printf("输入两个长长整型数据:");scanf("%s",num2);len_num1=strlen(num1);len_num2=strlen(num2);len_max=(len_num1>=len_num2)? len_num1:len_num2;len_min=(len_num1<=len_num2)? len_num1:len_num2;int len_max1=len_max;sum=(char*)malloc(sizeof(char)*len_max);memset(sum,0x00,len_max+1);//切忌初始化for(;len_num1>0&&len_num2>0;len_num1--,len_num2--){sum[len_max--]=((num1[len_num1-1]-'0')+(num2[len_num2-1]-'0'));}if(len_num1>0){sum[len_max--]=num1[len_num1 - 1 ]-'0';len_num1--;}if(len_num2>0){sum[len_max--]=num1[len_num2 - 1]-'0';len_num2--;}for(int j=len_max1;j>=0;j--) //实现进位操作{// temp=sum[j]-'0';if(sum[j]>=10){sum[j-1]+=sum[j]/10;sum[j]%=10;}}char *outsum=(char*)malloc(sizeof(char)*len_max1);j=0;while(sum[j]==0) //跳出头部0元素j++;for(int m=0;m<len_max1;j++,m++)outsum[m]=sum[j]+'0';outsum[m]='\0';printf("输出两长长整型数据之和:%s\n",outsum);return 0;}3.通过键盘输入一串小写字母(a~z)组成的字符串。

C语言面试题大汇总之华为面试题及答案(5篇)

C语言面试题大汇总之华为面试题及答案(5篇)

C语言面试题大汇总之华为面试题及答案(5篇)第一篇:C语言面试题大汇总之华为面试题及答案C语言面试题大汇总之华为面试题及答案2007-01-24 09:19作者:罗可龙出处:csdn责任编辑:罗可龙1、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。

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

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

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

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

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错4、语句for(;1;)有什么问题?它是什么意思?答:和while(1)相同。

5、do……while和while……do有什么区别?答:前一个循环一遍再判断,后一个判断以后再循环6、请写出下列代码的输出内容以下是引用片段:#includemain(){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语言面试题本文地址:/post/2007072910.html 内容正文:找错Void test1(){char string[10];char* str1="0123456789";strcpy(string, str1);}Void test2(){char string[10], str1[10];for(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{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){auto 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: 30;case 2: 20;case 3: 16;default: 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.编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。

华为c语言面试题

华为c语言面试题

华为c语言面试题C语言作为一门广泛应用于嵌入式系统和高性能计算领域的编程语言,成为了许多IT从业者必备的技能之一。

在华为的面试中,C语言题目也常常出现,对应聘者的编程基础和逻辑思维能力有所考察。

在本文中,我们将介绍一些常见的华为C语言面试题,供大家参考。

一、变量与数据类型1. 如何声明一个整型变量并初始化为10?int x = 10;2. 如何声明一个字符型变量并初始化为字母'A'?char ch = 'A';3. 如何声明一个常量,并将其值设定为3.14?const float pi = 3.14;4. 如何交换两个变量的值,例如将变量a的值与变量b的值交换?int temp;temp = a;a = b;b = temp;二、控制结构1. 请写出一个实现求1到100之间所有奇数和的C语言程序。

```c#include <stdio.h>int main() {int sum = 0;int i;for (i = 1; i <= 100; i += 2) {sum += i;}printf("奇数和为:%d\n", sum);return 0;}```2. 请写出一个实现判断一个数是否为素数的C语言程序。

```c#include <stdio.h>int isPrime(int num) {int i;for (i = 2; i <= num / 2; i++) {if (num % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数。

\n", num); } else {printf("%d不是素数。

c语言面试题目100及最佳答案

c语言面试题目100及最佳答案

c语言面试题目100及最佳答案作为IT行业人士需要掌握的最基本的计算机语言—c语言,如今的地位只高不低,c语言掌握程度的高低往往在面试的时候可以完全表现出来,而有些问题是大家平时似乎是知道的,但却不能完整准确地回答上来的,今天大家带来精心整理的C语言经典面试题,希望对大家有所帮助。

1、请填写bool , float, 指针变量与“零值”比较的if语句。

提示:这里“零值”可以是0, 0.0 , FALSE 或者“空指针”。

例如int 变量n 与“零值”比较的if 语句为:if ( n == 0 )if ( n != 0 )以此类推。

(1)请写出bool flag 与“零值”比较的if 语句:【标准答案】if ( flag ) if ( !flag )100 条经典 C语言笔试题目(2)请写出float x 与“零值”比较的if 语句:【标准答案】 const float EPSINON = 0.00001;if ((x >= - EPSINON) && (x <= EPSINON)不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。

100 条经典 C语言笔试题目(3)请写出char *p 与“零值”比较的if 语句【标准答案】 if (p == NULL) if (p != NULL)2、以下为Linux下的32 位C 程序,请计算sizeof 的值。

char str[] = “Hello” ;char *p = str ;i nt n = 10;请计算(1)sizeof (str ) = (2)s i zeof ( p ) =(3)sizeof ( n ) =【标准答案】(1)6、(2)4 、(3 )4(4)void Func ( char str[100]){…… ;}请计算sizeof( str ) =(5)void * p = mall oc( 100 );请计算sizeof ( p ) =【标准答案】(4)4、(5)44、用变量a 给出下面的定义e) 一个有10个指针的数组,该指针是指向一个整型数的;f) 一个指向有10个整型数数组的指针;g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;【标准答案】e)int * a[10]; f)int (*a)[10]g)int (*a)(int); h) int (*a[10])(int)5、设有以下说明和定义:typedef u nion {long i; int k[5]; char c;} DATE; struct data { int cat; DATE cow; double dog;} too; DATE max;则语句printf("%d",sizeof(struct date)+sizeof(max)); 的执行结果是:_____【标准答案】DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20data 是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是20 + 32 = 52.当然…在某些16位编辑器下, int 可能是2字节,那么结果是int2 + DATE10 + double8 = 206、请问以下代码有什么问题:int main(){char a;char *str=&a;strcpy(str,“hello”);printf(str);return 0;}【标准答案】没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。

C语言面试题大汇总之华为面试题

C语言面试题大汇总之华为面试题

1、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。

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

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

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

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

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错.4、请写出下列代码的输出内容#include <stdio.h>int main(void){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,1205、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。

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

这两者在存储方式上并无不同。

这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

【华为】C 面试题、笔试题及答案(经典)

【华为】C  面试题、笔试题及答案(经典)

(一) 初级题1. 什么是预编译,何时需要预编译:答:(1) 总是使用不经常改动的大型代码体(2) 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。

在这种情况下,可以将所有包含文件预编译为一个预编译头<<预编译又称为预处理,是做些代码文本的替换工作处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等就是为编译做的预备工作的阶段主要处理#开始的预编译指令预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。

常见的预编译指令有:>>2. char * const pchar const * pconst char *p上述三个有什么区别?答:char * const p; //常量指针,p的值不可以修改char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p3.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是指针,它们指向相同的常量区域。

精解几道华为经典C语言面试题

精解几道华为经典C语言面试题

重解几道华为经典C语言面试题2009-04-17 17:09:19 作者:来源:软件屋浏览次数:171 文字大小:【大】【中】【小】1、找错1、找错void test1(){char string[10];char* str1="0123456789";strcpy(string, str1);}这里string数组越界,因为字符串长度为10,还有一个结束符‘\0’。

所以总共有11个字符长度。

string数组大小为10,这里越界了。

PS:使用strcpy函数的时候一定要注意前面目的数组的大小一定要大于后面字符串的大小,否则便是访问越界。

void test2(){char string[10], str1[10];for(i=0; i<10;i++){str1[i] =’a’;}strcpy(string, str1);}这里有一个一眼就能看出的问题,那就是变量i没有定义,这在代码编译阶段编译器可以帮你发现,很容易搞定。

然而很多问题是自己造成的漏洞,编译器是帮不上什么忙的。

这里最大的问题还是str1没有结束符,因为strcpy的第二个参数应该是一个字符串常量。

该函数就是利用判断第二个参数的结束符来得到是否拷贝完毕。

所以在for循环后面应加上s tr1p[9] = ‘\0’;PS:字符数组和字符串的最明显的区别就是字符串会被默认的加上结束符‘\0’。

void test3(char* str1){char string[10];if(strlen(str1)<=10){strcpy(string, str1);}}这里的问题仍是越界问题。

strlen函数得到字符串除结束符外的长度。

如果这里是<=1 0话,就很明显越界了。

小结:上面的三个找错的函数,主要是考查对字符串和字符数组的概念的掌握以及对strcpy函数和strlen函数的理解。

2、找错DSN get_SRM_no(){static int SRM_no;int I;for(I=0;I<MAX_SRM;I++){SRM_no %= MAX_SRM;if(MY_SRM.state==IDLE){break;}}if(I>=MAX_SRM)return (NULL_SRM);elsereturn SRM_no;}这里for循环的判断语句是后来我加上的,估计在网上流传的时候被人给弄丢了,根据对程序的分析,给补上了。

华为C语言面试试题

华为C语言面试试题

一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。

(T )2、int (*ptr) (),则ptr是一维数组的名字。

(F,ptr为一个函数指针)3、指针在任何情况下都可进行>,<,>=,<=,==运算。

(F,指针比较大小没有任何意义,但是可以比较==与!= )4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。

(F,不可以为float )5、#define print(x) printf("the no, "#x",is ") (T)二、填空题(共30分)1、在windows下,写出运行结果,每空2分,共10分。

char str[ ]= "Hello";char *p=str;int n=10;sizeof(str)=( 6 )sizeof(p)=( 4 )sizeof(n)=( 4 )void func(char str[100]){ }sizeof(str)=( 4 )2、void setmemory(char **p, int num){ *p=(char *) malloc(num);}void test(void){ char *str=NULL;setmemory(&str,100);strcpy(str,"hello");printf(str);}运行test函数有什么结果?(hello )10分3、设int arr[]={6,7,8,9,10};int *ptr=arr;*(ptr++)+=123;printf("%d,%d",*ptr,*(++ptr));( 8, 8 ) 10分二、编程题(第一小题20,第二小题30分)1、不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1;#include <stdio.h>#include <stdlib.h>int mystrcmp(char *source, char *dest){while(*source == *dest && *source != '\0' && *dest != '\0'){source++;dest++;}if (*source =='\0' && *dest == '\0')return 0;elsereturn -1;}int main(){char *str1 = "abcde";char *str2 = "abcd";printf("ret = %d", mystrcmp(str1, str2));return 0;}2、写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1 #include <stdio.h>#include <stdlib.h>int rollback(char *str){int len;len=strlen(str);for(int i=0;i<len;i++){if(*(str+i) == *(str+len-1-i) )return 1;elsereturn 0;}return -1;}int main(){char *str1 = "abaaba";printf("ret = %d", rollback(str1));return 0;}写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。

C语言面试题大汇总之华为面试题6

C语言面试题大汇总之华为面试题6

C语言面试题大汇总之华为面试题6试题5:编写一个函数,作用是把一个char组成的字符串循环右移n个。

比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”函数头是这样的://pStr是指向以''结尾的字符串的指针//steps是要求移动的nvoid LoopMove ( char * pStr, int steps ){//请填充...}解答:正确解答1:void LoopMove ( char *pStr, int steps ){int n = strlen( pStr ) - steps;char tmp[MAX_LEN];strcpy ( tmp, pStr + n );strcpy ( tmp + steps, pStr);*( tmp + strlen ( pStr ) ) = '';strcpy( pStr, tmp );}正确解答2:void LoopMove ( char *pStr, int steps ){int n = strlen( pStr ) - steps;char tmp[MAX_LEN];memcpy( tmp, pStr + n, steps );memcpy(pStr + steps, pStr, n );memcpy(pStr, tmp, steps );}剖析:这个试题主要考查面试者对标准库函数的熟练程度,在需要的时候引用库函数能够很大程度上简化程序编写的工作量。

最频繁被使用的库函数包括:(1) strcpy(2) memcpy(3) memset试题6:已知WAV文件格式如下表,打开一个WAV文件,以适当的数据结构组织WAV文件头并解析WAV格式的各项信息。

WAVE文件格式说明表偏移地址字节数数据类型内容文件头00H 4 Char "RIFF"标志04H 4 int32 文件长度08H 4 Char "WAVE"标志0CH 4 Char "fmt"标志10H 4 过渡字节(不定)14H 2 int16 格式类别16H 2 int16 通道数18H 2 int16采样率(每秒样本数),表示每个通道的播放速度1CH 4 int32 波形音频数据传送速率20H 2 int16 数据块的调整数(按字节算的)22H 2 每样本的数据位数24H 4 Char 数据标记符”data”28H 4 int32 语音数据的长度解答:将WAV文件格式定义为结构体WAVEFORMAT:typedef struct tagWaveFormat{char cRiffFlag[4];UIN32 nFileLen;char cWaveFlag[4];char cFmtFlag[4];char cTransition[4];UIN16 nFormatTag ;UIN16 nChannels;UIN16 nSamplesPerSec;UIN32 nAvgBytesperSec;UIN16 nBlockAlign;UIN16 nBitNumPerSample;char cDataFlag[4];UIN16 nAudioLength;} WAVEFORMAT;假设WAV文件内容读出后存放在指针buffer开始的内存单元内,则分析文件格式的代码很简单,为:WAVEFORMAT waveFormat;memcpy( &waveFormat, buffer,sizeof( WAVEFORMAT ) );直接经过访问waveFormat的成员,就能够获得特定WAV文件的各项格式信息。

华为面试题c语言

华为面试题c语言

华为面试题 c语言华为面试题 c语言华为面试题 c语言(一)题目:输入一个正整数 X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。

1 2 3 4 5 6 7 8 9 = X比如:12-34+5-67+89 = 51+23+4-5+6-7-8-9 = 5请编写程序,统计满足输入整数的所有整数个数。

输入:正整数,等式右边的数字输出:使该等式成立的个数样例输入: 5样例输出: 21【下面的代码只输出了所有的等式,没有输出个数】代码如下:#includevoid dfs(int layer, int currentResult, int lastOp, int lastSum);const char sym[3] = {'+' , '-' , ' '};int ops[21] = {0};int result , num;void main(){while (1){printf("请输入等式右边的值\n");scanf("%c",&result);printf("\n以下是使等式成立的公式:\n");dfs(1,0,0,0);}return ;}void dfs(int layer, int currentResult, int lastOp, int lastSum) {int i;lastSum *= (layer > 9) ? 100 : 10;lastSum += layer;if(layer == 9){currentResult += (lastOp) ? (-1 * lastSum) : lastSum;if(currentResult == result){++num;printf("1");for(i = 2 ; i <= 9 ; ++i){if(sym[ops[i-1]] != ' ')printf(" %c ", sym[ops[i-1]]);printf("%d", i);}printf(" = %d\n" , result);}return;}ops[layer] = 2;dfs(layer + 1 , currentResult , lastOp , lastSum);currentResult += (lastOp)? (-1 * lastSum) : lastSum;ops[layer] = 0;dfs(layer + 1 , currentResult , 0 , 0);ops[layer] = 1;dfs(layer + 1 , currentResult , 1 , 0);}华为面试题 c语言(二)一面:介绍我的项目,针对我的项目中的点询问是如何实现的Activity生命周期?为什么Activity要这么设计?这样设计有什么好处?Android与iOS运行机制上有哪些不同?为什么Android用起来没有iOS流畅?为了让Android系统更流畅,应该从哪些方面做好?如何让Service不被杀死?Android系统分层?Library层起什么作用?如果一个应用要升级需要注意哪些方面?(我回答服务端api要兼容,如果只是小bug就通过补丁方式,但是貌似面试官不满意,就引导我说数据方面的,我才知道原来是想要我说本地数据的兼容)问我有什么要问他的?还有其他的一些问题,记不太清了….二面:二面是一个中年男人,一开始很严肃,聊了几句后它就笑嘻嘻了。

华为C语言面试题

华为C语言面试题

华为C语言面试题华为C语言经典面试题。

每道题都附有详细解答和讲解。

怎么判断链表中是否有环?bool CircleInList(Link* pHead){if(pHead = = NULL || pHead->next = = NULL)//无节点或只有一个节点而且无自环return (false);if(pHead->next = = pHead)//自环return (true);Link *pTemp1 = pHead;//step 1Link *pTemp = pHead->next;//step 2while(pTemp != pTemp1 && pTemp != NULL && pTemp->next != NULL){pTemp1 = pTemp1->next;pTemp = pTemp->next->next;}if(pTemp = = pTemp1)return (true);return (false);}两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串void insert(char *s, char *t, int i){memcpy(&s[strlen(t)+i],&s[i],strlen(s)-i);memcpy(&s[i],t,strlen(t));s[strlen(s)+strlen(t)]='\0';}1。

编写一个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;}2。

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

C语言面试题大汇总之华为面试题及答案2007-01-24 09:19作者:罗可龙出处:csdn责任编辑:罗可龙1、局部变量能否和全局变量重名答:能,局部会屏蔽全局。

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

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

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

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

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错4、语句for( ;1 ;)有什么问题它是什么意思答:和while(1)相同。

5、do……while和while……do有什么区别答:前一个循环一遍再判断,后一个判断以后再循环6、请写出下列代码的输出内容以下是引用片段:#includemain(){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 就构成了静态的全局变量。

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

这两者在存储方式上并无不同。

这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。

由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。

把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。

static函数与普通函数作用域不同。

仅在本文件。

只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。

对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝8、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于( 堆)中。

9、设有以下说明和定义:typedef union {long i; int k[5]; char c;} DATE;struct data { int cat; DATE cow; double dog;} too;DATE max;则语句printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:___52____答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是20 + 32 = 52.当然...在某些16位编辑器下, int可能是2字节,那么结果是int2 + DATE10 + double8 = 2010、队列和栈有什么区别队列先进先出,栈后进先出以下是引用片段:#includeint inc(int a){return(++a);}int multi(int*a,int*b,int*c){return(*c=*a**b);}typedef int(FUNC1)(int in);typedef int(FUNC2) (int*,int*,int*);void show(FUNC2 fun,int arg1, int*arg2){INCp=&inc;int temp =p(arg1);fun(&temp,&arg1, arg2);printf("%d\n",*arg2);}main(){int a;show(multi,10,&a);return 0;}答:11012、请找出下面代码中的所以错误说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”以下是引用片段:1、#include""2、main()3、{4、char*src="hello,world";5、char* dest=NULL;6、int len=strlen(src);7、dest=(char*)malloc(len);8、char* d=dest;9、char* s=src[len];10、while(len--!=0)11、d++=s--;12、printf("%s",dest);13、return 0;14、}答:方法1:以下是引用片段:int main(){char* src = "hello,world";int len = strlen(src);char* dest = (char*)malloc(len+1);两个栈实现一个队列的功能要求给出算法和思路!设2个栈为A,B, 一开始均为空.入队:将新元素push入栈A;出队:(1)判断栈B是否为空;(2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;(3)将栈B的栈顶元素pop出;这样实现的队列入队和出队的平摊复杂度都还是O(1), 比上面的几种方法要好。

3.在c语言库函数中将一个字符转换成整型的函数是atool()吗,这个函数的原型是什么函数名: atol功能: 把字符串转换成长整型数用法: long atol(const char *nptr);程序例:以下是引用片段:#include#includeint main(void){long l;char *str = "";l = atol(lstr);printf("string = %s integer = %ld\n", str, l);return(0);}13.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现c用宏定义,c++用inline14.直接链接两个信令点的一组链路称作什么PPP点到点连接15.接入网用的是什么接口都用了那些协议17.软件测试都有那些种类黑盒:针对系统功能的测试白合:测试函数功能,各函数接口18.确定模块的功能和模块的接口是在软件设计的那个队段完成的概要设计阶段19.enum string{x1,x2,x3=10,x4,x5,}x;问x= 0x801005,0x8010f4 ;20.unsigned char *p1;unsigned long *p2;p1=(unsigned char *)0x801000;p2=(unsigned long *)0x810000;请问p1+5= ;p2+5= ;选择题:链接到Internet用到以下那个协议;;;;22.属于网络层协议的是:;;;消息调度机制是:A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;24.unsigned short hash(unsigned short key){return (key>>)%256}请问hash(16),hash(256)的值分别是:A.1.16;找错题:25.请问下面程序有什么错误int a[60][250][1000],i,j,k;for(k=0;k<=1000;k++)for(j=0;j<250;j++)for(i=0;i<60;i++)a[i][j][k]=0;把循环语句内外换一下26.以下是引用片段:#define Max_CB 500void LmiQueryCSmd(Struct MSgCB * pmsg){unsigned char ucCmdNum;......for(ucCmdNum=0;ucCmdNum{......;}死循环27.以下是求一个数的平方的程序,请找出错误:#define SQUARE(a)((a)*(a))int a=5;int b;b=SQUARE(a++);28.以下是引用片段:typedef unsigned char BYTEint examply_fun(BYTE gt_len; BYTE *gt_code){BYTE *gt_buf;gt_buf=(BYTE *)MALLOC(Max_GT_Length);......if(gt_len>Max_GT_Length){return GT_Length_ERROR;}.......}问答题:Phone的原理是什么IPV6IP通信建立的过程怎样,端口有什么作用三次握手,确定是哪个应用程序使用该协议号信令和7号信令有什么区别,我国某前广泛使用的是那一种32.列举5种以上的电话新业务。

相关文档
最新文档