面试必备经典CC++面试算法实例文档格式.docx

上传人:b****5 文档编号:21027091 上传时间:2023-01-27 格式:DOCX 页数:26 大小:27.12KB
下载 相关 举报
面试必备经典CC++面试算法实例文档格式.docx_第1页
第1页 / 共26页
面试必备经典CC++面试算法实例文档格式.docx_第2页
第2页 / 共26页
面试必备经典CC++面试算法实例文档格式.docx_第3页
第3页 / 共26页
面试必备经典CC++面试算法实例文档格式.docx_第4页
第4页 / 共26页
面试必备经典CC++面试算法实例文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

面试必备经典CC++面试算法实例文档格式.docx

《面试必备经典CC++面试算法实例文档格式.docx》由会员分享,可在线阅读,更多相关《面试必备经典CC++面试算法实例文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

面试必备经典CC++面试算法实例文档格式.docx

,a[i]);

return0;

}

Example3:

将一个二维数组行和列元素互换,存到另一个二维数组里。

//Exchange.cpp:

inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2];

arraya:

\n"

for(inti=0;

2;

{

for(intj=0;

3;

j++)

%5d"

a[i][j]);

b[j][i]=a[i][j];

}

arrayb:

b[i][j]);

Example4:

求一个3*4的矩阵的最大值,并输出其所在的行和列

inti,j,row=0,colum=0,max;

inta[3][4]={{10,5,36,2},{-18,6,28,-36},{2,15,-10,-89}};

max=a[0][0];

4;

if(a[i][j]>

max)

max=a[i][j];

row=i;

colum=j;

max=%d,row=%d,cloum=%d"

max,row,colum);

Example5:

输出一个字符串

chara[15]={'

h'

'

o'

w'

'

a'

r'

e'

y'

u'

};

11;

%c"

注意单词之间的空格赋值

Example6:

利用一个scanf函数输入多个字符串,以空格分开

charstr1[5],str2[5],str3[5],str4[13];

inputthreestring:

scanf("

%s%s%s"

str1,str2,str3);

%5s%5s%5s\n"

inputonestring:

%s"

str4);

%s\n"

注:

把以n个用空格分开字符串输入给一个字符串数组,则其实数组只接收到第一个空格之前的内容,违背愿望。

Example7:

输入一行字符串,统计其中有多少个单词,单词之间用空格分开

charstr[100];

intnum=1;

intword;

inputstrings:

gets(str);

str[i]!

='

\0'

;

/*if(str[i]=='

)num++;

若只用着一个判断,则如果输入字符串时不小心敲进了很多空格,则结果不对*/

if(str[i]=='

)word=0;

elseif(word==0)

word=1;

num++;

Thereare%dwordsintheline.\n"

num);

Example8:

找出3个字符串中的最大者

#include<

string.h>

charstring[20];

charstr[3][20];

inputthreestrings:

str[i]);

if(strcmp(str[0],str[1])>

0)strcpy(string,str[0]);

elsestrcpy(string,str[1]);

if(strcmp(str[2],string)>

0)strcpy(string,str[2]);

\nthelargeststringis:

\n%s\n"

string);

Example9:

选择法排序

voidsort(inta[],intn)

intmin,t;

n;

min=i;

for(intj=i+1;

if(a[min]>

a[j])

min=j;

if(min!

=i)

t=a[min];

a[min]=a[i];

a[i]=t;

inta[10]={3,9,1,8,2,10,7,5,4,6};

sort(a,10);

%4d"

Example10:

求一个3*3的整形矩阵对角线元素之和

intcatercornerSum(inta[3][3])

{

intsum=0;

sum+=a[i][i];

sum+=a[i][2-i];

sum-=a[1][1];

returnsum;

inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};

intsum;

sum=catercornerSum(a);

%d\n"

sum);

Example11:

找出一个数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小

iostream>

usingnamespacestd;

inta[3][4]=

{{124,25,100,31},{20,96,216,95},{14,25,54,1}};

intb[3];

intc[4];

charx=NULL;

chary=NULL;

/*cout<

<

"

pleaseinput12integernumbers:

"

<

endl;

i<

cin>

>

a[i][j];

}*/

intt=0;

i++)

t=a[i][0];

b[i]=0;

j<

j++)

t)

t=a[i][j];

b[i]=j;

