编程实例.docx

上传人:b****6 文档编号:6164023 上传时间:2023-01-04 格式:DOCX 页数:43 大小:24.68KB
下载 相关 举报
编程实例.docx_第1页
第1页 / 共43页
编程实例.docx_第2页
第2页 / 共43页
编程实例.docx_第3页
第3页 / 共43页
编程实例.docx_第4页
第4页 / 共43页
编程实例.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

编程实例.docx

《编程实例.docx》由会员分享,可在线阅读,更多相关《编程实例.docx(43页珍藏版)》请在冰豆网上搜索。

编程实例.docx

编程实例

例3.13

求Fibonacci数列前40个数。

这个数列有如下特点:

第1、2个数为1、1。

从第3个数开始,每个数是其前面两个数之和。

#include

#include

usingnamespacestd;

intmain()

{

longf1,f2;

inti;

f1=f2=1;

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

{

//设备输出字段宽度为12,每次输出两个数

cout<

//每输出完4个数后换行,使每行输出4个数

if(i%2==0)cout<

f1=f1+f2;//左边的f1代表第3个数,是第1、2个数之和

f2=f2+f1;//左边的f2代表第4个数,是第2、3个数之和

}

return0;

}

例3.14

100~200间的素数

#include

#include

#include

usingnamespacestd;

intmain()

{

intm,k,i,n=0;

boolprime;

for(m=101;m<=200;m=m+2)

{

prime=true;

k=int(sqrt(m));

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

if(m%i==0)

{

prime=false;

break;

}

if(prime)

{

cout<

n=n+1;

}

if(n%10==0)

cout<

}

cout<

}

例3.15

译密码

#include

usingnamespacestd;

intmain()

{charc;

while((c=getchar())!

='\n')

{

if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))

{

c=c+4;

if(c>'Z'&&c<='Z'+4||c>'z')

c=c-26;

}

cout<

}

cout<

return0;

}

习题:

16、统计个数

#include

usingnamespacestd;

intmain()

{charc;

intletters=0,space=0,digit=0,other=0;

cout<<"enteroneline:

:

"<

while((c=getchar())!

='\n')

{

if(c>='a'&&c<='z'||c>='A'&&c<='Z')

letters++;

elseif(c=='')

space++;

elseif(c>='0'&&c<='9')

digit++;

else

other++;

}

cout<<"letter:

"<

"<

"<

"<

return0;

}

17、求Sn=a+aa+aaa+……+aa…a(n个a)的值,n由键盘输入。

#include

usingnamespacestd;

intmain()

{

inta,n,i=1,sn=0,tn=0;

cout<<"a,n=:

";

cin>>a>>n;

while(i<=n)

{

tn=tn+a;//赋值后的tn为i个a组成数的值

sn=sn+tn;//赋值后的sn为多项式前i项之和

a=a*10;

++i;

}

cout<<"a+aa+aaa+...="<

return0;

}

18、.求1!

+2!

……+20!

#include

usingnamespacestd;

intmain()

{floats=0,t=1;

intn;

for(n=1;n<=20;n++)

{

t=t*n;//求n!

s=s+t;//将各项累加

}

cout<<"1!

+2!

+...+20!

="<

return0;

}

19、求“水仙花数”例153=13+33+53

#include

usingnamespacestd;

intmain()

{inti,j,k,n;

cout<<"narcissusnumbersare:

"<

for(n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

cout<

}

cout<

return0;

}

#include

usingnamespacestd;

intmain()

