5.有一对兔子,从第3个月起每个月生一对兔子,小兔子从第3个月起每个月又生一对兔子。假设所有兔子都不死,编程序计算每个月的兔子是多少对?(求20个月)。
分析:从第3个月开始,下个月兔子的对数为本月兔子的对数与上月兔子对数之和。这样可得出该序列的规律是:从第3项开始,该项的值为前两项之和。
兔子数目的规律是:
1、1、2、3、5、8、13、21、……。 解:
#include
int f1,f2,f3; int i; f1=f2=1;
for(i=3;i<=20;i++)
{ //A f3=f1+f2;
cout<
思考:
? 将程序A行中改写为“for(i=20;i>=3;i--)”后,观察程序运行结果; ? 画出本例的流程图。
6.编写程序打印如图4-2所示蝶形图形。
分析:此图形为上下对称结构,用-3~3的整数标识行号i,则每行字符“B”的个数可表示为6*|i|+1。每行字符“B”前空格的个数随着|i|的增大而减少,空格的个数要大于0。
解:
# include
BBBBBBBBBBBBBBBBBBBBB void main() BBBBBBBBBBBBBBB BBBBBBBBB {
BBB int i,j,k,d;
BBBBBBBBB for(i=-3;i<=3;i++) BBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBB {
图4-2 蝶形
}
cout< cout< 思考: ? 将程序中的“for(j=1;j<=10-3*d;j++)”用“for(j=1;j<=30-3*d;j++)”改写后,观察程序运行结果。 ? 将程序中的“for(i=-3;i<=3;i++)”用“for(i=-10;i<=10;i++)”改写后,观察程序运行结果。 ? 将程序中的“for (k=1;k<=6*d+3;k++)”用“for (k=1;k<=10*d+3;k++)”改写后,观察程序运行结果。 7.将下列do-while结构修改为while结构,分别观察输出结果。 #include int a=0; //A do { a++; cout<<\ } while(a>1); } 思考: ? 将条件while(a>1)改为while(a),分别观察输出结果。 ? 将A语句改为a=-10,while(a>1)改为while(a),计算循环执行的次数。 8.从键盘输入任意多个整数(-999为结束标志),计算其中正数之和。 分析:采用转向语句break和continue实现。break在循环体中用于退出本层循环;continue用于结束本次循环。 解: #include void main() { int x,s=0; while(1) { cin>>x; if (x==-999) break; if (x<0) continue; s=s+x; } cout<<\} //A //B 思考: ? 交换A行和B行的位置,观察程序运行结果。 ? 修改程序“输入任意多个整数(-999为结束标志)”为“直到包含20个正数时”,计算正数之和。 (二)完成实验项目 1.编程序打印一个如图4-3所示的数字金字塔: 图4-3 数字金字塔 2.输入一行字符,分别统计出其中英文字母、空格、数字字符、其它字符及单词的个数。 3.设有一个数列,它的前四项为0、0、2、5,以后每项分别是其前四项之和,编程求此数列的前20项。 4.求π近似值的公式为: 2n2n2244213352n?12n?1 其中,n=1、2、3?设计一个程序,求出当n=1000时的π的近似值。 5.求出1~599中能被3整除,且至少有一位数字为5的所有整数。如15、51、513均是满足条件的整数。 ?????????四、课后作业 1. 设用100元钱买100支笔,其中钢笔每支3元,圆珠笔每支2元,铅笔每支0.5元,问钢笔、圆珠 笔和铅笔可以各买多少支(每种笔至少买1支)? 2. 撰写实验报告。 五、实验机时 2个标准学时。 实验五 数组 一、目的和要求 1. 掌握一维数组、二维数组、字符数组的定义、初始化赋值、数组元素的引用方法; 2. 掌握求最大、小值、平均值、排序的方法以及有序数组的查找、增加、删除的编程方法; 3. 初步掌握字符串处理函数的使用方法以及字符串复制、连接、测长等程序的编写方法; 4. 掌握数组的典型应用。 二、实验设备及分组 1. Windows2000以上操作系统; 2. Visual C++6.0语言环境; 3. 每人一台PC机。 三内容和步骤 (一)验证实验程序 1.应用一维数组,对10个数进行冒泡排序,使其按照从大到小的顺序输出。 分析:n个数冒泡排序的方法是将第一个数与其后面的数逐个进行比较,发现大者进行交换,完成后最大的数就放到了第一个的位置;第二个数与其后面的数逐个进行比较,发现大者进行交换,完成后次大的数就放到了第二个的位置;如此循环,直到第n-1个数与第n个数进行比较,发现大者进行交换。 解: #include { cout<<\ cin>>a[i];