c++例题.docx

上传人:b****2 文档编号:17062022 上传时间:2023-07-21 格式:DOCX 页数:42 大小:22.79KB
下载 相关 举报
c++例题.docx_第1页
第1页 / 共42页
c++例题.docx_第2页
第2页 / 共42页
c++例题.docx_第3页
第3页 / 共42页
c++例题.docx_第4页
第4页 / 共42页
c++例题.docx_第5页
第5页 / 共42页
c++例题.docx_第6页
第6页 / 共42页
c++例题.docx_第7页
第7页 / 共42页
c++例题.docx_第8页
第8页 / 共42页
c++例题.docx_第9页
第9页 / 共42页
c++例题.docx_第10页
第10页 / 共42页
c++例题.docx_第11页
第11页 / 共42页
c++例题.docx_第12页
第12页 / 共42页
c++例题.docx_第13页
第13页 / 共42页
c++例题.docx_第14页
第14页 / 共42页
c++例题.docx_第15页
第15页 / 共42页
c++例题.docx_第16页
第16页 / 共42页
c++例题.docx_第17页
第17页 / 共42页
c++例题.docx_第18页
第18页 / 共42页
c++例题.docx_第19页
第19页 / 共42页
c++例题.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c++例题.docx

《c++例题.docx》由会员分享,可在线阅读,更多相关《c++例题.docx(42页珍藏版)》请在冰点文库上搜索。

c++例题.docx

c++例题

第四章

一、补充实验内容解答

实验内容第5题

#include

#include

voidmain()

