2021年C语言面试题大汇总之华为面试题1
1、局部变量能否和全局变量重名?
答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名局部变量,而不会用到全局变量。对于有些编译器而言,在同一种函数内可以定义各种同名局部变量,例如在两个循环体内都定义一种同名局部变量,而那个局部变量作用域就在那个循环体内。
2、如何引用一种已经定义过全局变量?
答:extern 可以用引用头文献方式,也可以用extern核心字,如果用引用头文献方式来引用某个在头文献中声明全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样错误,那么在编译期间不会报错,而在连接期间报错。
3、全局变量可不可以定义在可被各种.C文献包括头文献中?为什么?
答:可以,在不同C文献中以static形式来声明同名全局变量。 可以在不同C文献中声明同名全局变量,前提是其中只能有一种C文献中对此变量赋初值,此时连接不会出错.
4、请写出下列代码输出内容
#include
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,120
5、static全局变量与普通全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
答:1) 全局变量(外部变量)阐明之前再冠以static 就构成了静态全局变量。全局变量自身就是静态存储方式,静态全局变量固然也是静态存储方式。 这两者在存储方式上并无不同。这两者区别在于非静态全局变量作用域是整个源程序,当一种源程序由各种源文献构成时,非静态全局变量在各个源文献中都是有效。 而静态全局变量则限制了其作用域,即只在定义该变量源文献内有效,在同一源程序其他源文献中不能使用它。由于静态全局变量作用域局限于一种源文献内,只能为该源文献内函数公用,因而可以避免在其他源文献中引起错误。
2) 从以上分析可以看出, 把局部变量变化为静态变量后是变化了它存储方式即变化了它生存期。把全局变量变化为静态变量后是变化了它作用域,限制了它使用范畴。 3) static函数与普通函数作用域不同,仅在本文献。只在当前源文献中使用函数应当阐明为内部函数(static),内部函数应当在当前源文献中阐明和定义。对于可在当前源文献以外使用函数,应当在一种头文献中阐明,要使用这些函数源文献要包括这个头文献
综上所述:
static全局变量与普通全局变量有什么区别:
static全局变量只初使化一次,防止在其她文献单元中被引用; static局部变量和普通局部变量有什么区别:
static局部变量只被初始化一次,下一次根据上一次成果值;
static函数与普通函数有什么区别:
static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
6、程序局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。
7、设有如下阐明和定义:
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 data)+sizeof(max));执行成果是:___52____
考点:区别struct与union.(普通假定在32位机器上) 答:DATE是一种union,变量公用空间. 里面最大变量类型是int[5],占用20个字节. 因此它大小是20. data是一种struct,每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32. 因此成果是 20 + 32 = 52. 固然...在某些16位编辑器下,int也许是2字节,那么成果是 int2 + DATE10 + double8 =
20
8、队列和栈有什么区别?
队列先进先出,栈后进先出
9、写出下列代码输出内容
#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)
{
FUNC1 p=&inc;
int temp =p(arg1);
fun(&temp,&arg1,arg2);
printf("%dn",*arg2);
}
main()
{ int a; //局部变量a为0;
show(multi,10,&a);
return 0;
}
答:110
10、请找出下面代码中所有错误 (题目不错,值得一看)
阐明:如下代码是把一种字符串倒序,如“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;
}
答:
办法1:一共有4个错误;
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; //尾部要加’\0’
printf("%sn",dest);
free(dest); // 使用完,应当释放空间,以免导致内存汇泄露
dest = NULL; //防止产生野指针
return 0;
}
办法2: (办法一需要额外存储空间,效率不高.) 不错想法
#include
#include
main()
{
char str[]="hello,world";
int len=strlen(str);
char t;
for(int i=0;i
{ t=str[i];
str[i]=str[len-i-1];//小心一点
str[len-i-1]=t;
}
printf("%s",str);
return 0;
}
11.对于一种频繁使用短小函数,在C语言中应用什么实现,在C++中应用什么实现?
c用宏定义,c++用inline
12.直接链接两个信令点一组链路称作什么?
PPP点到点连接
13.接入网用是什么接口?
V5接口
14.voip都用了那些合同?
H.323合同簇、SIP合同、Skype合同、H.248和MGCP合同
15.软件测试均有那些种类?
黑盒:针对系统功能测试
白盒:测试函数功能,各函数接口
16.拟定模块功能和模块接口是在软件设计那个队段完毕?
概要设计阶段
17.
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000;
请问p1+5= ;
p2+5= ;
答案:0x801005(相称于加上5位) 0x810014(相称于加上20位);
选取题:
21.Ethternet链接到Internet用到如下那个合同?D
A.HDLC;B.ARP;C.UDP;D.TCP;E.ID
22.属于网络层合同是:( B C)
A.TCP;B.IP;C.ICMP;D.X.25
23.Windows消息调度机制是:(C)
A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;
找错题:
25.请问下面程序有什么错误?
int a[60][250][1000],i,j,k;
for(k=0;kMax_GT_Length)
{ return GT_Length_ERROR;
} ....... }
答:死循环//
问答题:
29.IP Phone原理是什么?
IP电话(又称IP PHONE或VoIP)是建立在IP技术上分组化、数字化传播技术,其基本原理是:通过语音压缩算法对语音数据进行压缩编码解决,然后把这些语音数据按IP等有关合同进行打包,通过IP网络把数据包传播到接受地,再把这
C语言企业面试题集1
题集1及答案
一、选择题
1. 以下操作中,数组比链表速度更快的是____(腾讯)
A.原地逆序 B.头部插入 C.返回中间节点
D.返回头部节点 E.选择随机节点
答案: A C E
2. 已知小写字母a的ASCII码为97,大写字母A的ASCII.码为65,以下程序的结果是__________。()(华为)
main()
{
unsigned int a=32,b=66;
printf(“%c\n”,alb);
}
A.66 B.98 C.b D.B
答案:C
评析:位运算符“l”的作用是按位或,即两个二进制数的相应位中只要有一个为1,该位的结果值为l。最后以字符型输出, 98对应的字符“b”。
3. 已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填_______。(华为)
struct link
{
char data;
___________
}node;
A.struct link next B.link*next
C.struct next link D.struct link*next
答案:D 评析:在单向链表中,由于每个结点需要存储下一个结点的地址,且下一个结点的数据类型与前一个结点的数据类型完全相同,故应为struct link*next。
4.若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。(华为)
A.1,4,3,2 B.2,3,4,l
C.3,1,4,2 D.3,4, 2,1
答案:C
评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。
百一测评——华为C语言面试题集 C语言面试题-华为C语言面试题 深圳华为面试C语言面试题
职业技能题库&在线云笔试平台
试卷名称:华为C语言面试题集 C语言面试题-华为C语言面试题 深圳华为面试C语言面试题
试卷描述:华为笔试题目、华为招聘笔试、微信考试、在线考试
试卷链接:/store/open/paperInfo/42331
试卷限时:50分
一. 编程计算题
每题分值:6分
是否题目乱序:是
是否选项乱序:是
是否可回溯:是
难度:中
1. [问答]局部变量能否和全局变量重名?
参考答案:能,局部会屏蔽全局。要用全局变量,需要使用"::"
局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。
2. [问答]如何引用一个已经定义过的全局变量?
参考答案:extern
可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 职业技能题库&在线云笔试平台
第2页
3. [问答]全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
参考答案:可以,在不同的C文件中以static形式来声明同名全局变量。
可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错
4. [问答]static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
参考答案:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
华为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
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
int isPrime(int num) {
int i;
for (i = 2; i <= num / 2; i++) {
if (num % i == 0) { return 0;
}
}
return 1;
华为C++面试题、笔试题及答案经典
(一) 初级题
1. 什么是预编译,何时需要预编译:
答:
(1) 总是使用不经常改动的大型代码体
(2) 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头
<
处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等
就是为编译做的预备工作的阶段
主要处理#开始的预编译指令
预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。常见的预编译指令有: >>
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是指针,它们指向相同的常量区域。
c语言面试题集(完整版)
c语言面试题集(完整版)
试题1:C语言面试题一——华为篇
1.static有什么用途?(请至少说明两种)
1)限制变量的作用域
2)设置变量的存储域(堆,主动分配内存也是堆)
2.引用与指针有什么区别?
1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性
在特定时间内完成特定的任务,实时性与可靠性
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
全局变量储存在静态数据库,局部变量在栈
5.什么是平衡二叉树?
左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1
6.堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源
7.什么函数不能声明为虚函数?
constructor (构造函数)
8.冒泡排序算法的时间复杂度是什么?(其它排序算法的时间复杂度)
O(n^2)
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)
10.Internet采用哪种网络协议?该协议的主要层次结构?
tcp/ip 应用层/传输层/网络层/数据链路层/物理层
11.Internet物理地址和IP地址转换采用什么协议?
ARP (Address Resolution Protocol)(地址解析協議)
18.IP地址的编码分为哪俩部分?
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
19.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
循环链表,用取余操作做
#include
#define NULL 0
#define TYPE struct stu
#define LEN sizeof (struct stu)
华为招聘笔试、面试 试题及经验
第一部分,不定向选择
第二部分,填空题
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的值
C语言面试题(经典全)
1.static有什么用途?(请至少说明两种)
1)限制变量的作用域
2)设置变量的存储域(堆,主动分配内存也是堆)
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
全局变量储存在静态数据库,局部变量在栈
6.堆栈溢出一般是由什么原因导致的?
堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致堆栈溢出。 没有回收垃圾资源导致的是内存泄露最后内存耗尽。
20.不能做switch()的参数类型是:
switch的参数不能为实型。(只能是int char)
9.写出float x 与“零值”比较的if语句。
if(x<0.000001&&x>-0.000001)
3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?
函数名: atol
功能: 把字符串转换成长整型数
函数的原型: long atol(const char *nptr);
程序例:
#include
#include
int main(void)
{
long l;
char *str = "98765432";
l = atol(lstr);
printf("string = %s integer = %ld\n", str, l);
return(0);
}
1.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
c用宏定义,c++用inline
8.软件测试都有那些种类?
c语言复习题面试题考试题-全
c语言复习题面试题考试题-全
不定项选择题(针对以下题目,请选择最符合题目要求的答案,每道题有一项或二项正确答案。针对每一道题目,所有答案都选对,则该题得分,所选答案错误或不能选出所有答案,则该题不得分。题量为50道,每题2分,总分为100分。)
第一章
1)对于C语言的描述说法错误的是()。
A、它是一种计算机程序设计语言
B、它既有高级语言的特点,又具有汇编语言的特点
C、它不可以作为系统设计语言,编写系统应用程序
D、它可以作为应用程序设计语言,编写不依赖计算机硬件的应用程度
2)在C语言中,下图所示的流程图符号代表的是()。(选择一项)
A、程序开始或结束
B、判断和分支
C、输入/输出指令
D、计算步骤
3、下列关于算法的说法正确的是()(选择二项)
A、算法必须在有限步骤内解决问题
B、算法可能需要无穷步才能解决问题 C、算法应该有确定的结果
D、算法的计算结果无法预知
4、在C中,多行注释使用()符号结尾(选择一项)
A、/某
B、某/
C、某
D、ocB、.t某tC、.pptD、.c或.cpp
7、以下对C语言源程序的结构特点描述错误的是()(选择一项)
A、一个C语言源程序可以由一个或多个源文件组成
B、每一个源文件只能有一个函数组成
C、一个源程序有且只有一个main函数充当主函数
D、每一个说明,每一个语句都必须以分号结尾
8、下列对C语言头文件描述错误的是()(选择一项)
A、中包含了标准的输入输出函数以及字符串出来函数
B、中包含了数学运算函数
C、中包含了各类基本函数
D、中包含了时间和日期的处理函数
9、从开发C语言程序到让计算机可以执行命令,需要经过以下步骤中正确的是()(选择一项) A、编辑编译预处理连接加载执行
B、编辑预处理编译连接加载执行
C、编辑预处理连接编译加载执行
D、编辑预处理连接编译加载执行
10、在C语言中,下图所示的流程图符号代表的是()。(选择一项)
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 ) =
华为面试 笔试题目(附答案)
华为面试/笔试题目(附答案)
陈晓明 2010-05-21 15:45:59
要查看更多华为笔经相关信息,请访问华为公司校园招聘club:深圳华为技术有限公司
(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 (y)?(y):(x)) //结尾没有‘;’
(10)嵌入式系统中经常要用到无限循环,你怎么用c编写死循环。答案:while(1){}或者for(;;)
(11)关键字static的作用是什么?答案:定义静态变量
(12)关键字const有什么含意?答案:表示常量不可以修改的变量。
(13)关键字volatile有什么含意?并举出三个不同的例子?答案:提示编译器对象的值可能在编译器未监测到的情况下改变。
(14)int (*s[10])(int) 表示的是什么啊?答案:int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。