for(intj=0;

t=a[0][j];

c[j]=0;

for(inti=0;

if(a[i][j]<

c[j]=i;

if((i==c[j])&

&

(j==b[i]))

x=i+1+48;

y=j+1+48;

if((x==NULL)&

(y==NULL))

cout<

该二位数组没有鞍点"

else

cout<

鞍点位置:

("

x<

"

y<

)"

endl;

鞍点位置数字为:

t<

说明:

分别记下每一行最大值及每一列最小值的位置,该两位置重复的点即是鞍点

字符串

Example1:

编写字符串拷贝函数strcpy

//strcpy.cpp:

//

 

char*strcpy(char*strDest,constchar*strSrc)

char*address=strDest;

while((*strDest++=*strSrc++)!

='

NULL;

returnaddress;

charstr1[]="

asfasdfasfa"

intlength=0;

char*str2=newchar[20];

strcpy(str2,str1);

str2:

%s\n"

str2);

copysuccessfully!

delete[]str2;

字符串连接函数strcat

//strcat.cpp:

char*strcat(char*str1,char*str2)

inti=0;

intj=0;

while(str1[i])

i++;

while(str2[j])

j++;

char*str3=newchar[i+j+1];

for(intm=0;

m<

i;

m++)

str3[m]=str1[m];

j;

str3[m+i]=str2[m];

str3[i+j]='

returnstr3;

char*str1="

ggg"

char*str2="

bbbb"

char*str3=newchar[20];

str3=strcat(str1,str2);

thestringstr3is:

str3);

delete[]str3;

Example3:

删除已经在str2中出现过的str1中的字符

charstr1[]="

ahadfggklgfd"

char*str2="

dff"

char*str3=newchar[10];

intlength1=int(strlen(str1));

intlength2=int(strlen(str2));

intm=0;

length1;

length2;

if(str1[i]==str2[j])//str1中的该字符在str2中出现

str1[i]=str2[0];

//将所有在str2中出现过的str1中的字符全部改为str2的第一字符值

j=length2;

//跳出内层for循环

i++)//将str1中所有不等于str2[0]的字符挨个赋给str3

if(str1[i]!

=str2[0])

str3[m]=str1[i];

m+=1;

str3[m]='

//将str3最后加上'

str3即为删除后的结果

delete[]str3;

Example4:

字符串倒置,“Justdoit”变为“tiodtsuJ”

voidinversion(char*p1,char*p2)

inti;

intlength=int(strlen(p1));

length;

p2[i]=p1[length-1-i];

p2[i]='

char*p1="

Justdoit"

char*p2=newchar[20];

inversion(p1,p2);

p2);

Example5:

将字符串中的单词倒置,“Justdoit”变为“itdoJust”

//定义一个字符串倒置函数,其中参数包括字符串及需要到置部分的起点和终点

voidreverse(charstr[],intfrom,intto)

intlength=to-from;

chars;

length/2+1;

i++)//通过循环将该部分字符串倒置

s=str[from+i];

str[from+i]=str[to-i];

str[to-i]=s;

Makeprogresseverydaytolearnabcabcdabcde"

while(str1[length])

length++;

reverse(str1,0,length-1);

//先将str1整个颠倒

//可理解为慢指针

//可理解为快指针

while(str1[j])//扫描倒置过的str1

if(j<

=length)//当还没扫描完str1时

while(str1[j]!

str1[j])//碰到空格及为一个单词的倒置,再给颠倒回来就可

j++;

reverse(str1,i,j-1);

//将快指针指向空格后的第一个字符

i=j;

//将满指针指向下一个单词,以便接下来将单词颠倒回来

else//说明已经扫描完

j--;

//将快指针指向字符串后的'

,跳出while循环

str1);

统计字符串每个字符出现的次数

#include<

string>

charstr1[50]="

ddfd;

ljk90()asdHSMAR___!

@#$%^&

*()"

char*p=newchar[50];

inttimes;

inta[50];

//用于判断字符是否重复出现

intlength1=0;

while(str1[i]!

length1++;

p[m]=str1[0];

intlength2=1;

//length2为p指向字符串的长度,初始为

//去掉字符串str1中重复出现过的字符(保留一个即可),把剩余的字符保存到指针p指向的动态存储区

for(inti=1;

t=0;

for(intk=0;

k<

k++)

if(str1[i]==p[k])t++;

//说明该字符重复,t加

if(t==0)//t=0说明该字符没出现过,存入动态存储区

m++;

p[m]=str1[i];

length2++;

p[m+1]='

//通过与p指向的字符串比较,即可得出每一个字符出现过的次数

a[i]=0;

if(p[i]==str1[j])a[i]++;

字符串%c出现次数为:

p[i],a[i]);

将整型数据转换成字符串类型

要将整型数据转换成字符串,首先将整型数据各个数位进行拆分,然后存储到一个数组当中,结尾处补‘\0’。

例如要将12345转换成字符串,主要思路是将12345先于10取余,结果为5,将5转成字符存储到数组当中,然后将1234除以10再与10取余得到十位上的数4,将4存储到数组中,以此类推。

得到数组54321,再将数组逆序返回。

循环的条件控制是判断整数与10相除的结果,如果是0的话结束循环。

代码:

//E4.cpp:

Definestheentrypointfortheconsoleapplication.

//将int转换为string

char*ToString(intnumber)

char*str=newchar[6];

inti=0;

while(number/10!

=0)

str[i++]=number%10+48;

//字符'

0'

比整数大

number=number/10;

//去掉个位数

str[i++]=number+48;

//将最后一个整数转换为字符

str[i]='

(i-1)/2;

j++)//颠倒字符串“”

inta=str[j];

str[j]=str[i-1-j];

str[i-1-j]=a;

returnstr;

inta=12345;

char*str=ToString(a);

str);

注意:

当循环结束时整数的最高位还未转成字符,所以循环结束后要将最高位转成字符并且要在结尾加上‘\0’表示字符串结束。

将字符串转换成整型数据

//ToInt.cpp:

intToInt(char*p)

intl=0;

inta[5];

while(p[l])

a[l++]=p[l]-

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

当前位置:首页 > 农林牧渔 > 林学

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

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