应聘C语言类工作职位面试题大汇总8Word下载.docx

上传人:b****1 文档编号:15370079 上传时间:2022-10-29 格式:DOCX 页数:10 大小:17.96KB
下载 相关 举报
应聘C语言类工作职位面试题大汇总8Word下载.docx_第1页
第1页 / 共10页
应聘C语言类工作职位面试题大汇总8Word下载.docx_第2页
第2页 / 共10页
应聘C语言类工作职位面试题大汇总8Word下载.docx_第3页
第3页 / 共10页
应聘C语言类工作职位面试题大汇总8Word下载.docx_第4页
第4页 / 共10页
应聘C语言类工作职位面试题大汇总8Word下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

应聘C语言类工作职位面试题大汇总8Word下载.docx

《应聘C语言类工作职位面试题大汇总8Word下载.docx》由会员分享,可在线阅读,更多相关《应聘C语言类工作职位面试题大汇总8Word下载.docx(10页珍藏版)》请在冰豆网上搜索。

应聘C语言类工作职位面试题大汇总8Word下载.docx

1

  int:

2/*该2位不能使用*/

  intb:

3

  intc:

2

  };

  从以上分析可以看出,位域在本质上就是一种结构类型,不过其成员是按二进位分配的。

  二、位域的使用位域的使用和结构成员的使用相同,其一般形式为:

位域变量名?

位域名位域允许用各种格式输出。

  main(){

1;

3;

4;

  }bit,*pbit;

  bit.a=1;

  bit.b=7;

  bit.c=15;

  pri

  改错:

  #include

  intmain(void){

  int**p;

  intarr[100];

  p=&

arr;

  return0;

  解答:

  搞错了,是指针类型不同,

//二级指针

  &

//得到的是指向第一维为100的数组的指针

  int**p,*q;

  q=arr;

q;

  下面这个程序执行后会有什么错误或者效果:

  #defineMAX255

  intmain()

  unsignedcharA[MAX],i;

//i被定义为unsignedchar

  for(i=0;

i<

=MAX;

i++)

  A[i]=i;

死循环加数组越界访问(C/C++不进行数组越界检查)

  MAX=255

  数组A的下标范围为:

0..MAX-1,这是其一..

  其二.当i循环到255时,循环内执行:

  A[255]=255;

  这句本身没有问题..但是返回for(i=0;

i++)语句时,

  由于unsignedchar的取值范围在(0..255),i++以后i又为0了..无限循环下去.

  structname1{

  charstr;

  shortx;

  intnum;

  structname2{

  sizeof(structname1)=8,sizeof(structname2)=12

  在第二个结构中,为保证num按四个字节对齐,char后必须留出3字节的空间;

同时为保证整个结构的自然对齐(这里是4字节对齐),在x后还要补齐2个字节,这样就是12字节。

  intel:

  A.c和B.c两个c文件中使用了两个相同名字的static变量,编译的时候会不会有问题?

这两个static变量会保存到哪里(栈还是堆或者其他的)?

  static的全局变量,表明这个变量仅在本模块中有意义,不会影响其他模块。

  他们都放在数据区,但是编译器对他们的命名是不同的。

  如果要使变量在其他模块也有意义的话,需要使用extern关键字。

  structs1

  inti:

8;

  intj:

4;

3;

  doubleb;

  structs2

  printf("

sizeof(s1)=%d\n"

sizeof(s1));

sizeof(s2)=%d\n"

sizeof(s2));

  result:

16,24

  第一个structs1

  理论上是这样的,首先是i在相对0的位置,占8位一个字节,然后,j就在相对一个字节的位置,由于一个位置的字节数是4位的倍数,因此不用对齐,就放在那里了,然后是a,要在3位的倍数关系的位置上,因此要移一位,在15位的位置上放下,目前总共是18位,折算过来是2字节2位的样子,由于double是8字节的,因此要在相对0要是8个字节的位置上放下,因此从18位开始到8个字节之间的位置被忽略,直接放在8字节的位置了,因此,总共是16字节。

  第二个最后会对照是不是结构体内最大数据的倍数,不是的话,会补成是最大数据的倍数

  1)读文件file1.txt的内容(例如):

  12

  34

  56

  输出到file2.txt:

  (逆序)

  2)输出和为一个给定整数的所有组合

  例如n=5

  5=1+4;

5=2+3(相加的数不能重复)

  则输出

  1,4;

2,3。

  望高手赐教!

!

  第一题,注意可增长数组的应用.

  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)

error2"

  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)

error3"

  a=b;

  for(;

--j>

=0;

  fprintf(fp2,"

%d\n"

a[j]);

  fclose(fp1);

  fclose(fp2);

  第二题.

  unsignedlonginti,j,k;

pleaseinputthenumber\n"

  scanf("

i);

  if(i%2==0)

  j=i/2;

  else

  j=i/2+1;

Theresultis\n"

  for(k=0;

k<

j;

k++)

%d=%d+%d\n"

i,k,i-k);

  voidmain()

  unsignedlonginta,i=1;

a);

  if(a%2==0)

  for(i=1;

>

a,a-i);

=a/2;

%d,%d"

i,a-i);

  兄弟,这样的题目若是做不出来实在是有些不应该,给你一个递规反向输出字符串的例子,可谓是反序的经典例程.

  voidinverse(char*p)

  if(*p=='

\0'

  return;

  inverse(p+1);

  printf("

%c"

*p);

  intmain(intargc,char*argv[])

  inverse("

abc\0"

  借签了楼上的“递规反向输出”

  voidtest(FILE*fread,FILE*fwrite)

  charbuf[1024]={0};

  if(!

fgets(buf,sizeof(buf),fread))

  test(fread,fwrite);

  fputs(buf,fwrite);

  FILE*fr=NULL;

  FILE*fw=NULL;

  fr=fopen("

data"

"

rb"

  fw=fopen("

dataout"

wb"

  test(fr,fw);

  fclose(fr);

  fclose(fw);

  在对齐为4的情况下

  structBBB

  longnum;

  char*name;

  shortintdata;

  charha;

  shortba[5];

  }*p;

  p=0x1000000;

  p+0x200=____;

  (Ulong)p+0x200=____;

  (char*)p+0x200=____;

  希望各位达人给出答案和原因,谢谢拉

假设在32位CPU上,

  sizeof(long)=4bytes

  sizeof(char*)=4bytes

  sizeof(shortint)=sizeof(short)=2bytes

  sizeof(char)=1bytes

  由于是4字节对齐,

  sizeof(structBBB)=sizeof(*p)

  =4+4+2+1+1/*补齐*/+2*5+2/*补齐*/=24bytes(经Dev-C++验证)

  =0x1000000+0x200*24

  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1