c++基础例题100道.docx

上传人:b****5 文档编号:7606280 上传时间:2023-01-25 格式:DOCX 页数:83 大小:87.19KB
下载 相关 举报
c++基础例题100道.docx_第1页
第1页 / 共83页
c++基础例题100道.docx_第2页
第2页 / 共83页
c++基础例题100道.docx_第3页
第3页 / 共83页
c++基础例题100道.docx_第4页
第4页 / 共83页
c++基础例题100道.docx_第5页
第5页 / 共83页
点击查看更多>>
下载资源
资源描述

c++基础例题100道.docx

《c++基础例题100道.docx》由会员分享,可在线阅读,更多相关《c++基础例题100道.docx(83页珍藏版)》请在冰豆网上搜索。

c++基础例题100道.docx

c++基础例题100道

c++基础例题100道

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

例如:

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

*/

#include

voidmain()

{

doublea,sn=0.0,sum=0.0;

intn,i;

cout<<"pleaseinputanumber";

cin>>a;

cout<<"pleaseinputnnumber";

cin>>n;

sn=a;

sum=a;

for(i=2;i<=n;i++)

{

sum=sum*10+a;

sn+=sum;

}

cout<<"Sn="<

}

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

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

第10次反弹多高?

*/

#include

voidmain()

{

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

inti;

for(i=1;i<=10;i++)

{

sum+=h2;

h1=h1/2.0;

h2=h1*2;

}

cout<<"sum="<

}

/*5、猴子吃桃问题。

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

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

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

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

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

*/

#include

voidmain()

{

intnumber,i;

number=1;

for(i=10;i>1;i--)

number=(number+1)*2;

cout<<"number="<

}

第4章函数

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

*/

#include

voidmain()

{

inti,j,temp,a[10];

cout<<"pleaseinputtennumbers:

\n";

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

cin>>a[i];

for(i=0;i<10;i++)//每循环一次确定数组中一个数的位置

for(j=i+1;j<10;j++)//每次循环对比一个数的大小

{

if(a[i]>a[j])

{

temp=a[j];

a[j]=a[i];

a[i]=temp;

}

}

cout<<"resortresult=";

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

cout<

}

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

1.(n=0)

Pn(x)=x(n=1)

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

#include

doublefun(double,double);

voidmain()

{

doublen,x,sum;

cout<<"inputnandx"<

cin>>n>>x;

sum=fun(n,x);

cout<<"P"<

}

doublefun(doublen1,doublex1)

{

if(n1==0)

return1;

elseif(n1==1)

returnx1;

elseif(n1>1)

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

}

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

*/

#include

voidjudge(chara[]);

voidmain()

{

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'&&a[i]<='z')||(a[i]>='A'&&a[i]<='z'))letter++;//统计字母个数

elseif(a[i]>='0'&&a[i]<='9')number++;//统计数字个数

elseothers++;//统计其他数个数

i++;

}

cout<<"letter="<

}

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

*/

#include

intlead(int);

voidmain()

