C语言循环结构程序设计题

用while语句、do-while语句和for语句编写循环结构的程序

1.有一个计算最大公约数的算法如下:
1)输入两个正整数到m和n;
2)如果m=n输出最大公约数m程序结束;
3)若m>n则m=m-n否则n=n-m;
4)返回到2) (循环)。
用适合的循环控制语句实现这个算法。

2.修改上面的程序,使它能够输出m,n在运算构成中的变化。

3.用集成环境提供的单步执行功能,跟踪查看每个语句执行后便量的变化情况。

(1)用while语句实现

#include<stdio.h>
void main()
{
int m,n;
printf("请输入两个正整数:");
scanf("%d%d",&m,&n);
while(m!=n)
{

if(m>n)m=m-n;
else n=n-m;
printf("m=%d n=%d\n",m,n); \\输出m,n在运算构成中的变化

}
printf("最大公约数为:%d\n",m);
}

(2)用do-while语句实现

#include<stdio.h>
void main()
{
int m,n;
printf("请输入两个正整数:");
scanf("%d%d",&m,&n);
do
{
if(m>n)m=m-n;
else n=n-m;
printf("m=%d n=%d\n",m,n); \\输出m,n在运算构成中的变化
}
while(m!=n)
printf("最大公约数为:%d\n",m);
}

(3)用for语句实现
#include<stdio.h>
void main()
{
int m,n,j;
printf("请输入两个正整数:");
scanf("%d%d",&m,&n);
for(i=0,i++,i<m)
{
if(m==n)
break;
else
{
if(m>n)m=m-n;
else n=n-m;
}
printf("m=%d n=%d\n",m,n); \\输出m,n在运算构成中的变化
}
printf("最大公约数为:%d\n",m);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-04-18
这个算法程序没有错,只是需要输入两个正整数.

#include<stdio.h>
void main()
{
int m,n;
printf("请输入两个正整数:");
scanf("%d%d",&m,&n);
while(m!=n)
{
if(m>n)m=m-n;
else n=n-m;
printf("m=%d n=%d\n",m,n);
//这一句就输出了m,n在运算构成中的变化
}
printf("最大公约数为:%3d\n",m);
}

3、调试要根据你输入的数字不同,在环境中自己去做。本回答被提问者采纳
第2个回答  2008-04-18
int CommonDivisor(int m,int n)
{
while(m!=n)
{
if(m>n)
{
m-=n;
}
else
{
n-=m;
}
}
return m;
}
main()
{
int m,n,cd;
printf("\nInput M ! \n");
scanf("%d",&m);
printf("Input N !\n");
scanf("%d",&n);
cd= CommonDivisor(m,n);
printf("The CommonDivisor is %d .",cd);
}
相似回答