欢迎来到天天文库
浏览记录
ID:13751614
大小:99.00 KB
页数:16页
时间:2018-07-24
《c_c++语言程序设计笔试面试题31》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、判断一个字符串是不是回文intIsReverseStr(char*aStr){inti,j;intfound=1;if(aStr==NULL)return-1;j=strlen(aStr);for(i=0;i2、列。数组实现:#include#includeintJosephu(intn,intm){intflag,i,j=0;int*arr=(int*)malloc(n*sizeof(int));for(i=0;i3、n,m;scanf("%d%d",&n,&m);printf("最后胜利的是%d号!",Josephu(n,m));system("pause");return0;}链表实现:#include#includetypedefstructNode{intindex;structNode*next;}JosephuNode;intJosephu(intn,intm){inti,j;JosephuNode*head,*tail;head=tail=(JosephuNode*)malloc(sizeof(JosephuNode));fo4、r(i=1;iindex=i;tail->next=(JosephuNode*)malloc(sizeof(JosephuNode));tail=tail->next;}tail->index=i;tail->next=head;for(i=1;tail!=head;++i){for(j=1;jnext;}tail->next=head->next;printf("第%4d个出局的人是:%4d号",i,head->index);free(head);head=tail->next5、;}i=head->index;free(head);returni;}intmain(){intn,m;scanf("%d%d",&n,&m);printf("最后胜利的是%d号!",Josephu(n,m));system("pause");return0;}已知strcpy函数的原型是:char*strcpy(char*strDest,constchar*strSrc);1.不调用库函数,实现strcpy函数。2.解释为什么要返回char*。解说:1.strcpy的实现代码char*strcpy(char*strDest,constchar*strSrc){6、if((strDest==NULL)7、8、(strSrc==NULL))file://[/1]throw"Invalidargument(s)";//[2]char*strDestCopy=strDest;file://[/3]while((*strDest++=*strSrc++)!=' ');file://[/4]returnstrDestCopy;}错误的做法:[1](A)不检查指针的有效性,说明答题者不注重代码的健壮性。(B)检查指针的有效性时使用((!strDest)9、10、(!strSrc))或(!(strDest&&strSrc)),说明答题者对C语言中类型11、 的隐式转换没有深刻认识。在本例中char*转换为bool即是类型隐式转换,这种功能虽然灵活,但更多的是导致 出错概率增大和维护成本升高。所以C++专门增加了bool、true、false三个关键字以提供更安全的条件表达式。(C)检查指针的有效性时使用((strDest==0)12、13、(strSrc==0)),说明答题者不知道使用常量的好处。直接使用 字面常量(如本例中的0)会减少程序的可维护性。0虽然简单,但程序中可能出现很多处对指针的检查,万一出 现笔误,编译器不能发现,生成的程序内含逻辑错误,很难排除。而使用NULL代替0,如果出现拼写错误,编译器
2、列。数组实现:#include#includeintJosephu(intn,intm){intflag,i,j=0;int*arr=(int*)malloc(n*sizeof(int));for(i=0;i3、n,m;scanf("%d%d",&n,&m);printf("最后胜利的是%d号!",Josephu(n,m));system("pause");return0;}链表实现:#include#includetypedefstructNode{intindex;structNode*next;}JosephuNode;intJosephu(intn,intm){inti,j;JosephuNode*head,*tail;head=tail=(JosephuNode*)malloc(sizeof(JosephuNode));fo4、r(i=1;iindex=i;tail->next=(JosephuNode*)malloc(sizeof(JosephuNode));tail=tail->next;}tail->index=i;tail->next=head;for(i=1;tail!=head;++i){for(j=1;jnext;}tail->next=head->next;printf("第%4d个出局的人是:%4d号",i,head->index);free(head);head=tail->next5、;}i=head->index;free(head);returni;}intmain(){intn,m;scanf("%d%d",&n,&m);printf("最后胜利的是%d号!",Josephu(n,m));system("pause");return0;}已知strcpy函数的原型是:char*strcpy(char*strDest,constchar*strSrc);1.不调用库函数,实现strcpy函数。2.解释为什么要返回char*。解说:1.strcpy的实现代码char*strcpy(char*strDest,constchar*strSrc){6、if((strDest==NULL)7、8、(strSrc==NULL))file://[/1]throw"Invalidargument(s)";//[2]char*strDestCopy=strDest;file://[/3]while((*strDest++=*strSrc++)!=' ');file://[/4]returnstrDestCopy;}错误的做法:[1](A)不检查指针的有效性,说明答题者不注重代码的健壮性。(B)检查指针的有效性时使用((!strDest)9、10、(!strSrc))或(!(strDest&&strSrc)),说明答题者对C语言中类型11、 的隐式转换没有深刻认识。在本例中char*转换为bool即是类型隐式转换,这种功能虽然灵活,但更多的是导致 出错概率增大和维护成本升高。所以C++专门增加了bool、true、false三个关键字以提供更安全的条件表达式。(C)检查指针的有效性时使用((strDest==0)12、13、(strSrc==0)),说明答题者不知道使用常量的好处。直接使用 字面常量(如本例中的0)会减少程序的可维护性。0虽然简单,但程序中可能出现很多处对指针的检查,万一出 现笔误,编译器不能发现,生成的程序内含逻辑错误,很难排除。而使用NULL代替0,如果出现拼写错误,编译器
3、n,m;scanf("%d%d",&n,&m);printf("最后胜利的是%d号!",Josephu(n,m));system("pause");return0;}链表实现:#include#includetypedefstructNode{intindex;structNode*next;}JosephuNode;intJosephu(intn,intm){inti,j;JosephuNode*head,*tail;head=tail=(JosephuNode*)malloc(sizeof(JosephuNode));fo
4、r(i=1;iindex=i;tail->next=(JosephuNode*)malloc(sizeof(JosephuNode));tail=tail->next;}tail->index=i;tail->next=head;for(i=1;tail!=head;++i){for(j=1;jnext;}tail->next=head->next;printf("第%4d个出局的人是:%4d号",i,head->index);free(head);head=tail->next
5、;}i=head->index;free(head);returni;}intmain(){intn,m;scanf("%d%d",&n,&m);printf("最后胜利的是%d号!",Josephu(n,m));system("pause");return0;}已知strcpy函数的原型是:char*strcpy(char*strDest,constchar*strSrc);1.不调用库函数,实现strcpy函数。2.解释为什么要返回char*。解说:1.strcpy的实现代码char*strcpy(char*strDest,constchar*strSrc){
6、if((strDest==NULL)
7、
8、(strSrc==NULL))file://[/1]throw"Invalidargument(s)";//[2]char*strDestCopy=strDest;file://[/3]while((*strDest++=*strSrc++)!=' ');file://[/4]returnstrDestCopy;}错误的做法:[1](A)不检查指针的有效性,说明答题者不注重代码的健壮性。(B)检查指针的有效性时使用((!strDest)
9、
10、(!strSrc))或(!(strDest&&strSrc)),说明答题者对C语言中类型
11、 的隐式转换没有深刻认识。在本例中char*转换为bool即是类型隐式转换,这种功能虽然灵活,但更多的是导致 出错概率增大和维护成本升高。所以C++专门增加了bool、true、false三个关键字以提供更安全的条件表达式。(C)检查指针的有效性时使用((strDest==0)
12、
13、(strSrc==0)),说明答题者不知道使用常量的好处。直接使用 字面常量(如本例中的0)会减少程序的可维护性。0虽然简单,但程序中可能出现很多处对指针的检查,万一出 现笔误,编译器不能发现,生成的程序内含逻辑错误,很难排除。而使用NULL代替0,如果出现拼写错误,编译器
此文档下载收益归作者所有