{

ints;

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

{

s=0;

for(inti=1;i

if(m%i==0)

s+=i;

if(s==m)

{

cout<

";

for(i=1;i

if(m%i==0)

cout<

cout<<'\n';

}

}

}

第五章

求两分数相加

#include

intgcd(int,int);

intlcm(int,int);

voidmain()

{

intnum1,num2,den1,den2,a,l,g;

cin>>num1>>den1>>num2>>den2;

cout<

cout<<"求分母的最小公倍数:

";

l=lcm(den1,den2);

cout<

cout<<"两分数的和为:

";

a=(l/den1)*num1+(l/den2)*num2;

cout<

cout<<"求分子分母的最大公约数:

";

g=gcd(a,l);

cout<

cout<<"输出最简分数:

";

cout<

}

intgcd(inta,intb)

{

inti;

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

if(!

((a%i)||(b%i)))

returni;

}

intlcm(inta,intb)

{

inti;

i=b;

while(i%a)i+=b;

return(i);

}

1、

#include

#include

floatsolut(floata,floatb,floatc,floatd)

{

floatx=1,x0,f,f1;

do{

x0=x;

f=((a*x0+b)*x0+c)*x0+d;

f1=(3*a*x0+2*b)*x0+c;//对f函数的导数

x=x0-f/f1;

}while(fabs(x-x0)>=1e-3);

returnx;

}

voidmain()

{

floata,b,c,d;

cout<<"inputa,b,c,d:

";

cin>>a>>b>>c>>d;

cout<

cout<<"x="<

}

2、

#include

#include

fun(intx,inty)

{

inta,b;

a=(int)sqrt(x-y);

b=(int)sqrt(x+y);

if(a*a==x-y&&b*b==x+y)

returntrue;

else

returnfalse;

}

voidmain()

{

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

for(intj=1;j<100;j++)

if(i>j)

if(fun(i,j))

cout<

}

3、

#include

#include

fun(intn)

{

if(n==1)

return1;

else

returnn*fun(n-1);

}

voidmain()

{

doublesum,m,a;

intn=1,x;

sum=1.0;

cin>>x;

m=x;

a=m/fun(n);

while(a>0.000001)

{

sum+=a;

m*=x;

n++;

a=m/fun(n);

}

cout<<"sum="<

}

4、

#include

fun(intn)

{

if(n==1)

return1;

else

returnn*n+fun(n-1);

}

voidmain()

{

inta;

cin>>a;

cout<

}

5、

#include

fun(intn)

{

if(n==1)

return10000;

else

return2*fun(n-1)-10000;

}

voidmain()

{

intm,s=0;

for(m=1;m<=12;m++)

s+=fun(m);

cout<<"年生产总量为:

"<

}

用递归法将一个整数转换成字符串。

例如输出234,应输出字符串“234”。

N的位数不确定,可以是任意数的整数。

#include

voidconvert(intn)

{

inti;

if((i=n/10)!

=0)

convert(i);

cout<

}

voidmain()

{

intnumber;

cout<<"inputaninteger:

";

cin>>number;

cout<<"Output:

";

if(number<0)

{

cout<<"-";

number=-number;

}

convert(number);

cout<<'\n';

}

四课本习题

5-2、

#include

#include

floatf(intn)

{

if(n<0)

{

cout<<"n应为正数!

\n";

exit

(1);

}

floats;

if(n==1||n==0)

return1;

else

s=n*f(n-1);

returns;

}

floatc(intm,intr)

{

if(m

cout<<"m不应小于r!

\n";

exit

(1);

}

returnf(m)/(f(r)*f(m-r));

}

voidmain()

{

intm,r;

cin>>m>>r;

cout<<"c("<

}

5-3、

#include

voidf(intn)

{

if(n/16)

f(n/16);

if((n%16)<=9)

cout<

else

cout<

}

voidmain()

{

intn;

cin>>n;

f(n);cout<

}

5-4、

#include

#include

intprime(int);

voidmain()

{

intk=0;

for(inti=5;i<=100;i=i+2)

if(prime(i))

{

cout<

k++;

if(k%5==0)cout<<'\n';

}

cout<<'\n';

}

intprime(inti)

{

intyes=1,j;

j=sqrt(i);

for(intl=2;l<=j;l++)

if(i%l==0)yes=0;

returnyes;

}

5-5、5-6、

#include

intgcd(int,int);

intlcm(int,int);

voidmain()

{

inta,b,g,l;

cin>>a>>b;

cout<<"a="<

g=gcd(a,b);

l=lcm(a,b);

cout<<"g="<

cout<<"l="<

}

intgcd(inta,intb)

{

inti;

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

if(!

((a%i)||(b%i)))

return(i);

}

intlcm(inta,intb)

{

inti;

i=b;

while(i%a)i+=b;

return(i);

}

5-7、

#include

intmax(intx,inty)

{

intz;

returnz=x>y?

x:

y;

}

floatmax(floatx,floaty)

{

returnx>y?

x:

y;

}

voidmain()

{

inta,b;

floatx,y;

cin>>a>>b>>x>>y;

cout<<"max("<

cout<<"max("<

}

5-8、

#include

inlinefloatmax(floatx,floaty,floatz)

{

floatk;

k=x>y?

x:

y;

returnk>z?

k:

z;

}

voidmain()

{

cout<<"InputAandB:

";

floata,b,c;

cin>>a>>b>>c;

cout<<"max="<

}

5-9、

#include

intv(intn=10);

voidmain()

{

inta;

cout<

cin>>a;

cout<

}

intv(intn)

{

intk=1;

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

k=k*i;

returnk;

}

5-10、

#include

#include

intsum(intnum,intb...)

{

va_listap;

inttemp,sum;

va_start(ap,b);

sum=b;

for(inti=1;i

{

temp=va_arg(ap,int);

cout<<"temp="<

sum=sum+temp;

}

va_end(ap);

returnsum;

}

voidmain()

{

intx,y,z;

cin>>x>>y>>z;

cout<<"sum="<

}

5-11、

#include

#include

intv(intnum,intb...)

{

va_listap;

intsub,sum,temp;

floatarv;

va_start(ap,b);

sub=b;

sum=b;

if(num==3)

{

for(inti=1;i

temp=va_arg(ap,int);

cout<<"temp="<

sub=sub*temp;}

returnsub;

};

if(num==4)

{

for(intj=1;j

temp=va_arg(ap,int);

cout<<"temp="<

sum=sum+temp;}

arv=float(sum/num);

returnfloat(arv);

};

}

voidmain()

{

intx,y,z,k;

cout<<"输入三个整数:

";

cin>>x>>y>>z;

cout<<"输出三个整数的积:

"<

cout<<"输入四个整数:

";

cin>>x>>y>>z>>k;

cout<<"输出这四个整数的平均值:

"<

}

5-12、

#include

#include

longintf(intn)

{

if(n==1||n==2)return

(1);

elsereturnf(n-1)+f(n-2);

}

voidmain()

{

inti;

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

cout<

if(i%4==0)cout<<'\n';

}

cout<<'\n';

}

5-13、

include

floatHermite1(intn,floatx)

{

if(n==0)return1;

if(n==1)return2*x;

return2*x*Hermite1(n-1,x)-2*(n-1)*Hermite1(n-2,x);

}

floatHermite2(intn,floatx)

{

floath0=1,h1=2*x,h2;

if(n==0)return1;

if(n==1)return2*x;

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

h2=2*x*h1-2*(i-1)*h0;

h0=h1;h1=h2;

}

returnh2;

}

voidmain()

{

intn0;

floatx0;

cout<<"输入一个不小于零的整数和一个实数:

";

cin>>n0>>x0;

cout<<"Hermite数列的前n项的值分别为:

\n";

for(inti=0;i<=n0;i++)

cout<<"H"<

}

15、

#include

voidf1(intn)

{

intj=n%10;

if(n/10)f1(n/10);

cout<

}

voidf2(intn)

{

cout<

if(n/10)f2(n/10);

}

voidmain()

{

intx;

cout<<"输入一个整数:

";

cin>>x;

cout<<"输入的整数为:

"<

cout<<"该整数的反序输出为:

";

f2(x);

cout<<'\n';

cout<<"该整数的正序输出为:

";

f1(x);

cout<<'\n';

}

5-18

//用带参数的宏求三角形面积

#include

#include

#defines(a,b,c)(a+b+c)/2.0

#defineAREA(a,b,c)sqrt(s(a,b,c)*(s(a,b,c)-a)*(s(a,b,c)-b)*(s(a,b,c)-c))

voidmain()

{floata,b,c;

cout<<"Inputa,b,c:

";

cin>>a>>b>>c;

if(a+b>c&&a+c>b&&b+c>a)

cout<<"AREA("<

else

cout<<"Itisnotatriangle!

\n";

}

//用函数求三角形的面积

#include

#include

floatarea(floata,floatb,floatc)

{

floats,arev;

s=(a+b+c)/2.0;

arev=sqrt(s*(s-a)*(s-b)*(s-c));

returnarev;

}

voidmain()

{

floata,b,c;

cout<<"Inputa,b,c:

";

cin>>a>>b>>c;

if(a+b>c&&a+c>b&&b+c>a)

cout<<"area("<

else

cout<<"Itisnotatriangle!

\n";

}

第六章

1、编程实现两个34阶矩阵相加。

#include

voidinput(inta[3][4])

{

for(inti=0;i<3;i++)

for(intj=0;j<4;j++)

cin>>a[i][j];

}

voidfun(inta[3][4],intb[3][4],intc[3][4])

{

for(inti=0;i<3;i++)

for(intj=0;j<4;j++)

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

}

voidoutput(inta[3][4])

{

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

for(intj=0;j<4;j++)

cout<

cout<

}

}

