C语言面试题大汇总之华为面试题及答案.doc
华为C语言机试题面试题汇总
![华为C语言机试题面试题汇总](https://img.taocdn.com/s3/m/d543f17bc850ad02df804111.png)
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)组成的字符串。
华为面试笔试题目(附答案).doc
![华为面试笔试题目(附答案).doc](https://img.taocdn.com/s3/m/17492b3d4431b90d6c85c785.png)
华为面试/笔试题目(附答案)(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 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。
2021年C语言面试题大汇总之华为面试题1
![2021年C语言面试题大汇总之华为面试题1](https://img.taocdn.com/s3/m/d9fb709e2b160b4e777fcf7d.png)
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语言机试题面试题汇总.docx
![华为C语言机试题面试题汇总.docx](https://img.taocdn.com/s3/m/967c789b360cba1aa811da5e.png)
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语言面试题-华为C语言面试题 深圳华为面试C语言面试题
![百一测评——华为C语言面试题集 C语言面试题-华为C语言面试题 深圳华为面试C语言面试题](https://img.taocdn.com/s3/m/de360c797e21af45b307a887.png)
职业技能题库&在线云笔试平台试卷名称:华为C语言面试题集 C语言面试题-华为C语言面试题深圳华为面试C语言面试题试卷描述:华为笔试题目、华为招聘笔试、微信考试、在线考试试卷链接:/store/open/paperInfo/42331试卷限时:50分一.编程计算题每题分值:6分是否题目乱序:是是否选项乱序:是是否可回溯:是难度:中1.[问答]局部变量能否和全局变量重名?参考答案:能,局部会屏蔽全局。
要用全局变量,需要使用"::"局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。
对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。
2.[问答]如何引用一个已经定义过的全局变量?参考答案:extern可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。
职业技能题库&在线云笔试平台3.[问答]全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?参考答案:可以,在不同的C文件中以static形式来声明同名全局变量。
可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错4.[问答]static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?参考答案:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。
全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。
这两者在存储方式上并无不同。
这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。
C语言面试题大汇总之华为面试题及答案(5篇)
![C语言面试题大汇总之华为面试题及答案(5篇)](https://img.taocdn.com/s3/m/251ba72c11a6f524ccbff121dd36a32d7275c777.png)
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语言面试题](https://img.taocdn.com/s3/m/8c1b79f64693daef5ef73db3.png)
内容摘要:华为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语言面试题](https://img.taocdn.com/s3/m/165bc054cd7931b765ce0508763231126edb7736.png)
华为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语言面试题大汇总之华为面试题
![C语言面试题大汇总之华为面试题](https://img.taocdn.com/s3/m/6191aa2da6c30c2259019ebf.png)
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 面试题、笔试题及答案(经典)](https://img.taocdn.com/s3/m/56bb4fe128ea81c758f57871.png)
(一) 初级题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语言面试试题](https://img.taocdn.com/s3/m/d27daaa2284ac850ad0242b8.png)
一、判断题(对的写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](https://img.taocdn.com/s3/m/201e2f0083d049649b665890.png)
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语言](https://img.taocdn.com/s3/m/2569e0f4b7360b4c2f3f6482.png)
华为面试题 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语言面试题大汇总之华为面试题](https://img.taocdn.com/s3/m/3d865de26137ee06eff918a8.png)
C语言面试题大汇总之华为面试题女性时尚购物网编辑:8、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。
9、设有以下说明和定义:typedef union {long i; int k; 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, 占用20个字节. 所以它的大小是20 data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32. 所以结果是20 + 32 = 52. 当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20 10、队列和栈有什么区别? 队列先进先出,栈后进先出11、写出下列代码的输出内容#include int 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; } 答:110 12、请找出下面代码中的所以错误说明:以下代码是把一个字符串倒序,如“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; 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);//要为\0分配一个空间char* d = dest; char* s = &src;//指向最后一个字符while( len-- != 0 ) *d++=*s--; *d = 0;//尾部要加\0 printf( "%s\n ",dest); free(dest);// 使用完,应当释放空间,以免造成内存汇泄露return 0; } 方法2:#include#include main() { char str= "hello,world "; int len=strlen(str); char t; for(int i=0; i> )%256 } 请问hash(16),hash(256)的值分别是: ;;; 找错题: 25.请问下面程序有什么错误? int a,i,j,k; for(k=0;k。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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; unsignedlong *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 种以上的电话新业务。