C++课程上机习题参考答案
《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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