voidmain()

{

inta[3][4],b[3][4],c[3][4];

input(a);

input(b);

fun(a,b,c);

output(c);

}

2、程序将两个已按升序排列的数组合并成一个升序数组。

两个数组中重复的数只保存一次。

#include

voidfun(intx[],inty[])

{

inti,j,l;

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

for(;x[i]>y[j];j++);

for(l=4+j;l-j>=0;l--)y[l+1]=y[l];

y[j]=x[i];

}

for(i=0;y[i];i++){

if(y[i]==y[i+1])

for(j=i;y[j];j++)y[j]=y[j+1];

}

}

voidmain()

{

inta[10]={3,6,8,11,13,20};

intb[20]={2,4,6,8,20};

fun(a,b);//b的最后一个元素大于等于a的最后一个元素

for(intk=0;b[k]!

=0;k++)

cout<

cout<

}

3、设计一个函数voidInstr(chara[],charb[],intn),将字符串b插入到字符串a的第n个字符处,字符串a的第n个字符及右边的字符向右移动。

假定a中的字符串长度大于n。

#include

#include

voidInstr(chara[],charb[],intn)

{

chart[100];

strcpy(t,a+n-1);//a+n-1的含义是从a的第n个字符开始拷贝

a[n-1]='\0';

strcat(a,b);

strcat(a,t);

}

voidmain()

{

chars1[100]="1234567890";

chars2[100]="abcdefghijklmn";

intn;

cin>>n;

Instr(s1,s2,n);

cout<

}

voidInstr(chara[],charb[],intn)也可以写成:

voidInstr1(chara[],charb[],intn)

{

intk=n;

chart[100];

for(inti=0;b[i]!

='\0';i++,k++)t[i]=a[k-1];

t[i]='\0';a[n-1]='\0';

strcat(a,b);

strcat(a,t);

}

4、编程实现对输入的两个字符串str1和str2,判断str2是否为str1的子串。

若tr2是为str1的子串,显示子串在父串中的起始位置。

要求用函数实现判断。

#include

intfun(charstr1[],charstr2[])

{

inti,j,k;

for(i=0;str1[i];i++)

for(j=i,k=0;str2[k]==str1[j];k++,j++)

if(str2[k+1]=='\0')returni+1;

return0;

}

voidmain()

{

intm=0;

chars1[100],s2[100];

cin.getline(s1,100);

cin.getline(s2,100);

if(fun(s1,s2))cout<

"<

elsecout<

"<

}

5、编写程序,实现把字符数组b插入到字符数组a中最大字符后边。

#include

#include

voidmain()

{

chara[40],b[]="abc",max;

inti,j=0;

cout<<"inputastring:

\n";

cin.getline(a,39);

cout<

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

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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2