c++实验3程序结构和数组.docx
- 文档编号:29118901
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:19
- 大小:122.97KB
c++实验3程序结构和数组.docx
《c++实验3程序结构和数组.docx》由会员分享,可在线阅读,更多相关《c++实验3程序结构和数组.docx(19页珍藏版)》请在冰豆网上搜索。
c++实验3程序结构和数组
实验3:
C++语言程序结构、数组
说明:
所有的程序和文档都建立在学生学号_名字_第三次实验文件夹内,最终以压缩文件的形式提交到指定邮箱。
第一部分基础练习
1.用牛顿迭代法求方程:
3x3+2x2-8x-5=0,在x=1.5附近的根。
◆要求:
前后两次求出的x的差的绝对值小于10-6,则为结果。
◆思路:
如图所示,设xn为一个接近xa的近似根,过(xn,f(xn))点做切线,其切线方程为:
式中只有xn+1为未知量,将它放在等号的左边,即:
上式就为牛顿迭代公式。
源代码:
#include
#include
usingnamespacestd;
intmain()
{
floatx1,x0,f,f1;
x1=1.5;
do
{x0=x1;
f=3*x0*x0*x0+3*x0*x0-8*x0-5;
f1=9*x0*x0+4*x0-8;
x1=x0-f/f1;
}while(fabs(x1-x0)>1e-6);
cout<<"该方程的根为:
"< return0; } 截图: ◆ 思考题及问题 1更改初值,观察程序的运行结果。 当x1=0时,运算截图为 ②如果程序总是无法结束,又不是死循环,程序应该如何修改? 程序无法结束,可能因为迭代所求根总在不断地振荡,无法得到精度内的结果,可以适当的降低精度,使振荡值落在精度范围内。 2.编程序,输出以下图形 ① ********* ******* ***** *** * ② ***** **** *** ** * ③ 1 13 135 1357 13579 ④ A BBB CCCCC DDDDDDD CCCCC BBB A ◆要求 应该使用双重循环。 外循环体中包含两个并列的for循环语句,分别控制每行输出的空格符和非空格字符(如: 星号);用cout<<“\n”;语句控制输出一行字符之后回车换行。 源程序: #include usingnamespacestd; intmain() {inti,j; for(i=1;i<=5;i++) {for(j=1;j<=i;j++) cout<<""; for(j=11-2*i;j>0;j--) cout<<"*"; cout<<"\n"; } cout<<"\n"; for(i=1;i<=5;i++) {for(j=1;j<=i;j++) cout<<""; for(j=6-i;j>0;j--) cout<<"*"; cout<<"\n"; } cout<<"\n"; for(i=1;i<=5;i++) {for(j=6-i;j>0;j--) cout<<""; for(j=1;j<=i;j++) cout<<2*j-1; cout<<"\n"; } cout<<"\n"; for(i=1;i<=4;i++) {for(j=5-i;j>0;j--) cout<<""; for(j=1;j<=2*i-1;j++) cout<<(char)('A'+i-1); cout<<"\n"; } for(i=1;i<=3;i++) {for(j=1;j<=i+1;j++) cout<<""; for(j=7-2*i;j>0;j--) cout<<(char)('D'-i); cout<<"\n"; } return0; } 截图: ◆思考题 1如果输出10行的图形,应如何修改程序? #include #include usingnamespacestd; intmain() {inti,j; for(i=1;i<=10;i++) {for(j=1;j<=i;j++) cout<<""; for(j=21-2*i;j>0;j--) cout<<"*"; cout<<"\n"; } cout<<"\n"; for(i=1;i<=10;i++) {for(j=1;j<=i;j++) cout<<""; for(j=11-i;j>0;j--) cout<<"*"; cout<<"\n"; } cout<<"\n"; for(i=1;i<=10;i++) {for(j=11-i;j>0;j--) cout<<""; for(j=1;j<=i;j++) cout< (2)<<2*j-1; cout<<"\n"; } cout<<"\n"; for(i=1;i<=10;i++) {for(j=11-i;j>0;j--) cout<<""; for(j=1;j<=2*i-1;j++) cout<<(char)('A'+i-1); cout<<"\n"; } for(i=1;i<=9;i++) {for(j=1;j<=i+1;j++) cout<<""; for(j=19-2*i;j>0;j--) cout<<(char)('J'-i); cout<<"\n"; } return0; } ②如果输出图形向右平移25个字符位置,程序应该如何修改? 源程序: #include usingnamespacestd; intmain() {inti,j; for(i=1;i<=5;i++) {for(j=1;j<=i+25;j++) cout<<""; for(j=11-2*i;j>0;j--) cout<<"*"; cout<<"\n"; } cout<<"\n"; for(i=1;i<=5;i++) {for(j=1;j<=i+25;j++) cout<<""; for(j=6-i;j>0;j--) cout<<"*"; cout<<"\n"; } cout<<"\n"; for(i=1;i<=5;i++) {for(j=31-i;j>0;j--) cout<<""; for(j=1;j<=i;j++) cout<<2*j-1; cout<<"\n"; } cout<<"\n"; for(i=1;i<=4;i++) {for(j=30-i;j>0;j--) cout<<""; for(j=1;j<=2*i-1;j++) cout<<(char)('A'+i-1); cout<<"\n"; } for(i=1;i<=3;i++) {for(j=1;j<=i+26;j++) cout<<""; for(j=7-2*i;j>0;j--) cout<<(char)('D'-i); cout<<"\n"; } return0; } 截图: 3.若干个数据首尾相连,构成一个圆环,找到连续的4个数之和最大的一段。 ◆要求: 从键盘输入数据,当输入-1时结束输入,输出其中连续的4个数之和最大的一段的起始数据的位置及这4个数的和。 源程序: #include usingnamespacestd; intmain() { inti,j,m,n=0,max=0,sum=0; inta[20]; cout<<"请输入圆环数据: "; cin>>i; while(i! =-1) { a[n]=i; n++; cin>>i; } for(j=0;j { sum=a[j]+a[(j+1)%n]+a[(j+2)%n]+a[(j+3)%n]; if(sum>max) {max=sum; m=j; } } cout<<"输出圆环数据: "; for(j=0;j { cout< } cout<<"\n从第"< "< return0; } 截图: 第二部分自测练习 1.猜数游戏 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏并输出该数。 思路-函数说明: intrand(); : 返回从[0,MAX)之间的随机整数,这里的MAX与你所定义的数据类型而定;需#include voidsrand(unsignedseed); : 设置随机数种子,#include time_ttime(time_t*time); : 返回当前时间,#include 应用举例: srand(time(0)); //根据系统时间设置随机数种子 inti=rand()%N; //取得区间[0,N)的整数 如要产生1~10之间随机数,则代码如下: #include usingnamespacestd; #include #include intmain() { intt; srand(time(0)); //seed t=rand()%10+1; //randomnumber1-10 cout< return0; } 源程序: #include"stdio.h" #include"stdlib.h" voidmain() { intnum=rand()%100; intguess; inti=0; printf("Guessanumber(1-100): "); while (1) { scanf("%d",&guess); i++; if(i>=10) {printf("Sorry,gameover! \n"); break; } if(guess==num) { printf("Youareright,guess%dtimes.\n",i); break; } elseif(guess>num) printf("Guesstoobig,tryagain: "); else printf("Guesstoosmall,tryagain: "); } }截图: 2.排序 编程实现将10个整数升序排列。 要求: 冒泡法排序。 冒泡排序(BubbleSort)的基本概念是: 依次比较相邻的两个数,将小数放在前面,大数放在后面。 ●即在第一趟: 首先比较第1个和第2个数,将小数放前,大数放后。 然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。 至此第一趟结束,将最大的数放到了最后。 ●在第二趟: 仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。 ●如此下去,重复以上过程,直至最终完成排序 源程序: #include usingnamespacestd; intmain() {inti,j,t,a[10],k; cout<<"输入10个整数: "; for(i=0;i<10;i++) cin>>a[i]; for(i=0;i<10;i++) for(j=i+1;j<10;j++) if(a[i]>a[j]) swap(a[i],a[j]); cout<<"输出升序排列的结果: "; for(i=0;i<10;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 实验 程序结构 数组
![提示](https://static.bdocx.com/images/bang_tan.gif)