C面试题库二.docx
- 文档编号:3185921
- 上传时间:2022-11-19
- 格式:DOCX
- 页数:20
- 大小:23.73KB
C面试题库二.docx
《C面试题库二.docx》由会员分享,可在线阅读,更多相关《C面试题库二.docx(20页珍藏版)》请在冰豆网上搜索。
C面试题库二
96.
structname1{
charstr;
shortx;
intnum;
}
structname2{
charstr;
intnum;
shortx;
}
sizeof(structname1)=?
sizeof(structname2)=?
8、12
97.读文件file1.txt的内容(例如):
12
34
56
输出到file2.txt:
56
34
12
(逆序)
2)输出和为一个给定整数的所有组合
例如n=5
5=1+4;5=2+3(相加的数不能重复)
则输出
1,4;2,3。
注意可增长数组的应用.
#include
#include
intmain(void)
{
intMAX=10;
int*a=(int*)malloc(MAX*sizeof(int));
int*b;
FILE*fp1;
FILE*fp2;
fp1=fopen("a.txt","r");
if(fp1==NULL)
{printf("error1");
exit(-1);
}
fp2=fopen("b.txt","w");
if(fp2==NULL)
{printf("error2");
exit(-1);
}
inti=0;
intj=0;
while(fscanf(fp1,"%d",&a[i])!
=EOF)
{
i++;
j++;
if(i>=MAX)
{
MAX=2*MAX;
b=(int*)realloc(a,MAX*sizeof(int));
if(b==NULL)
{
printf("error3");
exit(-1);
}
a=b;
}
}
for(;--j>=0;)
fprintf(fp2,"%d\n",a[j]);
fclose(fp1);
fclose(fp2);
return0;
}
98.一个递规反向输出字符串的例子,经典例程.
voidinverse(char*p)
{
if(*p=='\0')
return;
inverse(p+1);
printf("%c",*p);
}
intmain(intargc,char*argv[])
{
inverse("abc\0");
return0;
}
99.用递归算法判断数组a[N]是否为一个递增数组。
递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束:
boolfun(inta[],intn)
{
if(n==1)
returntrue;
if(n==2)
returna[n-1]>=a[n-2];
returnfun(a,n-1)&&(a[n-1]>=a[n-2]);
}
100.什么是可重入性?
可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。
相反,不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。
可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。
可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。
可重入函数:
不为连续的调用持有静态数据。
不返回指向静态数据的指针;所有数据都由函数的调用者提供。
使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。
如果必须访问全局变量,记住利用互斥信号量来保护全局变量。
绝不调用任何不可重入函数。
101.给出下列程序的结果:
charstr1[]="abc";
charstr2[]="abc";
constcharstr3[]="abc";
constcharstr4[]="abc";
constchar*str5="abc";
constchar*str6="abc";
char*str7="abc";
char*str8="abc";
cout<<(str1==str2)< 结果是: 0011str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 102.以下代码中的两个sizeof用法有问题吗? voidUpperCase(charstr[])//将str中的小写字母转换成大写字母 { for(size_ti=0;i if('a'<=str[i]&&str[i]<='z') str[i]-=('a'-'A'); } charstr[]="aBcDe"; cout<<"str字符长度为: "< UpperCase(str); cout< 答案: 函数外的str是一个静态定义的数组,因此其大小为6,因为还有'\0', 函数内的sizeof(str)返回4。 103.一个32位的机器,该机器的指针是多少位答案: 指针是多少位只要看地址总线的位数就行了。 80386以后的机子和ARM都是32的数据总线。 所以指针的位数就是4个字节了。 104.请问以下代码有什么问题: intmain() { chara; char*str=&a; strcpy(str,"hello"); printf(str); return0; } 答案: 没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。 虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。 105.int(*s[10])(int)表示的是什么啊? 答案: int(*s[10])(int)函数指针数组,每个指针指向一个intfunc(intparam)的函数。 106.有以下表达式: inta=248; intb=4; intconstc=21; constint*d=&a; int*conste=&b; intconst*fconst=&a; 请问下列表达式哪些会被编译器禁止? 为什么? *c=32;d=&b;*d=43;e=34;e=&a;f=0x321f; 答案: *c这是个什么东东,禁止; *d说了是const,禁止; e=&a说了是const,禁止; const*fconst=&a;禁止 107.c和c++中的struct有什么不同? 答案: c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。 c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private 108.类的静态成员和非静态成员有何区别? 答案: 类的静态成员每个类只有一个,非静态成员每个对象一个 109.纯虚函数如何定义? 使用时应注意什么? 答案: virtualvoidf()=0;是接口,子类必须要实现 110. intmain() { intx=3; printf("%d",x); return1; } 问函数既然不会被其它函数调用,为什么要返回1? 答案: mian中,c标准认为0表示成功,非0表示错误。 具体的值是某中具体出错信息 111.已知一个数组table,用一个宏定义,求出数据的元素个数’ 答案: #defineNTBL(sizeof(table)/sizeof(table[0])) 112.-1,2,7,28,,126请问28和126中间那个数是什么? 为什么? 答案: 答案应该是4^3-1=63规律是n^3-1(当n为偶数0,2,4)n^3+1(当n为奇数1,3,5) 113.直接链接两个信令点的一组链路称作什么? 答案: PPP点到点连接 114.确定模块的功能和模块的接口是在软件设计的那个队段完成的? 答案: 概要设计阶段 115. enumstring{x1,x2,x3=10,x4,x5,}x; 问x的取值是? 答案: 取值在0。 1。 10。 11。 12中的一个 116. unsignedchar*p1; unsignedlong*p2; p1=(unsignedchar*)0x801000; p2=(unsignedlong*)0x810000; 请问p1+5=;p2+5=; 答案: 801005;810014。 不要忘记了这个是16进制的数字,p2要加20变为16进制就是14 : 117.Ethternet链接到Internet用到以下那个协议? B A.HDLC;B.ARP;C.UDP;D.TCP;E.ID 118.属于网络层协议的是: A A.TCP;B.IP;C.ICMP;D.X.25 119.Windows消息调度机制是: C A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈; 120.请问下面程序有什么错误? inta[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; 答案: 把循环语句内外换一下 121.以下是求一个数的平方的程序,请找出错误: #defineSQUARE(a)((a)*(a)) inta=5;intb; b=SQUARE(a++); 答案: 这个没有问题,s(a++),就是((a++)×(a++))唯一要注意的就是计算后a=7了 122.分析下列程序有什么问题 typedefunsignedcharBYTE intexamply_fun(BYTEgt_len;BYTE*gt_code) { BYTE*gt_buf; gt_buf=(BYTE*)malloc(Max_GT_Length); ...... if(gt_len>Max_GT_Length) { returnGT_Length_ERROR; } ....... } 答案: 要释放内存问答题: 123.static全局变量与普通的全局变量有什么区别? static局部变量和普通局部变量有什么区别? static函数与普通函数有什么区别? 答案: 全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。 全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。 这两者在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面试 题库