C++流程图问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 21:53:54
转换成程序
希望能给出每个部分的解释

首先说下流程图的各个部分的意思,其中椭圆形的START和END代表程序的起止部分,是不对应代码的;方形和菱形的部分是程序的具体运行过程,方形代表顺序操作,菱形代表判断语句;
下面是该流程图对应的代码,各个部分对应的代码都有注释,该程序用于计算两个输入数字的最大公约数。

#include<iostream>
using namespace std;
int main(){
// START
int m,n,r;//定义输入变量m,n和中间量r
bool flag;//定义判断循环的判断条件
// input m,n
cin>>m>>n;//输入变量m,n
// r=m%n
r=m%n;//计算r的值,是m除以n的余数
flag=true;//给循环判断条件赋值
//判断r是否为0
while (flag)//对应菱形中的判断
{
flag=false;//控制循环

//当r不等于0的时候(true)
if(r!=0)
{
m=n;
n=r;
r=m%n;
flag=true;//控制循环

}

//当r等于0的时候(false)
else
{
//输出n,即输入数字的最大公约数
cout<<n<<endl;
}
}
//END
return 0;

}

首先要说明你这个流程图有问题,2不等于0恒为真。是个死循环。咱们姑且认为2就是R。

第一个start是程序入口,每个程序都有它的开始执行的地方,就是这里

第二个方框表示,要求输入m和n的值。

第三个方框表示,执行m模n并把结果保存在r里面。(%为求模运算,即求m除以n的余数)

第四个菱形框表示,判断(所有菱形框都表示判断)r是否不等于0,不等于时走