实 验 四 循环结构程序设计

  • 格式:doc
  • 大小:82.50 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四循环结构程序设计

一、实验目的

1. 熟练掌握用while、do…while语句和for语句实现循环的方法

2. 掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递

推等)

3. 进一步学习调试程序。

二、实验环境:VC++ 6.0

三、实验学时:4学时

四、实验内容及步骤

提示:请同学们每完成一道题目,都搞清楚循环语句(while、do_while、for)的执行流程,进而分析出该循环语句的功能及实现策略。

题目1:使用for循环计算:1+2+3+…+100=?写出程序及运行结果。

题目2:用while循环求n!,其中n的数值从键盘输入(1--9)。程序填空,并分析代码。#include

#include

void main( )

{

int n ; //定义整型变量n,用于输入数据

int i ; //定义整型变量i,用于控制循环执行次数

long fac ; //定义长整型变量fac,用于存放结果

【1】; //为变量fac赋初值

do

{ printf(“请输入一个1-9的自然数: “);

scanf(“%d” , &n) ;

}while( n<1 || n>9) ; //如果输入的n小于1或大于9,重新执行循环体

//以上do-while循环可以保证输入的n为1-9的自然数,才进行下边的计算

i=1;

while(i<=n) //注意,此处没有分号

{

fac=fac*i;

i++;

}

printf(“ %d ! = %ld\n” , n , fac ) ;

}

某次运行结果见图:

题目3:找出所有的水仙花数。(水仙花数是三位正整数,其各位立方和等于该数本身)

本题采用穷举法来解决,将所有的三位数(100-999)逐一进行判断,看是否满足要求。

#include

#include

void main( )

{

int num;

int a,b,c ; //分别表示待判断数据num的个位、十位、百位

for( num=100; num<1000;num++)

{

a= num % 10 ;

b=(num/10)%10;

c=num/100 ;

if (【1】) //如果满足条件,就是水仙花数

printf(“%5d” , num ) ;

}

}

运行结果见图:

题目4:输入一行字符,分别统计出其中大小写英文字母、空格、数字和其他字母的个数。要求:程序填空并写出1组运行结果。

#include

#include

#include

main( )

{

char c;

int letter=0,capital=0,lower=0,space=0,digital=0,other=0;

printf("\ninput a line character :\n");

while((c=getchar())!='\n') //逐个采集字符,知道遇到回车为止

{

if(isalpha(c)) /*统计大小写字母的个数*/

{

letter++;

if ( islower(c) ) //等价于c>=’a’ && c<=’z’,使用了库函数islower( )

lower++; /*统计小写字母的个数*/

}

else if( c==' ' )

space++; /*统计空格的个数*/

else if( isdigit(c) )

digital++; /*统计数字的个数*/

else

other++; /*统计其他字符的个数*/

}

capital=letter-lower;

printf("Letter: %d (Capital: %d Lowercase: %d)\n", letter, capital, lower);

printf("Spaces: %d\nDigital : %d\nOther : %d\n",space,digital,other);

getch();

}

某次运行结果见图:

题目5:在屏幕上打印出下三角的乘法表,如图。试着完成下面的程序,并查看运行结果是否正确。

#include

#include

main( )

{

int i,j;

for(i=1;i<=9;i++)

{

for(j=1; 【1】;j++)

printf("%d*%d=%-4d",i,j, 【2】);

printf("\n");

}

getch();

}

题目6:打印出如图所示图案。

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

#include

#include

main()

{

int i,j;

char space='';

for(i=0;i<=3;i++)

{

for(j=1; 【1】;j++)

printf("%c",space);

for(j=1;j<=3;j++)

printf("*");

for(j=1; 【2】;j++)

printf("%c",space);

for(j=1;j<=3;j++)

printf("*");

【3】;

}

}

题目7:求两个正整数的最大公约数和最小公倍数。

分析:求两个正整数的最大公约数采用辗转相除法:

①输入正整数m和n;

②如果n≠0,则求r=m%n,然后m=n,n=r;重复此操作直到n=0;

③如果n=0,则此时m就是最大公约数,而最小公倍数是这两数之积除以这两数的最

大公约数得到的商。

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

#include

#include

main( )

{

int m,n,r,a;

printf("\nInput 2 positive integer:\n");

scanf("%d%d", 【1】);

a= 【2】; //a中保存最初m和n的乘积

while(n!=0)

{

r= 【3】;

m=n;

n=r;

}

printf("The largest divisor is : %d\n", 【4】); /*输出最大公约数*/

printf("The smallest common multiple is : %d\n",a/m); /*输出最小公倍数*/ getch();

}