c++绝版面试题--9.7(6)

2020-02-22 13:13

node* tmp=new node; tmp->data=i; tmp->next=null; head->next=tmp; head=head->next; }

head->next=p; while(p!=p->next) {

p->next->next=p->next->next->next; p=p->next->next; }

cout<data; return 0; }

方法3:通用算法

#i nclude

#define MAXLINE 1000 //元素个数 /*

MAXLINE 元素个数

a[] 元素数组 R[] 指针场 suffix 下标

index 返回最后的下标序号 values 返回最后的下标对应的值 start 从第几个开始

K 间隔 */

int find_n(int a[],int R[],int K,int& index,int& values,int s=0) { int suffix;

int front_node,current_node; suffix=0;

if(s==0) {

current_node=0;

front_node=MAXLINE-1; }

else {

current_node=s; front_node=s-1; }

while(R[front_node]!=front_node) { printf(\ R[front_node]=R[current_node];

if(K==1) {

current_node=R[front_node]; continue; }

for(int i=0;i

current_node=R[front_node]; }

index=front_node; values=a[front_node]; return 0; }

int main(void) {

int a[MAXLINE],R[MAXLINE],suffix,index,values,start,i,K; suffix=index=values=start=0; K=2;

for(i=0;i

R[i-1]=0;

find_n(a,R,K,index,values,2);

printf(\return 0;

}

144、指出下列程序有什么错误: void test2() {

char string[10], str1[10]; int i;

for(i=0; i<10; i++) {

str1[i] = 'a'; }

strcpy( string, str1 ); }

解答:如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpy(string, str1)调用使得从str1内存起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10分; str1不能在数组内结束:因为str1的存储为:{a,a,a,a,a,a,a,a,a,a},没有'\\0'(字符串结束符),所以不能结束。

strcpy( char *s1,char *s2)他的工作原理是,扫描s2指向的内存,逐个字符赋到s1所指向的内存,直到碰到'\\0',因为str1结尾没有'\\0',所以具有不确定性,不知道他后面还会

赋什么东东。

正确应如下 void test2() {

char string[10], str1[10]; int i;

for(i=0; i<9; i++)

{

str1[i] = 'a'+i; //把abcdefghi赋值给字符数组 }

str[i]='\\0';//加上结束符 strcpy( string, str1 ); }

145、实现strcmp

int StrCmp(const char *str1, const char *str2) {

assert(str1 && srt2);

while(*str1 && *str1++ = = *str2++); return *str1-*str2; }

146.符串A和B,输出A和B中的最大公共子串。 比如A=\则输出\*/

//Author: azhen #i nclude #i nclude

#i nclude

char *commanstring(char shortstring[], char longstring[]) {

int i, j;

char *substring=malloc(256);

if(strstr(longstring, shortstring)!=NULL) //如果??,那么返回shortstring

return shortstring;

for(i=strlen(shortstring)-1;i>0; i--) //否则,开始循环计算 {

for(j=0; j<=strlen(shortstring)-i; j++){ memcpy(substring, &shortstring[j], i); substring[i]='\\0';

if(strstr(longstring, substring)!=NULL) return substring; } }

return NULL; }

main() {

char *str1=malloc(256); char *str2=malloc(256); char *comman=NULL; gets(str1); gets(str2);

if(strlen(str1)>strlen(str2)) //将短的字符串放前面 comman=commanstring(str2, str1); else

comman=commanstring(str1, str2);

printf(\}

147、写一个函数比较两个字符串str1和str2的大小,若相等返回0,若str1大于 str2返回1,若str1小于str2返回-1

int strcmp(const char *src, const char *dst) {

int ret = 0 ;

while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst) {

++src;

++dst;

}

if ( ret < 0 )

ret = -1 ; else if ( ret > 0 ) ret = 1 ; return( ret ); }

148、判断一个字符串是不是回文 int IsReverseStr(char *aStr) {

int i,j;

int found=1; if(aStr==NULL) return -1;

j=strlen(aStr); for(i=0;i

if(*(aStr+i)!=*(aStr+j-i-1))

{

found=0; break; }

return found;

149 #include main()

{

int c[3][3]={1,2,3,4,5,6,7,8,9}; for(int i=0;i<3;i++) for(int j=0;j<3;j++) printf(\

printf(\printf(\printf(\printf(\

printf(\printf(\

if(int(c)==int(*c)) printf(\

}

为什么c,*c的值相等,(c+1),(*c+1)的值不等 c,*c,**c,代表什么意思? 参考答案:

c是第一个元素的地址,*c是第一行元素的首地址,其实第一行元素的地址就是第一个元素的地址,这容易理解。**c是提领第一个元素。 为什么c,*c的值相等?

int c因为直接用c表示数组c[0][0] printf(\语句已将指针移到数组头。 int(*c)表示c0的值为1,所以相等。 数组c的存放空间示意如下:(机器中是行优先存放的) c[0][0] c[0][1] c[0][2] c[1][0] c[1][1] c[1][2] c[2][0] c[2][1] c[2][2] c是一个二维数组名,实际上它是一个指针常量,不能进行自加、自减运算,即:c++、c--、++c、--c 都是不允许的;

c: 数组名;是一个二维指针,它的值就是数组的首地址,也即第一行元素的首地址(等于 *c),也 等于第一行第一个元素的地址( & c[0][0]);可以说成是二维数组的行指针。 *c: 第一行元素的首地址;是一个一维指针,可以说成是二维数组的列指针。 **c:二维数组中的第一个元素的值;即:c[0][0] 所以: c 和 *c的值是相等的,但他们两者不能相互赋值,(类型不同); (c + 1) :c是行指针,(c + 1)是在c的基础上加上二维数组一行的地址长度,即从&c[0][0] 变到了&c[1][0]; (*c + 1):*c是列指针,(*c + 1)是在*c的基础上加上二数组一个元素的所占的长度,即从 &c[0][0]变到了&c[0][1] 从而(c + 1)和(*c + 1)的值就不相等了

150、定义 int **a[3][4], 则变量占有的内存空间为:__32___ 参考答案: int **p; /*16位下sizeof(p)=2, 32位下sizeof(p)=4*/ 总共 3*4*sizeof(p)


c++绝版面试题--9.7(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016中考王中考命题研究(河北)语文:专题二十六2016年说明文分

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: