qq小小七 发表于 2014-4-28 16:25:11

程序员女妹子求助!

//写两个函数,分别求两个证书的最大公约数和最小公倍数,用主函数调用两个函数并输出结果
每次写个简单的程序都会出错!!气死了,下面这个程序运行不了不知道为什么。。。
#include<iostream>
using namespace std ;
void main()
{
        int hcf(int , int ) ;//最大公约数
        int lcd(int , int , int) ; //最小公倍数
        int m , n , h , l ;
        cout << "please input two data:" << endl ;
        cin >> m >> n ;
        //cout << m << n ;
        h = hcf(m , n ) ;
        l = lcd(m , n , h) ;
        cout << h << l << endl ;

}       
int hcf(int m , int n )
{
        int t ;
        if(m < n)
        {
                t = m ;
                m = n ;
                n = t ;
        }
        int r ;
        while((r = m % n ) != 0)
        {
                m = n ;
                n = r ;
        }
        return (r) ;
}
int lcd(int m , int n , int r)
{

        return (m * n / r) ;
}

sidfate 发表于 2014-4-28 16:25:12

你好,又是我。while((r = m % n ) != 0)
      {
                m = n ;
                n = r ;
      }
      return n ;

sidfate 发表于 2014-4-28 17:12:37

还有一点。main函数里的:

cout << h <<endl<< l << endl ;(不然会很难分辨)

优雅的独行者 发表于 2014-4-28 17:25:43

      while((r = m % n ) != 0)
      {
                m = n ;
                n = r ;
      }
      return (r) ;
这里经过循环后r==0时跳出循环 返回值是0出错又把0作为参数传入函数中作除数...可想而知了

holy-jeusus 发表于 2014-4-28 22:21:58

是不是因为自己写的函数int lcd()。。。放在了int main()后面,应该放在前面吧。

qq小小七 发表于 2014-4-29 10:26:48

优雅的独行者 发表于 2014-4-28 17:25 static/image/common/back.gif
while((r = m % n ) != 0)
      {
                m = n ;


嗯嗯,明白了,我还想说r和n是相等的,怎么returnr 不行呢,现在明白了 谢谢啦

qq小小七 发表于 2014-4-29 10:27:19

holy-jeusus 发表于 2014-4-28 22:21 static/image/common/back.gif
是不是因为自己写的函数int lcd()。。。放在了int main()后面,应该放在前面吧。

做了函数声明就可以放到main函数后面了

qq小小七 发表于 2014-4-29 10:28:12

sidfate 发表于 2014-4-28 17:12 static/image/common/back.gif
还有一点。main函数里的:

cout

恩。我运行的时候发现这个问题了,就加了一个空格,写程序的时候总是忘

qq小小七 发表于 2014-4-29 10:29:02

sidfate 发表于 2014-4-28 16:25 static/image/common/back.gif
你好,又是我。

谢谢帮忙!以后记得常常帮助我哈
页: [1]
查看完整版本: 程序员女妹子求助!