西安交通大学实验报告.docx
《西安交通大学实验报告.docx》由会员分享,可在线阅读,更多相关《西安交通大学实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
西安交通大学实验报告
西安交通大学实验报告
课程计算机程序设计实验名称C++集成开发环境的使用第1页共10页
系别_______电气学院___________实验日期2011年3月24日
专业班级____钱学森02____组别_____________实验报告日期2011年3月24日
姓名____杨帆_______学号__52报告退发(订正、重做)
同组人_________________________________教师审批签字
一.实验目的
二.
(1)掌握集成开发环境的使用方法;
三.
(2)了解C++程序的基本特点。
二.实验内容
(-)实验题目一:
编写字符串反转函数mystrrev().
1.要点分析
略
2.程序源代码
#include
#include
#include
usingnamespacestd;
voidmystrrev(charstring[])
{
inti,n;
charp;
n=strlen(string);
for(i=0;i<=int(n/2-1);i++)
{
p=string[i];
string[i]=string[n-1-i];
string[n-1-i]=p;
}
}
main()
{
chars[20];
inti,n;
cout<<"请输入一个字符串:
";
(s,20);
n=strlen(s);
cout<<"改变之前的字符串为:
";
for(i=0;i<=n-1;i++)
cout<
mystrrev(s);
cout<";
for(i=0;i<=n-1;i++)
cout<
cout<return0;
}
3.实验结果
(二)实验题目二:
编写一组求数组中最大最小元素的函数,同时写出主函数来检验之。
1.要点分析
略
2.程序源代码
#include
usingnamespacestd;
intimax(intarray[],intcount)
{
inti,max;
max=array[0];
for(i=0;i<=count-1;i++)
if(array[i]>max)
max=array[i];
returnmax;
}
intimin(intarray[],intcount)
{
inti,min;
min=array[0];
for(i=0;i<=count-1;i++)
if(array[i]min=array[i];
returnmin;
}
main()
{
constintnum=10;
inta[num];
inti,j,n;
cout<<"请输入一个"<"<for(i=0;i<=num-1;i++)
cin>>a[i];
cout<<"此数组中最大的元素为:
"<cout<<"此数组中最小的元素为:
"<return0;
}
3.实验结果
(三)实验题目三
编写程序isprime(inta)用来判断变量a是否为素数,用该函数找出任意给定的n个整数中的素数。
要点分析
略
1.程序源代码
#include
#include
usingnamespacestd;
intisprime(inta)
{
inti;
if(a==1)return0;
for(i=2;i<=sqrt(a);i++)
{
if(a%i==0)
return0;
}
return1;
}
main()
{
inti;
constm=5;
intn[m];
cout<<"请输入"<";
for(i=0;i<=m-1;i++)
cin>>n[i];
cout<<"以上几个数中的质数有:
";
for(i=0;i<=m-1;i++)
if(isprime(n[i])==1)
cout<cout<return0;
}
2.实验结果
(四)实验题目四
用弦截法求一元方程f(x)=0在区间(X0,X1)之间的一个根。
1.要点分析
略
2.程序源代码
#include
#include
usingnamespacestd;
doublea[10];
intn;
doublef(doublex)
{
doublef;
inti;
f=0;
for(i=n;i>=0;i--)
f+=a[i]*pow(x,i);
returnf;
}
doublex(doublex0,doublex1)
{
doublet,x2;
t=1E-7;
do
{
x2=(x0+f(x0)*(x0-x1)/(f(x1)-f(x0)));
if(f(x2)*f(x0)>=0)
x0=x2;
else
x1=x2;
cout<}while(fabs(f(x2))>t);
returnx2;
}
main()
{
inti;
doublex0,x1;
cout<<"请输入方程最高次项的次数:
";
cin>>n;
cout<<"请依次输入方程各项的系数,格式为:
"<for(i=n;i>=1;i--)
cout<<"a["<
cout<<"a[0]=0"<for(i=n;i>=0;i--)
cin>>a[i];
cout<<"请输入求根的范围:
Xocout<<"Xo=";
cin>>x0;
cout<<"X1=";
cin>>x1;
if(f(x0)*f(x1)<0)
cout<<"X="<else
cout<<"该方程在("<"<return0;
}
3.实验结果
(五)实验题目五
编写计算平方根函数,并加以测试检验。
提示:
采用牛顿迭代法,计算精度10-7。
函数原型:
doublenmysqrl(doublex)
1.要点分析
略
2.程序源代码
#include
usingnamespacestd;
#include
doublemysqrt(doublex)
{
doublex1,x2,t;
x1=1;
x2=1;
t=1E-7;
while((fabs(x1*x1-x)>t)||(fabs(x1-x2)>t))
{
x1=x2-(x1*x1-x)/(2*x1);
x2=x1;
}
returnx1;
}
main()
{
doublen;
cout<<"请输入n:
";
cin>>n;
cout<<"sqrt("<return0;
}
3.实验结果
(六)实验题目六
编写函数判定一个正整数是否是递增数,即该数各位数字从左至右递增排列,例如:
1122334、123456、5599、等都是递增数。
例如:
32768、43987、123498都不是递增数。
显示输出0至9999999之间所有递增数。
1.要点分析
略
2.程序源代码
#include
#include<>
#include
usingnamespacestd;
intp(longn)
{
inta[10];
inti,num;
num=int(log10(n))+1;
a[0]=n%10;
for(i=1;i<=num;i++)
{
a[i]=int(n/pow(10,i))%10;
if(a[i-1]return0;
}
return1;
}
main()
{
inti;
ofstreamout("递增数");
for(i=1;i<=9999999;i++)
if(p(i)==1)
out<
();
return0;
}
3.实验结果
个人小结
本次试验出现了许多困扰我的地方,好在通过请教老师和查阅课本都逐一解决了。
本次试验我初步接触了文件的输出,并发现了以文件方式输出结果在一些需要大量输出的程序中的重要性。
不足:
还是感觉第四题不够完善,当函数在(X0,X1)内有2个或后两个以上解时不能很好的处理结果~