同济大学c++ 实验1到实验8前三题.docx

上传人:b****5 文档编号:28553767 上传时间:2023-07-18 格式:DOCX 页数:55 大小:24.38KB
下载 相关 举报
同济大学c++ 实验1到实验8前三题.docx_第1页
第1页 / 共55页
同济大学c++ 实验1到实验8前三题.docx_第2页
第2页 / 共55页
同济大学c++ 实验1到实验8前三题.docx_第3页
第3页 / 共55页
同济大学c++ 实验1到实验8前三题.docx_第4页
第4页 / 共55页
同济大学c++ 实验1到实验8前三题.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

同济大学c++ 实验1到实验8前三题.docx

《同济大学c++ 实验1到实验8前三题.docx》由会员分享,可在线阅读,更多相关《同济大学c++ 实验1到实验8前三题.docx(55页珍藏版)》请在冰豆网上搜索。

同济大学c++ 实验1到实验8前三题.docx

同济大学c++实验1到实验8前三题

实验4:

1.

#include“iostream.h”

voidmain()

{intn,sum=0;

for(n=1;;sum+=n,n+=2)

if(n>=20)break;

cout<<”sum=”<

}

2.

#include“iostream.h”

voidmain()

{intx;

cout<<”inputx:

”<

cin>>x;

if(x==0)

cout<<”0″;

else

while(x!

=0)

{cout<

x=x/10;

}

cout<

}

3.

#include“iostream.h”

voidmain()

{inti,t=1;

floats=0;

for(i=1;1.0/t>1e-4;i++)

{s=s+1.0/t;

t=t+i;

}

cout<<”s=”<

}

4.

#include“iostream.h”

voidmain()

{doublepi=1,t=2;

intn;

for(n=1;t>1e-4;n++)

{pi=pi*t;

t=(float)((2*n)*(2*n))/((2*n-1)*(2*n+1));

}

cout<<”pi=”<

}

5.

(1)

#include“iostream.h”

#include“iomanip.h”

voidmain()

{inti,j;

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

{cout<

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

cout<

cout<

}

}

5.

(2)

#include“iostream.h”

#include“iomanip.h”

voidmain()

{inti,j;

charc;

for(i=9;i>=1;i–)

{cout<

c=9-i+’A';

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

cout<

cout<

}

}

6.

#include“iostream.h”

voidmain()

{intm,m1,m2,m3;

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

{m1=m%10;

m2=m/10%10;

m3=m/100;

if(m1*m1*m1+m2*m2*m2+m3*m3*m3==m)

cout<

}

}

7.

#include“iostream.h”

#include“iomanip.h”

voidmain()