{

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

cout<<"inputyear、month、date:

";

cin>>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天

for(i=0;i

sum+=a[i];

sum+=date;//加上当前月天数

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

}

intlead(inty)//判断闰年

{

if((y%4==0&&y%100!

=0)||(y%400==0))return1;//是闰年

elsereturn0;//不是闰年

}

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

*/

#include

intcdivisor(int,int);

intcmultiple(int,int,int);

voidmain()

{

intx,y,d,m;

cout<<"inputtwonumber:

";

cin>>x>>y;

d=cdivisor(x,y);

m=cmultiple(x,y,d);

cout<<"commondivisoris"<

}

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

{

intr,temp;

if(x1

{

temp=x1;

x1=y1;

y1=temp;

}

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

{

r=x1%y1;

x1=y1;

y1=r;

}

returny1;

}

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

{

returnx2*y2/d1;//两数相乘结果除以它们的最大公约数为最小公倍数

}

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

*/

#include

#include

voidmain()

{

constintsize=100;

chara[size],b[size];

cout<<"inputtwostring:

"<

cin.getline(a,size);

cin.getline(b,size);

strcat(a,b);

cout<<"a="<

}

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

*/

#include

#include

voidscpy(char*,char*);

voidmain()

{

constintsize=100;

chara[size]="Helloworld";

charb[size]="Net";

cout<<"a="<

scpy(a,b);

cout<<"a="<

}

voidscpy(char*p,char*q)

{

while(*q!

='\0')

{

if(*q=='a'||*q=='A'||*q=='e'||*q=='E'||*q=='i'||*q=='I'||*q=='o'||*q=='O'||*q=='u'||*q=='U')

*p++=*q;

q++;

}

}

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

如输入1990,应输出"1990"。

*/

#include

#include

voidouts(chara[]);

voidmain()

{

constintsize=10;

chara[size];

cin.getline(a,size);

outs(a);

}

voidouts(chara[10])

{

inti;

if(strlen(a)<=4)

{

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

cout<

}

elsecout<<"inputerror."<

}

第5章数组

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

a、b、c、d。

要求改为:

d、c、b、a。

*/

#include

voidback(char*);

voidmain()

{

chara[50]="abcdefg";

cout<<"a="<

back(a);

}

#include

voidback(char*p)

{

inti=0;

while(*p!

='\0')

{

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

i++;//统计字符个数

}

cout<<"a=";

for(;i>0;i--)//逆序输出

{

p--;

cout<<*p;

}

cout<

}

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

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

)*/

#include

voidtri(inta[][15]);

voidmain()

{

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

tri(a);

cout<<"a=";

for(i=0;i<15;i++)//遍历整个数组

{

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

{

cout<

if(a[i][j]>=1&&a[i][j]<=9)//当输出个位数之后输出4个空格保持整齐

cout<<"";

elseif(a[i][j]>=10&&a[i][j]<=99)//当输出十位数之后输出3个空格保持整齐

cout<<"";

elseif(a[i][j]>=100&&a[i][j]<=999)//当输出百位数之后输出2个空格保持整齐

cout<<"";

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

}

cout<

}

}

voidtri(inta[15][15])

{

inti,j;

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

for(j=0;j<=i;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函数。

*/

#include

#include

voidscat(char*,char*);

voidmain()

{

constintsize=100;

chara[size]="Hello";

charb[size]="Bye";

cout<<"a="<

scat(a,b);

cout<<"a="<

}

voidscat(char*p,char*q)

{

while(*p!

='\0')//确定数组a的插入位置

{

p++;

}

while(*q!

='\0')

{

*p=*q;

p++;

q++;

}

}

/*4、打印"魔方阵"。

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

例如:

三阶魔方阵:

816

357

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

*/

//方法一:

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

#include

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

voidmain()

{

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

cout<<"inputanoddnumber:

"<

cin>>n;

k=n/2;//确定第一个数列数

square(a,k,n);

for(i=0;i

{

for(j=0;j

cout<<"\t"<

cout<

}

}

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

{

inti,j;

for(i=1,j=0;i<=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)//当数组原位置有数时候,确定数组位置

{

j+=2;k-=1;

}

a[j][k]=i;

}

}

//方法二:

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

#include

#include

#include

usingnamespacestd;

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

{

cout<

"<

inti,j;

for(i=0;i

{

for(j=0;j

{

cout<

}

cout<

}

cout<

}

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

{

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

boolYesOrNo=true;

for(j=0;j

{

sum+=p[0][j];

}

for(i=1;i

{

NowSum=0;

for(j=0;j

{

NowSum+=p[i][j];

}

if(NowSum!

=sum)

{

YesOrNo=false;

gotoEND;

}

}

for(i=0;i

{

NowSum=0;

for(j=0;j

{

NowSum+=p[j][i];

}

if(NowSum!

=sum)

{

YesOrNo=false;

gotoEND;

}

}

NowSum=0;

for(i=0,j=0;i

{

NowSum+=p[i][j];

}

if(NowSum!

=sum)

{

YesOrNo=false;

gotoEND;

}

NowSum=0;

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

{

NowSum+=p[i][j];

}

if(NowSum!

=sum)

{

YesOrNo=false;

gotoEND;

}

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]

{

if(++b_val[c]

//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

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

break;

if(k==c)//如果没有重复元素,就可以确定当前元素值,并继续排列下一个下标的数组元素

{

if(c+1

//8

{

++c;//123...78

b_val[c]=-1;

//continue;

}

else//生成了一组排列方式

{

k=-1;

for(i=0;i

{

for(j=0;j

{

p[i][j]=a[b_val[++k]];//a[0]-a[8]

}

}

//判断是否为n阶魔方阵

if(Judge(p,n))

{

printA(p,n);

}

}

}

}

else

{

c--;

}

}

delete[]b_val;

}

voidevaluate(int**p,intn)//给n阶方阵的元素赋值

{

inti;

int*AllNum=newint[3*3];

for(i=1;i<=n*n;i++)

{

AllNum[i-1]=i;

}

combination(p,n,AllNum);

delete[]AllNum;

}

voidmain()

{

inti,n,**a;

strings;

do

{

//输入n阶方阵的阶数n

cout<<"请输入n阶方阵的阶数n(退出程序按e或E键):

";

cin>>s;

if(!

strcmp(s.c_str(),"e")||!

strcmp(s.c_str(),"E"))

{

break;

}

elseif(s.find_first_not_of("0123456789")!

=string:

:

npos)

{

cout<<"请输入有效的数字,不能含有非数字的字符。

"<

continue;

}

else

{

n=atoi(s.c_str());

if(n<1)

{

cout<<"请输入有效的数字,必须>=1。

"<

continue;

}

//分配内存

a=newint*[n];

for(i=0;i

{

a[i]=newint[n];

}

cout<<"正在运算,请等待。

"<

//给n阶方阵的元素赋值

evaluate(a,n);

cout<<"运算结束!

"<

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

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

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

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