C++算法大全Word文件下载.docx

上传人:b****5 文档编号:16283056 上传时间:2022-11-22 格式:DOCX 页数:83 大小:37.48KB
下载 相关 举报
C++算法大全Word文件下载.docx_第1页
第1页 / 共83页
C++算法大全Word文件下载.docx_第2页
第2页 / 共83页
C++算法大全Word文件下载.docx_第3页
第3页 / 共83页
C++算法大全Word文件下载.docx_第4页
第4页 / 共83页
C++算法大全Word文件下载.docx_第5页
第5页 / 共83页
点击查看更多>>
下载资源
资源描述

C++算法大全Word文件下载.docx

《C++算法大全Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++算法大全Word文件下载.docx(83页珍藏版)》请在冰豆网上搜索。

C++算法大全Word文件下载.docx

->

;

for(k=0;

k<

t;

k++)

a[k];

if(k<

t-1)cout<

"

k=0;

/*3、求Sn=a+aa+aaa+…+aa…a之值,其中a是一个数字。

例如:

2+22+222+…+22222(此时n=5),n由键盘输入。

*/

doublea,sn=0.0,sum=0.0;

intn,i;

pleaseinputanumber"

cin>

>

a;

cout<

pleaseinputnnumber"

n;

sn=a;

sum=a;

for(i=2;

=n;

{

sum=sum*10+a;

sn+=sum;

}

Sn="

sn<

/*4、一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。

求它在第10次落地时,共经过了多少米?

第10次反弹多高?

doubleh1=100,h2=100,sum=0.0;

inti;

=10;

sum+=h2;

h1=h1/2.0;

h2=h1*2;

sum="

sum<

"

h1="

h1<

/*5、猴子吃桃问题。

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩一个桃子了。

求第一天共摘了多少桃子。

intnumber,i;

number=1;

for(i=10;

i>

1;

i--)

number=(number+1)*2;

number="

number<

8.++程序中使用流格式输入、输出,我们可以怎么做?

答:

在程序的开头包含头文件iostream.h

cin输入,cout输出。

inta;

请输入a的值:

cin>

a的值为:

a<

第4章函数

/*1、写一函数用“气泡法”对输入的10个字符按由小到大的顺序排列。

inti,j,temp,a[10];

pleaseinputtennumbers:

\n"

for(i=0;

10;

a[i];

i++)//每循环一次确定数组中一个数的位置

for(j=i+1;

j++)//每次循环对比一个数的大小

if(a[i]>

a[j])

temp=a[j];

a[j]=a[i];

a[i]=temp;

resortresult="

a[i]<

/*2、用递归方法求n阶勒让得多项式的值,递归公式为

1(n=0)

Pn(x)= 

x(n=1)

((2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x))/n(n>

1)*/

doublefun(double,double);

doublen,x,sum;

inputnandx"

n>

x;

sum=fun(n,x);

P"

n<

("

x<

)"

="

doublefun(doublen1,doublex1)

if(n1==0)

return1;

elseif(n1==1)

return 

x1;

elseif(n1>

1)

return((2*n1-1)*x1*fun(n1-1,x1)-(n1-1)*fun(n1-2,x1))/n1;

/*3、编写一函数,由实参传来一字符串,统计此字符串中字母、数字、空格、和其它字符的个数,并在主函数中输入字符串以及输出上述结果。

voidjudge(chara[]);

constintsize=100;

chara[size];

cin.getline(a,size);

judge(a);

voidjudge(chara[100])//判断字符类型

intletter=0,number=0,others=0,i=0;

while(a[i]!

='

\0'

if((a[i]>

a'

&

z'

)||(a[i]>

A'

))letter++;

//统计字母个数

elseif(a[i]>

0'

&

a[i]<

9'

)number++;

//统计数字个数

elseothers++;

//统计其他数个数

i++;

letter="

letter<

number="

others="

others<

/*4、给出年、月、日,计算该日是该年的第几天。

intlead(int);

intly,year,month,date,i,sum=0;

inputyear、month、date:

year>

month>

date;

inta[12]={31,0,31,30,31,30,31,31,30,31,30,31};

ly=lead(year);

if(ly==1)

a[1]=29;

//366天

elsea[1]=28;

//365天

month-1;

i++)//当前月之前所有月天数累加和

sum+=a[i];

sum+=date;

//加上当前月天数

你输入的日期是当年的第"

天"

intlead(inty)//判断闰年

if((y%4==0&

y%100!

=0)||(y%400==0))return1;

//是闰年

elsereturn0;

//不是闰年

/*5、写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。

intcdivisor(int,int);

intcmultiple(int,int,int);

intx,y,d,m;

inputtwonumber:

x>

y;

d=cdivisor(x,y);

m=cmultiple(x,y,d);

commondivisoris"

d<

endl<

commonmultipleis"

m<

intcdivisor(intx1,inty1)//最大公约数

intr,temp;

if(x1<

y1)

temp=x1;

x1=y1;

y1=temp;

while(x1%y1)//当较大数除以较小数余数等于0时,较小数为最大公约数

r=x1%y1;

y1=r;

returny1;

intcmultiple(intx2,inty2,intd1)//最小公倍数

returnx2*y2/d1;

//两数相乘结果除以它们的最大公约数为最小公倍数

/*6、写一函数,将两个字符串连接。

string.h>

chara[size],b[size];

inputtwostring:

cin.getline(b,size);

strcat(a,b);

a="

/*7、写一函数,将一个字符串的元音字母复制到另一个字符串,然后输出。

voidscpy(char*,char*);

chara[size]="

Helloworld"

charb[size]="

Net"

a="

b="

b<

scpy(a,b);

voidscpy(char*p,char*q)

while(*q!

if(*q=='

||*q=='

e'

E'

i'

I'

o'

O'

u'

U'

*p++=*q;

q++;

/*8、写一函数,输入一个四位数字,要求输出这4个数字字符,但每两个数字间空一空格。

如输入1990,应输出“1990”。

voidouts(chara[]);

constintsize=10;

outs(a);

voidouts(chara[10])

if(strlen(a)<

=4)

4;

elsecout<

inputerror."

第5章 

数组

/*1、将一个数组中的值按逆序重新存放,例如,原来顺序为:

a、b、c、d。

要求改为:

d、c、b、a。

voidback(char*);

chara[50]="

abcdefg"

back(a);

voidback(char*p)

inti=0;

while(*p!

p++;

//把指针定位到字符串末尾

//统计字符个数

for(;

0;

i--)//逆序输出

p--;

*p;

/*2、打印出杨辉三角形(要求打印出前15行)。

(杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。

)*/

voidtri(inta[][15]);

inti,j,a[15][15];

tri(a);

15;

i++)//遍历整个数组

