西安交大C++随堂练习5.docx
《西安交大C++随堂练习5.docx》由会员分享,可在线阅读,更多相关《西安交大C++随堂练习5.docx(15页珍藏版)》请在冰豆网上搜索。
![西安交大C++随堂练习5.docx](https://file1.bdocx.com/fileroot1/2023-2/5/9bbaad97-876f-4ae6-8807-eb5b95dc2d0d/9bbaad97-876f-4ae6-8807-eb5b95dc2d0d1.gif)
西安交大C++随堂练习5
西安交通大学实验报告
一.实验目的
(1)掌握C++的选择结构语句的使用,如:
if…else…,switch…
(2)掌握C++的循环结构语句的使用,如:
while…,do…while…,for….
二.实验内容
(-)实验题目一:
分段函数
#include
usingnamespacestd;
intmain()
{
doublex,y;
cout<<"请输入自变量x=";
cin>>x;
if(x<0)
{
y=x*x;
}
else
{
y=x*x*x+2*x*x+x;
}
cout<<"y="<return0;
}
(二)实验题目二:
计算n!
#include
usingnamespacestd;
intmain()
{
intn,i=0,mul=1;
cout<<"请输入非负整数n=";
cin>>n;
if(n>=0)
{
for(i=1;i<=n;i++)
{
mul=mul*i;
}
cout<<"n!
="<}
else
{
cout<<"输入的数不合法"<}
return0;
}
(三)实验题目三:
Fabonacci数列
(1)、#include
usingnamespacestd;
intfib(intn)
{
if(n==0)return0;
elseif(n==1)return1;
returnfib(n-1)+fib(n-2);
}
intmain()
{
inti,n,u=0;
cout<<"请输入待求的斐波那契数列项数n:
";
cin>>n;
for(i=1;i<=n;i++)
{
u=u+fib(i);
}
cout<<"斐波那契数列的第"<"<cout<<"斐波那契数列的前"<"<
return0;
}
(2)、#include
#include
usingnamespacestd;
intmain()
{
doublesum,u,n;
sum=0;
u=0;
n=1;
do
{
u=1/(u+1);
sum=sum+u;
n++;
}while(fabs(u-1/(u+1))>10E-8);
cout<<"变式斐波那契数列的所求n为:
"<cout<<"变式斐波那契数列的所求第n项为:
"<
cout<<"变式斐波那契数列的所求前n项和为:
"<return0;
}
(四)、实验题目四:
数学计算
#include
#include
usingnamespacestd;
intmain()
{
inta,n,u,i,sum;
sum=0;
i=1;
cout<<"请输入1-9的整数a和任意正整数n:
";
cin>>a>>n;
u=a;
do
{
sum=sum+u;
u=10*u+a;
i++;
}while(i<=n);
cout<<"a+aa+aaa+aaaa+……+="<return0;
}
(五)、实验题目五:
谁是小偷
#include
usingnamespacestd;
intmain()
{
inta,b,c,d;
for(a=1;a>=0;a--)//穷举每个人是否是小偷的所有情况
for(b=1;b>=0;b--)//1:
是小偷0:
不是
for(c=1;c>=0;c--)
for(d=1;d>=0;d--)
if((a==0)+(c==1)+(d==1)+(d==0)==3&&a+b+c+d==1)//4人的说法中有3个真的,且只有一个小偷
{
cout<<"A"<<(a?
"":
"不")<<"是。
"<cout<<"B"<<(b?
"":
"不")<<"是。
"<cout<<"C"<<(c?
"":
"不")<<"是。
"<cout<<"D"<<(d?
"":
"不")<<"是。
"<}
return0;
}
#include
usingnamespacestd;
intmain()
{
inta,b,c,d;
for(a=1;a>=0;a--)//穷举每个人是否是小偷的所有情况
for(b=1;b>=0;b--)//1:
是小偷0:
不是
for(c=1;c>=0;c--)
for(d=1;d>=0;d--)
if((!
a)+(c)+(d)+(!
d)==3&&a+b+c+d==1)//!
a与a==0或a!
=1完全等价,其他同
{
cout<<"A"<<(a?
"":
"不")<<"是。
"<cout<<"B"<<(b?
"":
"不")<<"是。
"<cout<<"C"<<(c?
"":
"不")<<"是。
"<cout<<"D"<<(d?
"":
"不")<<"是。
"<}
return0;
}
(六)、实验题目六:
水仙花数
#include
usingnamespacestd;
intmain()
{
intn,i,j,k,sum,m;
doubleaverage;
sum=0;
m=0;
for(n=100;n<=999;n++)
{i=n/100;//取出n的百位数
j=(n/10)%10;//取数n的十位数
k=n%10;//取出n的个位数
if(n==i*i*i+j*j*j+k*k*k)
{
cout<sum=sum+n;
m++;
}
}
cout<<"所有水仙花数的和sum="<average=sum/m;
cout<<"所有水仙花数的平均值average="<return0;
}
(七)、实验题目七:
二元一次方程组
#include
usingnamespacestd;
intmain()
{
intn,i,j,k,t,m=0;
for(n=1000;n<=2000;n++)
{
i=n/1000;//取出千位
j=n/100-10*i;//取出n的百位数
k=n/10-100*i-10*j;//取数n的十位数
t=n%10;//取出n的个位数
if((i+j)==(k+t))
{
m++;
cout<<"n="<}
}
cout<cout<<"水仙花数的个数m="<return0;
}
三.个人小结
这次的实验明显比前两次难,很多程序都不能直接套用例子,但总体来说还是很基本的。
第三题求斐波那契数列,重点在于最后两位数与新加入数的转换。
第三题其实是斐波那契数列的改版,循环中加一个sum即可。
第四题重点在于n个a到n+1个a的转换(乘十加a)比较简单。
第六题可对求水仙花数程序略作修改,为求和可在循环中加入sum+=n,为求平均值可添加计数器num++。
本此实验最应注意的是循环的次数,循环的条件(停止循环的条件)。
需要在写程序前将结构彻底搞懂,必要时可画流程图。
个人缺点编程速度太慢,主要是第二题调试时间太长。
另外应注意程序的注释,提高可读性。
**********请看下页样例**********
西安交通大学实验报告
课程计算机程序设计实验名称C++集成开发环境的使用第1页共2页
系别理学院实验日期2007年3月15日
专业班级应数61组别___________实验报告日期2007年3月16日
姓名张三学号06031027报告退发(订正、重做)
同组人_________________________________教师审批签字
一.实验目的
(1)掌握集成开发环境的使用方法;
(2)了解C++程序的基本特点。
二.实验内容
(-)实验题目一:
求解任意两个正整数的最大公因数。
1.要点分析
根据古希腊数学家欧几里德的算法,要求解给定两个正整数p和q的最大公因数可按照如下方法:
步骤1:
如果p步骤2:
求p/q的余数r;
步骤3:
如果r=0,则q就是所求的结果;
否则反复做如下工作:
令p=q,q=r,重新计算p和q的余数r,直到r=0为止
则q就是原来的两正整数的最大公因数.
2.程序源代码
//计算两个正整数的最大公因数
#include//包含基本输入输出库文件
intmain()
{
//说明三个整型变量p,q,r
intp,q,r;
//提示用户由键盘输入两个正整数
cout<<"Pleaseinputtwointegernumbers:
"<cin>>p>>q;
//如果pif(p{
r=p;
p=q;
q=r;
}
//计算p除以q的余数r
r=p%q;
//只要r不等于0,重复进行下列计算
while(r!
=0)
{
p=q;
q=r;
r=p%q;
}
//输出结果
cout<<"Themaximumcommondivisoris"<return0;
}
3.实验结果
(二)实验题目二:
计算矩形面积
1.要点分析
(略)
2.程序源代码
(略)
3.实验结果
(略)
三.个人小结
(略)