c语言循环控制语句 实验报告 求最大公约数 最小公倍数,贵州大学C语言实验报告-Ex05-循环控制.doc...

贵州大学C语言实验报告-Ex05-循环控制

实验课程名称 C语言实验报告

实验项目名称 循环控制

专 业 班 级 电子信息科学与技术08级1班

学 生 姓 名

学 号

指 导 教 师

理 学 院

实验时间:2010年5月13日

实验5 循环控制

实验目的

熟悉掌握用while语句,do-while语句和for语句实现循环的方法。

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

进一步学习调试程序。

2.实验内容和步骤

编程序并上机调试运行。

输人两个正整数rn和n,求它们的最大公约数和最小公倍数。(本题是教材第6章习题6.l)

程序如下:

#include

void main()

{

int p,r,n,m,temp;

printf("Please input two positive integers:\n");

scanf("%d,%d",&n,&m);

if(n

{temp=n;n=m;m=temp;}

p=m*n;

while(m!=0)

{r=n%m;n=m;m=r;}

printf("The greatest common divisor is:%d\n",n);

printf("The lease common multiple is:%d\n",p/n);

}

分析:

这段程序是以if的条件语句和while的当型循环语句共同实现的。先将输入的两个正整数按大小排序,之后将乘积保存在p中,然后当m不为0时做循环,将n对m取余,由于r为整型,故r为余数的整数部分,再将m的值赋给n,r的值赋给m,当m为0时,跳出循环,此时的n就是最大公约数,p/m为最小公倍数,最后将结果输出。

在运行时,输人的值m>n,观察结果是否正确。

再输入时,使m

结果是正确的。

修改程序,不论m和n为何值(包括负整数),都能得到正确结果。

修改程序为:

#include

#include

void main()

{

int p,r,n,m,temp;

printf("Please input two integers:\n");

scanf("%d,%d",&n,&m);

n=fabs(n);m=fabs(m);

if(n

{temp=n;n=m;m=temp;}

p=m*n;

while(m!=0)

{r=n%m;n=m;m=r;}

printf("The greatest common divisor is:%d\n",n);

printf("The lease common multiple is:%d\n",p/n);

}

分析:由于最大公约数和最小公倍数都是正值,因此只要将输入的任意整数取绝对值之后再进行之前的程序运算即可。

输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。(本题是教材第6章习题6.2)

程序如下:

#include

void main()

{

char c;

int letters=0,space=0,digit=0,other=0;

printf("Please input a row char:\n");

while((c=getchar())!='\n')

{

if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++;

else if(c==' ') space++;

else if(c>='0'&&c<='9') digit++;

else other++;

}

printf("letters:%d\nspace:%d\ndigit:%d\nother:%d\n",letters,space,digit,other);

}

分析:

本程序也是用当型循环来实现的,该算法是将从键盘输入的一行字符进行逐个扫描,当字符为\0时跳出循环。如果不是\0则执行循环体里面的程序,对每个字符判断如果是字母,则字母数加1,如果是空格,则空格数加1,如果是数字,则数字数加1,如果是其它字符,则其它字符数加1,最后将结果输出。

在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数.

程序修改为:

#include

voi

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值