for(j=0;

=i;

a[i][j];

if(a[i][j]>

=1&

a[i][j]<

=9)//当输出个位数之后输出4个空格保持整齐

elseif(a[i][j]>

=10&

=99)//当输出十位数之后输出3个空格保持整齐

elseif(a[i][j]>

=100&

=999)//当输出百位数之后输出2个空格保持整齐

elsecout<

//当输出百位数之后输出1个空格保持整齐

//每行输出结束后换行

voidtri(inta[15][15])

inti,j;

if(j==0||j==i)//三角形第一列和对角线被赋值为1

a[i][j]=1;

elsea[i][j]=a[i-1][j-1]+a[i-1][j];

//算出其余的数组元素

/*3、编一程序,将两个字符串连接起来,不要用strcat函数。

voidscat(char*,char*);

Hello"

Bye"

b="

scat(a,b);

afterlinkaandb"

voidscat(char*p,char*q)

)//确定数组a的插入位置

*p=*q;

/*4、打印“魔方阵”。

所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。

三阶魔方阵:

816

357

492

要求打印由1到n2的自然数构成的所有魔方阵。

//方法一:

输出N介魔方阵,但每介只输出一种。

voidsquare(inta[][10],intk,intn);

intn,i,j,k,a[10][10]={0};

inputanoddnumber:

k=n/2;

//确定第一个数列数

square(a,k,n);

\t"

voidsquare(inta[][10],intk,intn)

for(i=1,j=0;

=n*n;

i++,j--,k++)//n为阶数,从1开始给数组赋值

if(j<

0&

k>

=n)//当数组行列都越出范围时候,确定数组正确位置

j+=2;

k-=1;

elseif(j<

0)//当数组行越出范围时候,确定数组正确位置

j+=n;

elseif(k>

=n)//当数组列越出范围时候,确定数组正确位置

k-=n;

elseif(a[j][k]!

=0)//当数组原位置有数时候,确定数组位置

a[j][k]=i;

//方法二:

输出N介魔方阵所有魔方阵。

#include<

string>

iomanip>

iostream>

usingnamespacestd;

voidprintA(int**p,intn)//输出这个n阶魔方阵

下面是一个"

阶魔方阵:

for(i=0;

i<

n;

for(j=0;

j<

setw(4)<

p[i][j];

boolJudge(int**p,intn)//判断是否为n阶魔方阵

inti,j,sum=0,NowSum=0;

boolYesOrNo=true;

j++)//第一行总和

sum+=p[0][j];

for(i=1;

i++)//判断每行总和是否相等

NowSum=0;

NowSum+=p[i][j];

if(NowSum!

=sum)

YesOrNo=false;

gotoEND;

i++)//每列是否相等

NowSum+=p[j][i];

for(i=0,j=0;

n,j<

i++,j++)//主对角线是否相等

for(i=n-1,j=0;

i>

=0,j<

i--,j++)//次对角线是否相等

END:

returnYesOrNo;

voidcombination(int**p,intn,int*a)//求m=n*n个数(1,2,3.....m)的全排列

intm=n*n;

staticintNum=0;

int*b_val=newint[m];

intc=0,k,i,j;

b_val[c]=-1;

//一维数组首地址的值赋-1c[0]-1

while(b_val[0]<

m)//-1

if(++b_val[c]<

m)//分别从0开始累加每个元素值,并限制不超出最大阶数

 

//b[0]0[1]0[1]1[2]0[2]1[2]2...[6]6...[7]0...[7]7[8]0...[8]8判断魔方[8]9012345678

// 

[7]8[8]0...[8]7判断魔方[8]8[8]9012345687

[6]7...[7]0...[7]6 

[8]8012345768

// 

012345786

012345867...

876543210

for(k=0;

k<

c;

k++)//是否与前面数字重复,如有重复元素跳出,否则使K下标等于C下标 

if(b_val[k]==b_val[c]) 

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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