{intm,s,i;

for(m=2;m<1000;m++)

{s=0;

for(i=1;i

if((m%i)==0)s=s+i;

if(s==m)

{cout<

cout<<"itsfactorsare:

";

for(i=1;i

if(m%i==0)cout<

cout<

}

}

return0;

}

21、2/1,3/2,5/3,8/5,13/8,21/13,…前20项之和

#include

usingnamespacestd;

intmain()

{inti,t,n=20;

doublea=2,b=1,s=0;

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

{s=s+a/b;

t=a;

a=a+b;//将前一项分子与分母之和作为下一项的分子

b=t;//将前一项的分子作为下一项的分母

}

cout<<"sum="<

return0;

}

24、输出图形

#include

usingnamespacestd;

intmain()

{inti,k;

for(i=0;i<=3;i++)//输出上面4行*号

{for(k=0;k<=2*i;k++)

cout<<"*";//输出*号

cout<

}

for(i=0;i<=2;i++)//输出下面3行*号

{for(k=0;k<=4-2*i;k++)

cout<<"*";//输出*号

cout<

}

return0;

}

习题:

1、求最大公约数和最小公倍数,用主函数条用两个函数

#include

usingnamespacestd;

intmain()

{

inthcf(int,int);

intlcd(int,int,int);

intu,v,h,l;

cin>>u>>v;

h=hcf(u,v);

l=lcd(u,v,h);

return0;

}

inthcf(intu,intv)

{

intt,r;

if(v>u)

{t=u;u=v;v=t;}

while((r=u%v)!

=0)

{u=v;

v=r;}

return(v);

}

intlcd(intu,intv,inth)

{return(u*v/h);

}

3、判别素数的函数

#include

usingnamespacestd;

intmain()

{

intprime(int);/*函数原型声明*/

intn;

cout<<"inputaninteger:

";

cin>>n;

if(prime(n))

cout<

else

cout<

return0;

}

intprime(intn)

{

intflag=1,i;

for(i=2;i

if(n%i==0)

flag=0;

return(flag);

}

4、.求a!

+b!

+c!

的值,用一个函数fac(n)求n!

4

#include

usingnamespacestd;

intmain()

{intfac(int);

inta,b,c,sum=0;

cout<<"entera,b,c:

";

cin>>a>>b>>c;

sum=sum+fac(a)+fac(b)+fac(c);

cout<

+"<

+"<

="<

return0;

}

intfac(intn)

{

intf=1;

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

f=f*i;

returnf;

}

7、.验证哥德巴赫猜想:

一个不小于6的偶数可以表示为两个素数之和。

7

#include

#include

usingnamespacestd;

intmain()

{voidgodbaha(int);

intn;

cout<<"inputn:

";

cin>>n;

godbaha(n);

return0;

}

voidgodbaha(intn)

{intprime(int);

inta,b;

for(a=3;a<=n/2;a=a+2)

{if(prime(a))

{b=n-a;

if(prime(b))

cout<

}

}

intprime(intm)

{inti,k=sqrt(m);

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

if(m%i==0)break;

if(i>k)return1;

elsereturn0;

}

11、用递归方法求f(n)=12+22+……+n2

#include

usingnamespacestd;

intmain()

{

intf(int);

intn,s;

cout<<"inputthenumbern:

";

cin>>n;

s=f(n);

cout<<"Theresultis"<

return0;

}

intf(intn)

{

if(n==1)

return1;

else

return(n*n+f(n-1));

}

例5.2用数组Fibonacci数列

#include

#include

usingnamespacestd;

intmain()

{inti;

intf[20]={1,1};

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

f[i]=f[i-2]+f[i-1];

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

{if(i%5==0)cout<

cout<

}

cout<

return0;

}

例5.3用冒泡法对10个数排序

#include

usingnamespacestd;

intmain()

{

inta[10];

inti,j,t;

cout<<"input10numbers:

"<

for(i=0;i<10;i++)//输入a[0]~a[9]

cin>>a[i];

cout<

for(j=0;j<9;j++)//共进行9趟比较

for(i=0;i<9-j;i++)//在每趟中要进行(10-j)次两两比较

if(a[i]>a[i+1])//如果前面的数大于后面的数

{t=a[i];a[i]=a[i+1];a[i+1]=t;}//交换两个数的位置,使小数上浮

cout<<"thesortednumbers:

"<

for(i=0;i<10;i++)//输出10个数

cout<

cout<

return0;

}例5.4将二维数组行列元素互换,存到另一个数组中

a=123

56b=14

25

36

#include

usingnamespacestd;

intmain()

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

intb[3][2],i,j;

cout<<"arraya:

"<

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

{for(j=0;j<=2;j++)

{cout<

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

}

cout<

}

cout<<"arrayb:

“<

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

{for(j=0;j<=1;j++)

cout<

cout<

}

return0;

}

例5.5求3×4二维数组中最大元素值及其行列号

#include

usingnamespacestd;

intmain()

{

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

inta[3][4]={{5,12,23,56},{19,28,37,46},{-12,-34,6,8}};

max=a[0][0];//使max开始时取a[0][0]的值

for(i=0;i<=2;i++)//从第0行~第2行

for(j=0;j<=3;j++)//从第0列~第3列

if(a[i][j]>max)//如果某元素大于max

{max=a[i][j];//max将取该元素的值

row=i;//记下该元素的行号i

colum=j;//记下该元素的列号j

}

cout<<"max="<

return0;

}

例5.7用选择法对数组中10个整数按由小到大排序

#include

usingnamespacestd;

intmain()

{

voidselect_sort(intarray[],intn);//函数声明

inta[10],i;

cout<<"entertheoriginlarray:

"<

for(i=0;i<10;i++)//输入10个数

cin>>a[i];

cout<

select_sort(a,10);//函数调用,数组名作实参

cout<<"thesortedarray:

"<

for(i=0;i<10;i++)//输出10个已排好序的数

cout<

cout<

return0;

}

voidselect_sort(intarray[],intn)//形参array是数组名

{

inti,j,k,t;

for(i=0;i

{

k=i;

for(j=i+1;j

if(array[j]

t=array[k];array[k]=array[i];array[i]=t;

}

}

习题:

6、打印出杨辉三角(要求打印出10行)

#include

#include

usingnamespacestd;

intmain()

{constintn=11;

inti,j,a[n][n];

for(i=1;i

{a[i][i]=1;

a[i][1]=1;

}

for(i=3;i

for(j=2;j<=i-1;j++)

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

for(i=1;i

{for(j=1;j<=i;j++)

cout<

cout<

}

cout<

return0;

}

C语言部分

1.编程计算1,1+2,1+2+3,…,1+2+3+…+n各项值的积

答案:

#include

usingnamespacestd;

voidmain()

{

inti,n,mul=1,sum=0;

cout<<"Pleaseinputn:

";

cin>>n;

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

{

sum+=i;

mul*=sum;

}

cout<<"Themultipleis:

"<

}

2.编写重载函数Max可分别求取两个整数,三个字符,两个浮点型数,三个双精度数的最大值。

答案:

intmax(inti,intj)

{

if(i>j)

returni;

else

returnj;

}

charmax(charc1,charc2,charc3)

{

charch;

if(c1>c2)

ch=c1;

else

ch=c2;

if(c3>ch)

ch=c3;

returnch;

}

floatmax(floatx,floaty)

{

if(x>y)

returnx;

else

returny;

}

doublemax(doublex1,doublex2,doublex3)

{

doubley;

if(x1>x2)

y=x1;

else

y=x2;

if(x3>y)

y=x3;

returny;

}

3.请编写一个函数intfind(chars[],chart[]),该函数在字符串s中查找字符串t,如果找到,则返回字符串t在字符串s中的位置(整数值);

否则返回-1。

注意:

用数组方式及两重循环来实现该函数。

答案:

intfind(chars[],chart[])

{

inti,j,slen,tlen;

slen=strlen(s);

tlen=strlen(t);

i=0;j=0;

while(i

{

if(s[i]==t[j])

{

i++;

j++;

}

else

{

i=i-j+1;

j=0;

}

}

if(j>=tlen)

returni-tlen+1;

else

return-1;

}

4.写一程序,将字符串a的所有字符传送到字符串b中,要求每传送3个字符后放一个空格,例如,字符串a为”abcdefg”,则b为”abcdegg”。

答案:

#include

#include

#defineN40

voidfun(chars[],chart[])

{

inti=0,j=0;

while(s[i])

{

t[j]=s[i];

i++;

j++;

if((i)%3==0)

{

t[j]='';

j++;

}

}

t[j]='\0';

}

main()

{

chara[N],b[N];

printf("请输入原始字符串a:

");

gets(a);

fun(a,b);

printf("加入空格后的字符串b:

");

puts(b);

}

5.编程判断一个数是否为素数。

答案:

#include

#include

usingnamespacestd;

intprime(intm)

{

inti,flag=1;

for(i=2;i<=int(sqrt(m));i++)

if(m%i==0)

{flag=0;break;}

returnflag;

}

intmain(void)

{

intn;

cout<<"请输入一个整数:

";

cin>>n;

if(prime(n))

cout<

"<

else

cout<

"<

return0;

}

6.编程打印九九乘法表:

1×1=1

1×2=22×2=4

1×3=32×3=63×3=9

….

答案:

#include

usingnamespacestd;

voidmain()

{

inti,j;

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

{

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

printf("%1d*%1d=%2d",j,i,i*j);

printf("\n");

}

}

7.请编写一个程序,程序的功能是打印以下图案。

*

***

*****

*******

*****

***

*

答案:

#include

usingnamespacestd;

voidmain()

{

inti,j;

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

{

for(j=1;j<=4-i;j++)

cout<<'';

for(j=1;j<=2*i-1;j++)

cout<<'*';

cout<

}

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

{

for(j=1;j<=4-i;j++)

cout<<'';

for(j=1;j<=2*i-1;j++)

cout<<'*';

cout<

}

}

8.写出下面程序的运行结果:

#include

voidaverage(float*p,intn)

{

inti;

floatsum=0;

for(i=0;i

sum+=(*p);

cout<

}

voidmain()

{

floatscore[2][2]={{1,2},{3,4}};

average(*score,4);

}

答案:

2.5

C++部分

1.定义一个满足如下要求的Date类。

(1)用下面的格式输出日期:

日/月/年

(2)可运行在日期上加一天操作;

(3)设置日期。

答案:

#include

usingnamespacestd;

externinti=0;

classDate

{

public:

set(inty,intm,intd);

add();

print();

private:

intyear;

intmonth;

intday;

};

Date:

:

set(inty,intm,intd)

{

year=y;

month=m;

day=d;

}

Date:

:

add()

{

switch(month)

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

当前位置:首页 > 初中教育 > 理化生

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

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