1、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 using namespace std;int main() float x
2、1,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该方程的根为:x1endl; return 0;截图: 思考题及问题1更改初值,观察程序的运行结果。当x1=0时,运算截图为 如果程序总是无法结束,又不是死循环,程序应该如何修改?程序无法结束,可能因为迭代所求根总在不断地振荡,无法得到精度内的结果,可以适当的降低精度,使振荡值落在精度范围内。2编程序,输出以下图形 * * * * * * * * *1 13 1
3、35 135713579ABBBCCCCCDDDDDDD CCCCC BBB A要求应该使用双重循环。外循环体中包含两个并列的for循环语句,分别控制每行输出的空格符和非空格字符(如:星号);用cout “n”; 语句控制输出一行字符之后回车换行。源程序:#include using namespace std;int main () int i,j; for(i=1;i=5;i+) for(j=1;j=i;j+) cout0;j-) cout*; coutn; coutn; for(i=1;i=5;i+) for(j=1;j=i;j+) cout0;j-) cout*; coutn; cou
4、tn; for(i=1;i0;j-) cout ; for(j=1;j=i;j+) cout2*j-1; coutn; coutn; for(i=1;i0;j-) cout ; for(j=1;j=2*i-1;j+) cout (char)(A+i-1); coutn; for(i=1;i=3;i+) for(j=1;j=i+1;j+) cout0;j-) cout(char)(D-i); coutn; return 0;截图:思考题1如果输出10行的图形,应如何修改程序?#include #include using namespace std;int main()int i,j; for(
5、i=1;i=10;i+) for(j=1;j=i;j+) cout0;j-) cout*; coutn; coutn; for(i=1;i=10;i+) for(j=1;j=i;j+) cout0;j-) cout*; coutn; coutn; for(i=1;i0;j-) cout ; for(j=1;j=i;j+) coutsetw(2)2*j-1; coutn; coutn; for(i=1;i0;j-) cout ; for(j=1;j=2*i-1;j+) cout (char)(A+i-1); coutn; for(i=1;i=9;i+) for(j=1;j=i+1;j+) cou
6、t0;j-) cout(char)(J-i); coutn; return 0; 如果输出图形向右平移25个字符位置,程序应该如何修改?源程序:#include using namespace std;int main () int i,j; for(i=1;i=5;i+) for(j=1;j=i+25;j+) cout0;j-) cout*; coutn; coutn; for(i=1;i=5;i+) for(j=1;j=i+25;j+) cout0;j-) cout*; coutn; coutn; for(i=1;i0;j-) cout ; for(j=1;j=i;j+) cout2*j-
7、1; coutn; coutn; for(i=1;i0;j-) cout ; for(j=1;j=2*i-1;j+) cout (char)(A+i-1); coutn; for(i=1;i=3;i+) for(j=1;j=i+26;j+) cout0;j-) cout(char)(D-i); coutn; return 0;截图:3若干个数据首尾相连,构成一个圆环,找到连续的4个数之和最大的一段。要求:从键盘输入数据,当输入-1时结束输入,输出其中连续的4个数之和最大的一段的起始数据的位置及这4个数的和。源程序:#include using namespace std;int main ()
8、 int i,j,m,n=0,max=0,sum=0; int a20; couti; while(i!=-1) an=i; n+; cini; for(j=0;jmax) max=sum; m=j; cout输出圆环数据:; for(j=0;jn;j+) coutaj ; coutn从第m+1个数据开始的连续四个数据和最大,为:maxendl; return 0;截图:第二部分 自测练习1. 猜数游戏编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最
9、多可以猜10次,如果猜了10次仍未猜中的话,结束游戏并输出该数。思路-函数说明:int rand();:返回从0,MAX)之间的随机整数,这里的与你所定义的数据类型而定;需#include void srand( unsigned seed );:设置随机数种子,#include time_t time( time_t *time );:返回当前时间,#include 应用举例:srand(time(0); /根据系统时间设置随机数种子int i = rand() % N; /取得区间0,N)的整数如要产生之间随机数,则代码如下:#include using namespace std;#in
10、clude #include int main() int t; srand(time(0); /seed t = rand() % 10+ 1; / random number 1-10 cout t =10) printf(Sorry, game over!n); break; if(guess=num) printf(You are right, guess %d times.n,i); break; else if(guessnum) printf(Guess too big, try again:); else printf(Guess too small, try again:);
11、 截图:2排序编程实现将10个整数升序排列。要求:冒泡法排序。冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个
12、数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序源程序:#include using namespace std;int main () int i,j,t,a10,k; cout 输入10个整数:; for(i=0;iai; for(i=0;i10;i+) for(j=i+1;jaj) swap(ai,aj); cout输出升序排列的结果:; for(i=0;i10;i+) coutai ; coutendl; return 0;截图: 3. 检验并打印魔方矩阵在下面的55阶魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二
13、维整型数组中,然后检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。17241815235714164613202210121921311182529源程序:#includeusing namespace std;int main() int a55,i,j,k,x,z=0; for(i=0;i5;i+) for(j=0;jaij; int p=0,s=0,q=0; for(k=0,x=0;k5,x5;k+,x+) s+=a0k; q+=ax0; p+=akx; if(s=q&q=p) int y=s; for(i=1,j=1;i5,j5;i+,j+) int h=0,d=0,f=0; for(k=0,x=0;k5,x5;k+,x+) h+=aik; d+=axj; f+=akx; if(y!=h&y!=d&y!=f) z+; if(z=0) cout是endl; for(i=0;i5;i+) for(j=0;j5;j+) coutaij ; coutendl; else cout否endl; else cout否endl; return 0;截图:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1