{intx,y,z,k=0;

for(x=1;x<=6;x++)

for(y=x+1;y<=6;y++)

for(z=5;z<=6;z++)

if(x

{k++;

cout<

}

cout<<”满足条件的方案有:

”<

}

8.

#include“iostream.h”

#include“stdlib.h”

#include“time.h”

voidmain()

{inta,n,i,k;

doubles=0,temp=0;

srand(time(NULL));

a=rand()%9+1;

n=rand()%6+5;

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

{temp=temp*10+a;

s=s+temp;

}

cout<<”s=”<

}

9.

#include“iostream.h”

#include“math.h”

voidmain()

{floata,x,x1;

cin>>a;

x=a;

do

{x1=x;

x=2.0/3*x+a/(3*x*x);

}while(fabs(x-x1)>1e-5);

cout<<”编程求得x=”<

cout<<”调用函数求得x=”<

}

实验5:

#include“stdlib.h”

#include“iostream.h”

voidmain()

{inta[10],i,max,min;

floatave;

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

a[i]=rand()%71+30;

cout<<”数组a的内容如下:

\n”;

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

cout<

cout<

max=min=ave=a[0];

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

{ave=ave+a[i];

if(a[i]>max)

max=a[i];

if(a[i]

min=a[i];

}

cout<<”max=”<

}

2.#include

#defineN20

#include“stdlib.h”

voidmain()

{inta[N],i,j,k;

cout<<”排序前:

\n”;

for(i=0;i

{a[i]=rand()%101;

cout<

}

for(i=0;i

{k=i;

for(j=i+1;j

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

k=j;

if(k!

=i)

{intt=a[k];a[k]=a[i];a[i]=t;}

}

cout<<”排序后:

\n”;

for(i=0;i

cout<

}

3.

#include“iostream.h”

#include“stdlib.h”

voidmain()

{inti,j,s[10],t,n;

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

{s[i]=rand()%101;

cout<

}

cout<

cin>>n;

for(j=0;j

{t=s[9];

for(i=8;i>=0;i–)

{

s[i+1]=s[i];

}

s[0]=t;

}

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

cout<

}

4.

见第四章习题编程题1答案。

5.

(1)

#include

#include

voidmain()

{inta[10][10],i,j,n;

cin>>n;

for(i=0;i

{

a[i][0]=1;

a[i][i]=1;

}

for(i=2;i

for(j=1;j

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

for(i=0;i

{

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

{

cout<

}

cout<

}

}

(2)

#include

#include

voidmain()

{inta[10][10],i,j,n;

cin>>n;

for(i=0;i

{

a[i][0]=1;

a[i][i]=1;

}

for(i=2;i

for(j=1;j

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

for(i=0;i

{

cout<

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

{

cout<

}

cout<

}

}

6.

方法一:

#include“stdio.h”

#include“string.h”

voidmain()

{chars[80],ch;

inti,len;

gets(s);

len=strlen(s);

for(i=0;i

{ch=s[i];

s[i]=s[len-i-1];

s[len-i-1]=ch;

}

puts(s);

}

方法二:

#include“stdio.h”

#include“string.h”

voidmain()

{char*p,*p1,*p2,ch;

inti,len=0;

p=p1=p2=newchar[80];

gets(p1);

while(*p2!

=’\0′)

p2++;

p2–;

while(p1

{ch=*p1;

*p1=*p2;

*p2=ch;

p1++;

p2–;

}

puts(p);

}

7.

#include“stdio.h”

#include“iostream.h”

voidmain()

{chars[80],ch;inti,j;

gets(s);

cin>>ch;

while

(1)

{for(i=0;s[i]!

=’\0′;i++)

if(s[i]==ch)break;

if(s[i]==’\0′)break;

for(j=i;s[j]!

=’\0′;j++)

s[j]=s[j+1];

s[j]=’\0′;

}

puts(s);

}

8.

方法一:

#include

#include“stdio.h”

voidmain()

{chars[80];

gets(s);

inti=0;

while(s[i]!

=’\0′)

{

if(s[i]>=’A'&&s[i]<=’Z')

s[i]=s[i]+32;

i++;

}

puts(s);

}

方法二:

#include“stdio.h”

voidmain()

{chars[80],*p=s;

gets(s);

while(*p!

=’\0′)

{

if(*p>=’A'&&*p<=’Z')

*p=*p+32;

p++;

}

puts(s);

}

实验6:

1.编一判断m是否为素数的函数,并在主函数中利用它输出十对最小的孪生素数。

所谓孪生素数是指两个相差为2的素数,如3和5,11和13。

输出形式如图2.6.1。

函数形式为:

boolisprime(intm);

#include“iostream.h”

intisprime(intm)//判别m是否为质数

{inti;

for(i=2;m%i!

=0;i++);

return(i==m);

}

voidmain()

{intx,count=0;

x=2;

while

(1)

{if(isprime(x)&&isprime(x+2))

{count++;

cout<<”(“<

if(count>=10)break;

}

x++;

}

}

2.编一函数,功能为构造正整数x的逆序数。

再编一主函数,输出10个大于10000的最小的回文数。

回文数是指顺读和倒读都相同的数,如5、151、3553等。

函数形式为:

intreverse(intx);

#include”iostream.h”

#include”stdlib.h”

#include”time.h”

intf(inta)

{intb,c=0;

while(a!

=0)

{b=a%10;

c=c*10+b;

a/=10;

}

returnc;

}

voidmain()

{intx,i,k=0,t;booltag=true;

srand(time(NULL));

for(x=10000;k<10;x++)

{

if(f(x)==x)

{cout<

}

}

3.编一函数,功能为判断一字符串是否为回文,如果是回文则返回1,否则返回0。

回文是指顺读和倒读都一样的字符串,如“deed”和“level”是回文。

在主函数中对输入的字符串加以调用。

函数形式为:

inthuiwen(chars[]);

#include

#include

#include

inthuiwen(chars[])

{

inti,n=0;

charch,s1[80];

strcpy(s1,s);//原来的字符串保留在s1中

while(s[n])n++;//求字符串长度

for(i=0;i

{ch=s[i];s[i]=s[n-i-1];s[n-i-1]=ch;}

if(strcmp(s1,s)==0)

return1;

else

return0;

}

voidmain()

{chars[80];inti,count=0;

cout<<”输入5个字符串:

”<

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

{gets(s);

if(huiwen(s))count++;

}

cout<<”回文个数:

”<

}

4.函数的功能是将学生成绩从高分到低分排序,并统计优秀与不及格的人数。

用下面两种方法实现:

(1)函数形式为:

intfun(ints[],intn,int*x);

要求优秀人数通过return返回,不及格人数通过指针参数返回结果。

(2)函数形式为:

voidfun(ints[],intn,int&x,int&y);

要求优秀与不及格的人数通过引用参数返回结果。

分别编二个程序,学生数从键盘输入。

方法一:

#include

#defineN10

intfun(inta[],intn,int*x)

{inti,j,k;

*x=0;

for(i=0;i

{k=i;

for(j=i+1;j

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

k=j;

if(k!

=i)

{intt=a[k];a[k]=a[i];a[i]=t;}

}

for(i=0;i

if(a[i]>=60)

*x=*x+1;

return(n-*x);

}

voidmain()

{inta[N],i,n,pass,npass;

cin>>n;

for(i=0;i

cin>>a[i];

npass=fun(a,n,&pass);

cout<<”pass=”<

cout<<”成绩由高到低依次为:

\n”;

for(i=0;i

cout<

}

方法2:

#include

#defineN10

voidfun(inta[],intn,int&x,int&y)

{inti,j,k;

x=0;

for(i=0;i

{k=i;

for(j=i+1;j

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

k=j;

if(k!

=i)

{intt=a[k];a[k]=a[i];a[i]=t;}

}

for(i=0;i

if(a[i]>=60)

x=x+1;

y=n-x;

}

voidmain()

{inta[N],i,n,pass,npass;

cin>>n;

for(i=0;i

cin>>a[i];

fun(a,n,pass,npass);

cout<<”pass=”<

cout<<”成绩由高到低依次为:

\n”;

for(i=0;i

cout<

}

5.编一函数,功能为统计字符串中各个字母(不区分大、小写)出现的频率,同时找出频率出现最高的字母及次数。

函数形式为:

voidfreq(chars[],intp[],char&chmax,int&max)

#include“iostream.h”

#include“stdio.h”

#include“string.h”

voidfreq(chars[],intp[],char&chmax,int&max)

{for(inti=0;i<26;i++)

p[i]=0;

strlwr(s);

i=0;

while(s[i]!

=’\0′)

{if(s[i]>=’a'&&s[i]<=’z')

p[s[i]-’a']++;

i++;

}

max=p[0];intk=0;

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

if(p[i]>max)

{max=p[i];k=i;}

chmax=k+97;

}

voidmain()

{intp[26],i,max;chars[80],chmax;

gets(s);

freq(s,p,chmax,max);

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

if(p[i])cout<

cout<

}

6.编写函数max,其功能是将字符串s中最大字符的地址返回,再编写一个主函数,调用该函数,将字符串s中从最大字符开始的子串中的小写字母转换成大写字母,然后输出新字符串s。

例如,假设s的内容为“qwertyou”,则从最大字符’y’开始的子串为“you”,处理后的s为“qwertYOU”。

函数形式为:

char*max(chars[]);

#include“iostream.h”

#include“string.h”

#include“stdio.h”

char*max(chars[])

{char*p=s;

inti=1,imax=0;

while(s[i]!

=’\0′)

{if(s[i]>s[imax])imax=i;

i++;

}

while(s[imax]!

=’\0′)//等价于strupr(&s[imax]);

{s[imax]-=32;imax++;}

returnp;

}

voidmain()

{chars[100];

gets(s);

cout<

}

7.编一函数,求级数的部分和,当最后一项的值小于eps时结束。

设eps的默认值为10-6。

函数形式为:

doublefun(doublex,doubleeps=1e-6);

#include

#include

doublefun(doublex,doubleeps=1e-6)

{intn=1;

doublet=1,s=0;

while(fabs(x/t)>1e-6)

{

s=s+x/t;

n=n+2;

t=-t*n*(n-1);

}

returns;

}

voidmain()

{doublex;

cin>>x;

cout<

}

8.编写两个同名的函数,分别求出整型数的两点间距离和浮点型数的两点间距离,调试成功后,再将其改为用函数模板实现。

函数形式为:

doubledist(intx1,inty1,intx2,inty2);

doubledist(doublex1,doubley1,doublex2,doubley2);

#include

#include

doubledist(intx1,inty1,intx2,inty2)

{

return(sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));

}

doubledist(doublex1,doubley1,doublex2,doubley2)

{

return(sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));

}

voidmain()

{intx1,x2,y1,y2;

doublex11,x12,y11,y12;

cin>>x1>>y1>>x2>>y2;

cin>>x11>>y11>>x12>>y12;

cout<<”dist1=”<

cout<<”dist2=”<

}

用函数模板来实现:

#include

#include

template

doubledist(Tx1,Ty1,Tx2,Ty2)

{

return(sqr

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

当前位置:首页 > 经管营销

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

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