读书破万卷 下笔如有神
上机实验五 循环结构程序设计
学号:
姓名:
一.目的要求
1. 掌握用for、while、do-while语句实现循环的基本技巧; 2. 掌握循环次数不确定的解题技巧;
3. 掌握break语句、continue语句在循环语句中的作用以及不同之处; 4. 掌握多重循环的编程技巧。
二.实验内容
【实验题1】. 程序填空:分别用for、while、do-while语句编程,输出菲波那契数列的前20项,要求每行输出10项。
源程序1: 用for语句实现
#include
思考:line 5和line 8行中printf()函数的格式控制符均为”m”, 假如均改为”%d”, 输出结果有何不同? 输出的数据无间隔
源程序2: 用while语句实现
#include
{ int i,x1,x2,x; x1=x2=1;
printf(\ /*输出前2项*/ i= 3 ;
while( i<=20 ){ x=x1+x2;
printf(\ if( !(i) ) printf(\ /*每行输出10项*/
读书破万卷 下笔如有神
x1= x2 ; x2= x ; i++ ; } }
源程序3: 用do-while语句实现
#include
【实验题2】程序填充:输入double型变量x的值,计算下列算式的值,直到最后一项的绝对值小于10-5。
x2x3x4x5x6s?x??????...
2!3!4!5!6!源程序如下:
#include
编译、连接并运行程序,输入0.5, 则显示: ;输入 1 ,则显示: ;输入1.7,则显示: 。 略
line 21中的表达式“f*=i”,等同于表达式“ f=f*i ”;同理,line 11中的表达式“s= s+item”也可替换为“ s+=item ”.
【实验题3】 程序填空:验证哥德巴赫猜想——任何一个大于6的偶数均可表示为两个素数之和。例如:6=3+3, 8=3+5,10=5+5,…,18=7+11。要求将6-100之间的偶数均表示为素数之和,一行输出5组。 【分析】
1. 本程序采用双层循环:外层循环负责对6~100之间的偶数逐个输出加法式子;内层循环负责为一个特定的偶数k, 找出相应的素数a和b.
2. 对于偶数k(k>=6),符合条件的两个素数a和b必然位于区间[3, k-1].(为什么不从2开始?) 3. 由于k=a+b,通过内层循环试探性地找出第一个加数a后,第二个加数b可用推算而得,再调用函数prime()来判断a、b是否是素数,如果两者均为素数,则停止寻找素数,并输出k=a+b.
源程序如下:
#include
【实验题4】程序填空:输入一个整数,从高位开始逐位分割各位数字,如输入7358,则输出 7 3 5 8(20XX年春笔试真题) 【分析】
我们已经学习了如何用整除运算和求余运算求出一个整数number的位数、以及从低位到高位的各位数字。本题则是从高位向低位逐步分解各个数位,关键是先求出这个整数是几位数?