C语言面试题

C语言经典面试题:

1.可以做switch()的参数类型是:

答:只能是int和char型。

2.写出float X与零值比较的if语句

答:if(x>-0.000001&x<0.000001)

3.C语言中将一个字符转换成整数的函数是哪个?写出这个函数的原型

答:函数:atol()

功能:把字符串转换成长整型

原型:long atol(const char *nptr)

示例:

#include<stdio.h>

int main()

{

long lNum=0;

char *str="12345";

lNum=atol(str);

printf("String=%s integer=%d\n",str,lNum);

return 0;

}

4.unsigned char *p1=(unsigned char *)0x801000;

unsigned long *p2=(unsigned long *)0x810000;

p1+5=?,p2+5=?

答:p1+5=0x801005,p2+5=0x810014;

5.求值:int aNum=5,bNum=0;

bNum=(aNum++)(aNum++);

aNum=?,bNum=?

答:aNum=7,bNum=25

6 一16位整数1101010110110111,每四位为一个整数,写函数求值

答:char sumFunc(unsigned short num)

{

char ch=0;

int  iCount=4;

do{

c+=n&15;

n>>4;

}(while--i);

return 0;

}

7.编程实现两个字符串s和t,把t字符串拼接到s字符串尾,s字符串有足够的空间存放t字符串

void strConnect(char *s,char *t,int n)

{

char *p=s;

char *q=t;

if(q==NULL)

return;

while(*p!=‘\0‘)

p++;

while(*q!=‘\0‘)

{

*p=*q;

p++;

q++;

}

*p=‘\0‘;

}

void main()

{

char cArray1[10]="abcde";

char cArray2[3]="xyz";

strConnect(cArray1,cArray2,3);

printf("%s",cArray1);

}
8.static全局变量与普通全局变量的区别,static局部变量与普通局部变量的区别,static函数与普通函数的区别。

答:1.非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的,而静态全局变量(只初始化一次)限制了其作用域,只在定义该变量的源文件内有效,同一源程序的其它源文件都不能使用它。

2.static局部变量(只初始化一次)存储在静态区,普通局部变量存储在栈中,存储方式不同。

3.static函数在内存中只有一份,普通函数在每个被调用中都维持一份拷贝。

9.char a;

char *str=&a;

strcpy(str,"hello");

问这段代码有什么问题?

答:没有为str分配内存空间,将会发生异常,将一个字符串复制进一个字符变量指针所指指针,虽然可以正确输出结果,但因为越界进行内在读写导致程序崩溃。

时间: 2024-10-04 22:05:48

C语言面试题的相关文章

12个有趣的C语言面试题及答案

12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出下面代码里的问题: #include<stdio.h> int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n",buff); return 0; } 答:上面代码里的问题在于函数gets()的

C语言面试题大汇总

C语言面试题大汇总 1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量.对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内. 2.如何引用一个已经定义过的全局变量? 答: extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引

华为C语言笔试题集合

①华为笔试题搜集 1.static有什么用途?(请至少说明两种)    1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.    2) 在模块内(但在函数体外),一个被声明为静态的变量能够被模块内所用函数訪问,但不能被模块外其他函数訪问.它是一个本地的全局变量.    3) 在模块内,一个被声明为静态的函数仅仅可被这一模块内的其他函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用 2.引用与指针有什么差别?    1) 引用必须被初始化,指针不必.    2)

[笔记]一道C语言面试题:IPv4字符串转为UInt整数

题目:输入一个IPv4字符串,如“1.2.3.4”,输出对应的无符号整数,如本例输出为 0x01020304. 来源:某500强企业面试题目 思路:从尾部扫描到头部,一旦发现无法转换,立即返回,减少无谓操作. #include "stdio.h" #include "stdlib.h" #include "string.h" bool ConvertIPv4ToUInt(const char *strIP, unsigned int *ip) {

c语言面试题之sizeof

*/--> c语言面试题之sizeof Table of Contents 1. sizeof 1 sizeof sizeof是c语言中判断数据类型或者表达式的长度符,它不是函数,,字节数的计算在程序编译 时进行,而不是在程序执行的过程中才计算出来!(文采不行,我就废话下了,接下来上重点)! #include int main(int argc, char* argv[]) { char str[]="123"; char *p=str; printf("%d\n&qu

c语言面试题(感觉比较好的题目)

1.static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答:static全局变量--只在定义了该变量的源文件内有效,初始化一次,防止在其他文件单元中被引用. 普通全局变量----在各个源文件中都是有效的. 相同之处都是静态存储方式. static局部变量--作用在整个生命周期内,初始化一次,下一次依据上一次的结果. 普通局部变量----作用在当前函数内,生命周期只在函数内,用完就结束. static函数--作用在本

C语言面试题总结(一)

以前的记录都在电子笔记里,倒不如拿出来,有错的地方和大家交流. 1.指针操作: 如下例,设a内存地址为OX00 int a =10; int *p = &a; *a 编译错误 a表示10 *p表示10 p表示OX00 &p表示0X04 2.hex转换成ASCII 1 #include <stdio.h> 2 int main(int argc, const char *argv[]) 3 { 4 char hexBuff[128]; 5 sprintf(hexBuff, &qu

iOS求职之C语言面试题

1.static有什么用途?(请至少说明两种) 1)限制变量的作用域 2)设置变量的存储域(堆,主动分配内存也是堆) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.? 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问.它是一个本地的全局变量.? 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用. 2.全局变量和局部变量在内存中是否有区别?如

16 道嵌入式C语言面试题

1. 用预处理指令#define 声明一个常数,用以表明 1 年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的.3). 意识到这个表达式将使一个 16 位机的整型数溢出-因此要用到长整型符号