教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

C++课程上机习题参考答案

来源:网络收集 时间:2026-08-11
导读: 《C++程序设计与实践》上机习题参考答案 上机习题1 1. 补充下面的程序,使得程序输出星号图(1)。 #include iostream using namespace std; void printstars(int m) //定义能输出一行m个星号的函数 { for (int j=1; j=m; ++j) cout'*'; } int main( ) { int

《C++程序设计与实践》上机习题参考答案

上机习题1

1. 补充下面的程序,使得程序输出星号图(1)。

#include <iostream>

using namespace std;

void printstars(int m) //定义能输出一行m个星号的函数

{

for (int j=1; j<=m; ++j)

cout<<'*';

}

int main( )

{

int n=6; //n代表要输出的行数

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

{

//请在下面写上调用printstars函数的语句,使程序输出(1)图 printstars(2*i-1);

cout<<endl;

}

return 0;

}

2. 在上面程序基础上,增加函数printchs函数的声明和定义,输出星号图(2)或者其它字符图。

#include <iostream>

using namespace std;

void printchs(int m, char ch) //定义能输出m个符号ch的函数

{

for (int j=1; j<=m; ++j)

cout<<ch;

}

int main( )

{

int n=6; //n代表要输出的行数

int i;

//通过在下面的循环里调用printchs函数,输出右面的图

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

{

printchs(n-i,' ');

printchs(2*i-1,'*') ;

cout<<endl;

}

return 0;

}

上机习题2

1. 设计gcd函数,输入两个数,求出其最大公约数;

#include <iostream>

using namespace std;

//自定义函数的原型(即函数声明)

int gcd(int,int);

int main()

{

int a,b,g;

cin>>a>>b;

g=gcd(a,b);

cout<<"最大公约数是: "<<g;

return 0;

}

int gcd(int x,int y) //用辗转相除法,求两数的最大公约数

{

int r;

while(y>0)

{

r=x%y;

x=y;

y=r;

}

return x;

}

2. 在上面程序基础上,增加函数gcds函数的声明和定义,实现求4数最大公约数的功能。

#include <iostream>

using namespace std;

//自定义函数的原型(即函数声明)

intgcd(int,int);

intgcds(int,int,int,int);

int main()

{

inta,b,c,d;

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

cout<<"最大公约数是: "<<gcds(a,b,c,d)<<endl;

return 0;

}

intgcd(intx,int y) //用辗转相除法,求两数的最大公约数

{

int r;

while(y>0)

{

r=x%y;

x=y;

y=r;

}

return x;

}

intgcds(intx,inty,intz,int w)//调用gcd()求四数的最大公约数

{

int g1,g2,g;

g1=gcd(x,y);

g2=gcd(z,w);

g=gcd(g1,g2);

return g;

}

上机习题3

2ax bx c 0的根,用三个函数分别求当b2 4ac大于0、等于0和求解方程

小于0时的根。从主函数输入

#include<iostream>

#include<math.h>

using namespace std;

float x1,x2,disc,p,q; a,b,c的值,并输出结果。

int main()

{void greater_than_zero(float,float);

void equal_to_zero(float,float);

void smaller_than_zero(float,float);

float a,b,c;

cout<<"input a,b,c:";

cin>>a>>b>>c;

disc=b*b-4*a*c;

cout<<"root:"<<endl;

if(disc>0)

{

greater_than_zero(a,b);

cout<<"x1="<<x1<<",x2="<<x2<<endl;

}

else if(disc==0)

{

equal_to_zero(a,b);

cout<<"x1="<<x1<<",x2="<<x2<<endl;

}

else

{

smaller_than_zero(a,b);

cout<<"x1="<<p<<"+"<<q<<"i"<<endl;

cout<<"x2="<<p<<"-"<<q<<"i"<<endl;

}

return 0;

}

void greater_than_zero(float a,float b)

{

x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

}

void equal_to_zero(float a,float b)

{

x1=x2=(-b)/(2*a);

}

void smaller_than_zero(float a,float b)

{

p=-b/(2*a);

q=sqrt(-disc)/(2*a);

}

上机习题4

求a!+b!+c!的值,用一个函数fac(n)求n!。a,b,c的值由主函数输入,最终得到的值在主函数中输出。

#include<iostream>

using namespace std;

int main()

{int fac(int);

int a,b,c,sum=0;

cout<<"enter a,b,c:";

cin>>a>>b>>c;

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

cout<<a<<"!+"<<b<<"!+"<<c<<"!="<<sum<<endl;

return 0;

}

int fac(int n)

{int f=1;

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

f=f*i;

return f;

}

上机习题5

写一个函数验证哥德巴赫猜想:一个不小于6的偶数可以表示为两个素数之和,如6=3+3,8=3+5,10=3+7,……,在主函数中输入一个不小于6的偶数n,然后调用函数godbaha,在godbaha函数中再调用prime函数,prime函数的作用是判别一个数是否为素数。在godbaha函数中输出以下形式的结果:

34=3+31

#include<iostream>

#include<cmath>

using namespace std;

int main()

{

void godbaha(int);

int n;

cout<<"input n:";

cin>>n;

godbaha(n);

return 0;

}

void godbaha(int n)

{

int prime(int);

int a,b;

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

{

if(prime(a))

{

b=n-a;

if(prime(b))

cout<<n<<"="<<a<<"+"<<b<<endl; }

}

}

int prime(int m)

{

int i,k=sqrt((float)m);

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

if(m%i==0) break;

if(i>k)

return 1;

else

return 0;

}

…… 此处隐藏:1089字,全部文档内容请下载后查看。喜欢就下载吧 ……
C++课程上机习题参考答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/1336825.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)