当前位置:文档之家› 实验6 循环结构程序设计

实验6 循环结构程序设计

实验6 循环结构程序设计
一.实验目的
1.掌握在设计条件型循环结构时,如何正确地设定循环条件。

2.掌握如何正确地控制计数型循环结构的循环次数。

3.练习并掌握选择结构与循环结构的嵌套、多重循环的应用。

4.掌握在程序设计中用循环的方法实现一些常用算法,加强调试程序的能力。

二.实验要求
1.复习while、do-while、for语句和continue、break语句。

2.能够用流程图表示实验题目的算法。

3.能够独立调试运行实验题目。

4.本实验要求4学时完成。

三.实验内容和步骤
题目1:分别用while循环和for循环计算:1+2+3+…+100=?
要求:写出程序并上机查看运行结果。

题目2:输入一行字符,分别统计出其中大小写英文字母、空格、数字和其他字母的个数。

要求:程序填空并写出2组运行结果。

01#include <stdio.h>
02#include <conio.h>
03#include <ctype.h>
04main( )
05{
06char c;
07int letter=0,capital=0,lower=0,space=0,digital=0,other=0;
08printf("\ninput a line character :\n");
09while((c=getchar())!='\n')
10{
11if( 【1】) /*统计大小写字母的个数*/
12{
13letter++;
14if ( 【2】)
15lower++; /*统计小写字母的个数*/
16}
17else if( 【3】)
18space++; /*统计空格的个数*/
19else if( 【4】)
20digital++; /*统计数字的个数*/
21else
22other++; /*统计其他字符的个数*/
23}
24capital=letter-lower;
25printf("Letter: %d (Capital: %d Lowercase: %d)\n",letter,capital,lower);
26printf("Spaces: %d\nDigital : %d\nOther : %d\n",space,digital,other);
27getch();
28}
题目3:求两个正整数的最大公约数和最小公倍数。

分析:求两个正整数的最大公约数采用辗转相除法:
①输入正整数m和n,保证m不小于n;
②如果n≠0,则求r=m%n,然后m=n,n=r;重复此操作直到n=0;
③如果n=0,则此时m就是最大公约数,而最小公倍数是这两数之积除以这两数的最
大公约数得到的商。

要求:程序填空并写出2组运行结果。

01#include <stdio.h>
02#include <conio.h>
03main( )
04{
05int m,n,r,a;
06printf("\nInput 2 positive integer:\n");
07scanf("%d%d", 【1】);
08a= 【2】;
09if(m<n)
10{
11m=m+n;
12n=m-n;
13m=m-n;
14}
15while(n!=0)
16{
17r= 【3】;
18m=n;
19n=r;
20}
21printf("The largest divisor is : %d\n", 【4】); /*输出最大公约数*/
22printf("The smallest common multiple is : %d\n",a/m); /*输出最小公倍数*/
23getch();
24}
题目4:在屏幕上打印出下三角的乘法表,如图6.1。

试着完成下面的程序,并查看运行结果是否正确。

图6.1 乘法表
01#include <stdio.h>
02#include <conio.h>
03main( )
04{
05int i,j;
06for(i=1;i<=9;i++)
07{
08for(j=1; 【1】;j++)
09printf("%d*%d=%-4d",i,j, 【2】);
10printf("\n");
11}
12getch();
13}
题目5:在屏幕上打印出1000以内的素数,每行打印出10个,并统计个数。

要求:程序填空并写出运行结果。

01#include <stdio.h>
02#include <conio.h>
03main( )
04{
05int i,j,prime,s=0;
06for(i=2; 【1】;i++)
07{
08prime=1;
09for(j=2;j<=i-1;j++)
10{
11if( 【2】)
12{
13prime=0;
14break;
15}
16}
17if( 【3】)
18{
19printf("%6d",i);
20s++;
21if( 【4】)
22printf("\n");
23}
24}
25printf("\nThe sum of prime is :%d",s);
26getch();
27}
题目6:打印出图6.2所示图案。

要求:程序填空并写出运行结果。

图6.2 *号图案
01#include<stdio.h>
02#include<conio.h>
03main()
04{
05int i,j;
06char space='';
07for(i=0;i<=3;i++)
08{
09for(j=1; 【1】;j++)
10printf("%c",space);
11for(j=1;j<=3;j++)
12printf("*");
13for(j=1; 【2】;j++)
14printf("%c",space);
15for(j=1;j<=3;j++)
16printf("*");
17【3】;
18}
19}
题目7:编程把下列数列延长到第50项:
1、2、5、10、21、42、85、170、341、682、........屏幕输出时要求格式对齐。

要求:上机运行并写出运行结果。

01#include <stdio.h>
02#include <conio.h>
03/*奇数项= 前一偶数项×2+1,偶数项=前一奇数项×2*/ 04main()
05{
06int i;
07double result;
08result=0;
09for (i=1;i<=50;i++)
10
{ 11
if (i%2==1) 12
result=result*2+1; 13
else 14
result=result*2; 15
printf("%-15.0f",result); 16 if (i%5==0) 17
printf("\n"); 18
} 19 }
四.实验思考
1. 求解1000以内的完数。

如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,
例如:6的因子为1,2,3,且1+2+3=6,因此6是一个“完数”。

计算并输出1000以内的所有“完数”之和,输出形式为:完数1+完数2+…=和值。

2. 计算分数序列 ,13
21,813,58,35,23,12 前20项之和。

3. 在嵌套循环结构中如何提高程序的效率?
4. 如何避免死循环?。

相关主题