(实验三)循环结构程序设计

更新时间:2024-03-26 16:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验三 循环结构程序设计

一、实验目的

? ? ? ? ?

熟练掌握while语句及其嵌套形式的使用 熟练掌握do-while语句及其嵌套形式的使用 熟练掌握for语句及其嵌套形式的使用

了解并掌握continue与break语句在循环结构中的作用 熟悉循环结构程序段中语句的的执行过程

二、实验环境

? 个人计算机一台,PIII500(或同等性能)以上CPU,128MB以上内存,500MB以

上硬盘剩余空间。

? Windows2000、Windows XP或Win 7操作系统 ? Code::Blocks(版本12.11或近似版本,英文版)

三、实验内容

1. 数列求和

在花括号({})之间填写适当的语句,将程序补充完整实现下述功能,并上机运行验证。 程序的功能从键盘上输入一个整数n,并计算以下数列的前n项和:

例如, 输入:10

输出:s=14.266510

/*example-11.c*/ #include main() {

/*求前n项和,结果存放在s当中*/ /*可根据需要填入任意多条语句*/

int n, i; float s;

scanf(\

1

}

printf(\

【解题提示】

使用for语句或while语句皆可。注意运算对象的类型,“1/2”的值是0而不是0.5。 2. 素数

在花括号({})之间的横线中填写适当的语句,将程序补充完整实现下述功能,并上机运行验证。

程序的功能是从键盘上输入一个整数n,就n(包括n)以内的素数。素数是指:只能被1和它本身整除的数(除了1以外,1不是素数)。

例如, 输入:50

输出:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

/*example-12.c*/ #include main() { }

printf(\以下是小于%d的素数:\\n\for(i=2; ; i++) { }

printf(\

for(j = 2; ; j++) { }

if( ) printf(\

if(i % j == 0)

/*列举2~n之间的所有数*/

int n, i, j;

printf(\scanf(\

/*下面这个循环判断i是否是素数*/

/*如果i能够被j整除,就意味着i不是素数,循环可以提前终止*/

/*满足括号中的条件意味着n是素数,则输出*/

【解题提示】

我们可以有以下思路用于判断某一个整数是否为素数:

给定一个整数n,我们可以从2开始至n-1逐一检查在这范围之内的整数是否可以被n整除。如果可以,则说明整数n不是素数。如果从2开始至n-1范围之内的所有整数都不可以被n整除,那说明整数n符合素数的定义,所以整数n是一个素数。

判断整数n能否被整数m整除的方法是:n%m==0。如果n对m取余等于0,那么n能够被m整除;反之,n不能被m整除。

2

3. 水仙花数

在花括号({})之间填写适当的语句,将程序补充完整实现下述功能,并上机运行验证。 程序的功能是求出所有的“水仙花数”。所谓的“水仙花数”是指这样的一个三位数:其各位数字的立方和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33。

/*example-13.c*/ #include main() { }

【解题提示】

(1)“水仙花数”是三位数,因此只能是100~999之间的数。

(2)列举100到999之间的每个数字,判断它是否是水仙花数,如果是就输出,不是就不输出。

(3)“水仙花数”各位数字的立方和等于该数本身,因此判断一个数n是不是“水仙花数”,要获得它各个位上的数字,然后求立方和,看立方和是否等于n。

四、总结与思考

循环结构是程序设计的三大基本控制结构之一,C语言中用于实现选择结构的语句有: ? while语句 ? do-while语句 ? for语句

此外,还要注意continue语句和break语句在循环结构中的作用。编程时,可以不使用continue语句和break语句,但笔试中一定会考查到。

在完成以上实验的基础上,有兴趣的同学可以在课后思考以下问题:

思考题:打印等腰三角形

在花括号({})之间填写适当的语句,将程序补充完整实现下述功能,并上机运行验证。 程序的功能是从键盘上输入一个整数n,然后打印出n层有高的等腰三角形(由“*”组成)。

例如,当n为5时,如图1所示。

3

图1 5层高的等边三角形

/*think-3.c*/ #include main() { }

【解题提示】

实际上,这个等腰三角形是由“*”和空格两种符号构成。我们要做的,就是判断出每层要输出多少个“*”和空格。

无论多高的等腰三角形,第一层都是1个“*”,第二层是3个“*”,第三层是5个“*”????最后一层都是“*”。很明显,这是一个公差为2的等差数列。等差数列的第n项是:

Sn = S1+ (n-1) * d(d为公差)

因此,n层高的等腰三角形,在第n层就要打印出1+(n-1)*2个“*”,这是打印“*”号最多的一层。那么,在第x层(x

(1)求出该成要打印的星号数量:1+(x-1)*2

(2)求出该成要打印的空格数量:y = 1+(n-1)*2) – (1+(x-1)*2 (3)先打印出一半(y/2个)的空格 (4)接着打印出1+(x-1)*2个星号

4

(5)最后再打印出另一个(y/2个)的空格 (6)最后再打印一个回车换行符(\\n)

由于第(5)步打印出的空格不可见,所以可以省略。

5

本文来源:https://www.bwwdw.com/article/ytcr.html

Top