求最大公约数&最小公倍数、datatype类型处理char,int...

来源:互联网 发布:俄罗斯老婆的感受 知乎 编辑:程序博客网 时间:2024/05/17 07:49

/*8.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。*/
/*6.1 输入两个正整数m和n,求其最大公约数和最小公倍数*/
解答:
● 这两个题要求完成的任务相同,即计算并输出两个整数的最大公约数和最小公倍数。*/
● 计算两个整数的最小公倍数的数学方法是:辗转相除法,具体方法如下:*/
● 例:n=54,m=72;
步骤1:计算n除以m的余数,记作r,则r=n%m=54%72=54
步骤2:将前一次的除数作为被除数即令n=m ,则n被赋值72
步骤3:将前一次的余数作为除数即令m=r,则m被赋值为54

步骤4:再次计算计算n除以m的余数,则r=n%m=72%54=18
步骤5:将前一次的除数作为被除数即令n=m ,则n被赋值54
步骤6:将前一次的余数作为除数即令m=r,则m被赋值为18

步骤7:再次计算计算m除以n的余数,则r=n%m=54%18=0
步骤8:将前一次的除数作为被除数即令n=m ,则n被赋值18
步骤9:将前一次的余数作为除数即令m=r,则m被赋值为0

此次计算的余数r为0,则此时的除数18(现已存入变量n中)就是原始数据54、72的最大公约数。

观察上述求解两整数的最大公约数的步骤,可看出步骤4、5、6和步骤7、8、9皆是对步骤1、2、3中算法的重复。
即反复用前一次的除数作被除数,前一次的余数作除数,计算出新的余数,直到余数为0为止,此时的除数就为
所求的原始两个整数的最大公约数。可用如下循环语句实现:
while(m!=0){r=n%m; n=m; m=r;}; 循环结束时,变量n中的值为所求的最大公约数。(即最后一次除法的除数值)

●计算两整数的最小公倍数的数学算法为: 原始整数相乘/其最大公约数
如两整数的原始值相乘之积用p表示,则p/两整数的最小公倍数。
●6.1题程序:是由一个主函数实现求两整数的最大公约数和最小公倍数。
main()
{int p,r,n,m,temp;
printf(" n,m:");
scanf("%d,%d",&n,&m);
/* if(n p=n*m; /*计算出两整数原始值的乘积值,保存在变量p中,用于后边计算两数的最小公倍数。*/
while(m!=0)/*该循环是依据辗转相除法计算两整数的最大公约数,循环结束时,变量n中的值为所求的最大公约数。*/
{r=n%m;
n=m;
m=r;
}
printf(":%d/n",n); /*输出最大公约数*/
printf(":%d/n",p/n); /*计算并输出最小公倍数,用:两数的原始值的乘积p除以两数的最大公约数n得出最小公倍数*/
}

 ●8.1 题程序:要求由两个函数分别实现求解两整数的最大公约数和最小公倍数。
/*求两整最大公约数的函数f1*/
/*调用函数时,通过参数传递将两个整数传递给变量a,b,函数体通过一个循环求得两个整数的最大公约数,并将其值返回*/

int f1(int a,int b)
{ int r;
while(b!=0)
{r=a%b;
a=b;
b=r;
}
return a; /*返回两整数的最大公约数*/
}

/*求两整数的最小公倍数的函数f2*/
int f2(int t1,int t2)
{ int x,y;
x=f1(t1,t2); /*调用函数f1计算两整数的最大公约数*/
y=t1*t2/x; /*计算两整数的最小公倍数*/
return y; /* 返回存放于变量t1,t2中的两整数的最小公倍数*/
}

/*主函数main(),通过调用函数f1,f2求得两整数的最大公约数和最小公倍数*/
main()
{ int m,n,gy,gb;
printf(" n,m:");
scanf("%d,%d",&n,&m);
gy=f1(n,m); /*调用函数f1,将变量m,n中的两整数传递给f1的形参a,b,由函数f1计算并返回两整数的最大公约数,赋给变量gy*/
gb=f2(n,m); /*调用函数f2,将变量m,n中的两整数传递给f2的形参t1,t2,由函数f2计算并返回两整数的最小公倍数,赋给变量gb*/
printf(":%d/n",gy); /*输出最大公约数*/
printf(":%d/n",gb); /*输出最小公倍数
}

----------------------------------------------------------------------------------------------------------------------------------------------------

写法1:  class datatype
        {
         public:
              datatype(); //构造函数声明
         protected:
        }
        .....
        datatype::datatype()
        {
         char a;
         int b;
         float c;
        }
*----------------------------------------------------
写法2:class datatype
        {
         public:
              datatype()
              {
               char a;
               int b;
               float c;
              }

         protected:
        }

原创粉丝点击