实验5 循环控制
一、实验目的
熟悉掌握用 while 语句, do-while 语句和 for 语句实现循环的方法。掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。进一步学习调试程序。
二、实验内容
1、输入两个正整数m和n,求其最大公约数和最小公倍数 说明:
(a)最大公约数:能够被m和n同时整除的最大正整数 (b)最小公倍数:m和n相乘的积除以最大公约数
(c)使用for循环,将m和n同时除以1到m(m为m和n两者中较小者),直到找出最大的正整数即为最大公约数
(d)输出格式如下:
The greatest common divisor is *! The least common multiple is *!
#include
int m,n,temp; int i; int great,least; printf(\ scanf(\ if( m>n ) { }
for( i=1;i<=m;i++ ) {
if( n%i==0 && m%i==0 )
great=i; temp=m; m=n; n=temp;
参考程序如下:
}
least=m*n/great;
printf(\ printf(\}
2、求1!+2!+??+20! 说明:
(a)首先要求出每一项的n!的值 (b)然后把各项相加得到所求的值
(c)存储求和运算结果的变量的初始值应为0 (d)存储求积运算结果的变量的初始值应为1 参考程序如下:
①使用while循环 #include
float sum=0; float mid=1; int n=1; while( n!=21 ) { }
printf(\}
②使用for循环 #include
float sum=0; float mid=1; int n;
for( n=1;n<=20;n++ ) {
mid=mid*n; mid=mid*n; n++;
sum=sum+mid;
}
sum=sum+mid;
printf(\}
3、用牛顿迭代法求方程 2x-4x+3x-6=0 在1.5附近的根。
在得到正确结果后,请修改程序使所设的 x 初值由 1.5改变为 100、1000、10000,再运行,观察结果,分析不同的 x 初值对结果有没有影响,为什么?
修改程序,使之能输出迭代的次数和每次迭代的结界,分析不同的 x 初始值对迭代的次数有无影响。
参考程序如下:
#include
float x,x0,f,f1; x=1.0; do
{ x0=x;
f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x=x0-f/f1;
}while(fabs(x-x0)>=1e-5); printf(“%6.2f”,x); }
32 实验6 数组
一、实验目的
( 1 )掌握一维数组和二维数组的定义、赋值和输人输出的方法; ( 2 )掌握字符数组和字符串函数的使用; ( 3 )掌握与数组有关的算法(特别是排序算法)。
二、实验内容编程序并上机调试运行。
1、从键盘输入10个整数,对这个十个数进行排序,并输出。 说明:
(a)将这10个整数存入一个含有10个元素的一维数组中
(b)冒泡法:从第一个数开始依次让相邻的两个数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍比较后,最大的数已放在最后,第二遍只需考虑剩下的数,以此类推直到最后两个数比较后就可以完成排序。
(c)比较完成后将数组中元素依次输出 参考程序如下:
#include
int num[10]; int i,j; int temp;
printf(\ for( i=0;i<10;i++ )
scanf(\
for( i=0;i<=8;i++ ) {
for( j=0;j<9-i;j++ ) { }
if( num[j]>num[j+1] ) { }
temp=num[j]; num[j]=num[j+1]; num[j+1]=temp;
相关推荐: