欢迎来到天天文库
浏览记录
ID:13547766
大小:58.00 KB
页数:9页
时间:2018-07-23
《c_c++语言程序设计笔试面试题27》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第一题,注意可增长数组的应用.#include#includeintmain(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
2、(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",a[j]);fclose(fp1);fclose(fp2);return0;}第二题.#includeintmain(void){unsignedlonginti,j,k;printf("pleaseinputthenumber
3、n");scanf("%d",&i);if(i%2==0)j=i/2;elsej=i/2+1;printf("Theresultis");for(k=0;kvoidmain(){unsignedlonginta,i=1;scanf("%d",&a);if(a%2==0){for(i=1;i4、样的题目若是做不出来实在是有些不应该,给你一个递规反向输出字符串的例子,可谓是反序的经典例程.voidinverse(char*p){if(*p==' ')return;inverse(p+1);printf("%c",*p);}intmain(intargc,char*argv[]){inverse("abc ");return0;}借签了楼上的“递规反向输出”#includevoidtest(FILE*fread,FILE*fwrite){charbuf[1024]={0};if(!fgets(buf,sizeof(buf),fread))re5、turn;test(fread,fwrite);fputs(buf,fwrite);}intmain(intargc,char*argv[]){FILE*fr=NULL;FILE*fw=NULL;fr=fopen("data","rb");fw=fopen("dataout","wb");test(fr,fw);fclose(fr);fclose(fw);return0;}在对齐为4的情况下structBBB{longnum;char*name;shortintdata;charha;shortba[5];}*p;p=0x1000000;p+0x200=____;(Ul6、ong)p+0x200=____;(char*)p+0x200=____;希望各位达人给出答案和原因,谢谢拉解答:假设在32位CPU上,sizeof(long)=4bytessizeof(char*)=4bytessizeof(shortint)=sizeof(short)=2bytessizeof(char)=1bytes由于是4字节对齐,sizeof(structBBB)=sizeof(*p)=4+4+2+1+1/*补齐*/+2*5+2/*补齐*/=24bytes(经Dev-C++验证)p=0x1000000;p+0x200=____;=0x1000000+0x207、0*24(Ulong)p+0x200=____;=0x1000000+0x200(char*)p+0x200=____;=0x1000000+0x200*4你可以参考一下指针运算的细节写一段程序,找出数组中第k大小的数,输出数所在的位置。例如{2,4,3,4,7}中,第一大的数是7,位置在4 。第二大、第三大的数都是4,位置在1、3随便输出哪一个均可。函数接口为:intfind_orderk(constint* narry,constintn,constintk)要求算法复杂度不能是O(n^2)谢谢!可以先用快速排序进行排序,其中用另外一
4、样的题目若是做不出来实在是有些不应该,给你一个递规反向输出字符串的例子,可谓是反序的经典例程.voidinverse(char*p){if(*p==' ')return;inverse(p+1);printf("%c",*p);}intmain(intargc,char*argv[]){inverse("abc ");return0;}借签了楼上的“递规反向输出”#includevoidtest(FILE*fread,FILE*fwrite){charbuf[1024]={0};if(!fgets(buf,sizeof(buf),fread))re
5、turn;test(fread,fwrite);fputs(buf,fwrite);}intmain(intargc,char*argv[]){FILE*fr=NULL;FILE*fw=NULL;fr=fopen("data","rb");fw=fopen("dataout","wb");test(fr,fw);fclose(fr);fclose(fw);return0;}在对齐为4的情况下structBBB{longnum;char*name;shortintdata;charha;shortba[5];}*p;p=0x1000000;p+0x200=____;(Ul
6、ong)p+0x200=____;(char*)p+0x200=____;希望各位达人给出答案和原因,谢谢拉解答:假设在32位CPU上,sizeof(long)=4bytessizeof(char*)=4bytessizeof(shortint)=sizeof(short)=2bytessizeof(char)=1bytes由于是4字节对齐,sizeof(structBBB)=sizeof(*p)=4+4+2+1+1/*补齐*/+2*5+2/*补齐*/=24bytes(经Dev-C++验证)p=0x1000000;p+0x200=____;=0x1000000+0x20
7、0*24(Ulong)p+0x200=____;=0x1000000+0x200(char*)p+0x200=____;=0x1000000+0x200*4你可以参考一下指针运算的细节写一段程序,找出数组中第k大小的数,输出数所在的位置。例如{2,4,3,4,7}中,第一大的数是7,位置在4 。第二大、第三大的数都是4,位置在1、3随便输出哪一个均可。函数接口为:intfind_orderk(constint* narry,constintn,constintk)要求算法复杂度不能是O(n^2)谢谢!可以先用快速排序进行排序,其中用另外一
此文档下载收益归作者所有