计算机VC++编程.docx
《计算机VC++编程.docx》由会员分享,可在线阅读,更多相关《计算机VC++编程.docx(14页珍藏版)》请在冰豆网上搜索。
![计算机VC++编程.docx](https://file1.bdocx.com/fileroot1/2023-2/6/96180eaa-a437-41b1-9bce-d071d8e479d7/96180eaa-a437-41b1-9bce-d071d8e479d71.gif)
计算机VC++编程
土木工程
暑期计算机实习报告
指导教师:
班级:
姓名:
学号:
XXXX大学
2010年7月
(一)实习时间:
7月17日~7月21日
(二)实习地点:
7307
(三)实习目的:
计算机实习是本科计算机基础教学的一个重要环节。
它对于巩固计算机基础知识,增强计算机应用水平,改善知识结构,具有重要意义。
通过系统的上机实习,使计算机基础知识与基本操作技能得到进一步的巩固,提高编程能力和用机水平,培养用计算机分析与解决问题的意识,为后续课程打下基础。
(四)实习内容:
1.一维数组[A]中存放着一组杂乱无章的数据,编写一个程序将数组[A]中的数据按从小到大的顺序排好,然后用折半查找法找出数据中x在已排好大小的数据序列中的位置。
2.
编程用弦截法求一元n次方程f(x)=0在区间[x0,x1]之间的根。
方程可取为:
1
11
121
1331
14641
···
···
···
···
···
193684126124843691
3.按以下形式打印出杨辉三角形中的各值
4用PowerPoint制作一组幻灯片(幻灯片所表述的主题自定),并用Excel绘制出图1所示的sin(x)、cos(x)函数曲线。
.
(五)实习成果:
任务一:
【编程】
[1]程序1:
题目:
一维数组[A]中存放着一组杂乱无章的数据,编写一个程序将数组[A]中的数据按从小到大的顺序排好,然后用折半查找法找出数据中x在已排好大小的数据序列中的位置。
1、算法原理:
选择排序:
第一轮将n个数中的最小数与第1个数(a[0])对调,第二轮将剩余(尚未排序)的n-1个数中的最小的数与第2个(a[1])对调;……;如此每比较一轮,即找出一个尚未排序的数中最小的数与相应位置的数对调,直到全部排列有序为止。
折半查找法:
设三个位置变量bot、top和mid
bot表示查找范围的底部,即bot初值为0;
top表示查找范围的顶部,即top初值为n-1;
求出查找范围的中间位置,用mid表示,即mid=(bot+top)/2,mid把n个数分成以a[mid]为中点的两段范围,接着进行下面的判断:
用x与a[mid]进行比较,如果两数相等,即为所求,而结束该重复操作,退出循环。
否则,若x大于a[mid],修改top=mid=1;若x小于a[mid]修改bot=mid-1。
计算范围调整后的中间位置mid=(bot+top)/2。
重复上述操作直到找到待查找的数。
2、程序流程图:
(流程图或N-S图,用word中的绘图工具)
3、变量说明:
n:
数组个数;i,j:
控制循环条件及次数;bot:
数组首元素下标;top数组尾元素下标;mid:
数组中间元素下标;x:
排序后待查找的数;pos:
被查找数在数组中位置(下标);a[N]:
存放N个数的数组;
4、使用方法:
程序运行时
(1)屏幕首先显示“请输入数组个数n:
”;用户用键盘输入数组个数n。
(2)屏幕输出提示“请输入n数:
”;用户根据提示键盘输入n个无序数据(以空格分隔数据,数据输入完毕以回车结束)。
(3)屏幕依次显示排列后的数组并输出提示“请在数组中输入要查找的数:
”;用户用键盘输入要查找的数x。
(4)屏幕输出要查找的数x在数组中的位置。
5、源程序:
#include
usingnamespacestd;
voidmain()
{intconstN=20;
inti,j,n,x,t,bot,top,mid,pos,a[N];
cout<<"请输入数组个数n:
";
cin>>n;
cout<<"请输入"<"<for(i=0;icin>>a[i];
for(i=0;ifor(j=i+1;jif(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
cout<<"排列后的数为:
"<for(j=0;jcout<cout<<"\n请在数组中输入要查找的数:
"<cout<<"x=";
cin>>x;
bot=0;top=n-1;
while(bot<=top)
{
mid=(bot+top)/2;
if(a[mid]==x)
{pos=mid;break;}
elseif(a[mid]bot=mid+1;
elsetop=mid-1;}
cout<}
6、程序运行结果:
(屏幕截图)
[2]程序2:
(小4号宋体加粗)
题目:
(5号宋体)编程用弦截法求一元n次方程f(x)=0在区间[x0,x1]之间的根。
方程可取为:
1、算法原理:
弦截法也称割线法,其几何意义是用过曲线上两点p0(x0,f(x0),p1(x1,f(x1))的割线来代替曲线,用割线与x轴交点的横座标作为方程的近似根x2再过P1点和点P2(x2,f(x2))作割线求出x2,再过P2点和点P3(x3,f(x3))作割线求出x4,余此类推,当收敛时可求出满足精度要求的xk
2、程序流程图:
主函数main
子函数equation
子函数point
子函数findroot
3、变量说明:
x1,x2:
求解区间端点;
x:
在区间[x1,x2]内求得的根;
Y:
函数x*x*x-7.8*x*x+18.5*x-11.3的值;
4、使用方法:
程序运行时
(1)屏幕首先显示“请输入x1,x2”,提示用户输入求解区间端点;用户根据提示键盘输入两个数(以空格分隔数据,数据输入完毕以回车结束)。
(2)若求解区间内有方程的根,则屏幕输出方程的一个根,否则重复
(1)的步骤。
5、源程序:
#include
#include
intmain(void)
{
floatequation(floatx);
floatpoint(floatx1,floatx2);
floatfindRoot(floatx1,floatx2);
floatx1,x2,x;
do
{
cout<<"请输入x1,x2"<cin>>x1>>x2;
}
while(equation(x1)*equation(x2)>0);
x=findRoot(x1,x2);
cout<<"方程的一个根是:
"<return0;
}
floatequation(floatx)
{
floaty;
y=x*x*x-7.8*x*x+18.5*x-11.3;
returny;
}
floatpoint(floatx1,floatx2)
{
floatx;
x=(x1*equation(x2)-x2*equation(x1))/(equation(x2)-equation(x1));
returnx;
}
floatfindRoot(floatx1,floatx2)
{floatx,y;
do
{
x=point(x1,x2);
y=equation(x);
if(y*equation(x1)>0)
x1=x;
else
x2=x;
}
while(fabs(y)>=0.0001);
returnx;
}
6、程序运行结果:
[3]程序3:
(小4号宋体加粗)
题目:
按以下形式打印出杨辉三角形中的各值
1
11
121
1331
14641
···
···
···
···
···
193684126124843691
1、算法原理:
用一个二维数组存放杨辉三角形。
以上杨辉三角形是一个10*10矩阵的下半三角(包含对角线)。
矩阵的第一列上元素和对角线上元素的值都为1。
此外,三角形中第i行上第2列到第i-1列上的元素值与上一行的元素有如下关系:
a[i][j]=a[i-1][j-1]+a[i-1][j]
2、程序流程图:
3、变量说明:
i,j:
控制循环条件及次数;
a[10][10]:
二维数组,用于存放杨辉三角形各个值;
4、使用方法:
运行程序,屏幕自动输出杨辉三角。
5、源程序:
#include
#include
usingnamespacestd;
voidmain()
{constintn=10;
inta[10][10],i,j;
for(i=0;i{a[i][0]=1;a[i][i]=1;}
for(i=2;ifor(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i{
cout<for(j=0;j<=i;j++)
cout<cout<}
}
6、程序运行结果:
(七)参考文献:
《21天学会c语言》作者:
(美)BradleyL.Jones,PeterAitken 出版社:
人民邮电出版社出版日期:
2003年3月
计算机程序设计基础(c++)作者:
景红出版社:
西南交通大学出版社出版日期:
2009年2月