| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1720 人关注过本帖
标题:我的求最大公约数的小程序该怎么改才没有警告
只看楼主 加入收藏
bsp0321
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-2-22
收藏
 问题点数:0 回复次数:20 
我的求最大公约数的小程序该怎么改才没有警告

#include <iostream>
using namespace std;

int gc(int m,int n) //求最大公约数
{
if(m<n) gc(n,m);
else if(m%n==0) return n;
else
{
m = m%n; gc(m,n);
}
}
int gd(int m, int n) //求最小公倍数
{
return m*n/gc(m,n);
}


void main(void)
{
int m,n;
cout<<"m=";
cin>>m;
cout<<"n=";
cin>>n;
cout<<"m,n的最大公约数为:";
cout<<gc(m,n)<<endl;
cout<<"m,n的最小公被数为:";
cout<<gd(m,n)<<endl;
}

搜索更多相关主题的帖子: 最大公约数 警告 
2006-12-19 18:39
bsp0321
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-2-22
收藏
得分:0 
warning C4715: 'gc' : not all control paths return a value
2006-12-19 18:40
senyee
Rank: 1
等 级:新手上路
帖 子:422
专家分:0
注 册:2006-11-28
收藏
得分:0 
cout<<"m=";
cin>>m;
cout<<"n=";
cin>>n;
cout<<"m,n的最大公约数为:";
cout<<gc(m,n)<<endl;
cout<<"m,n的最小公被数为:";
cout<<gd(m,n)<<endl;

这都是什么意思啊?
不好意思,反过来问你了.....
能解释下吗?

菜鸟~~请多指教~~
2006-12-19 20:24
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
收藏
得分:0 
以下是引用bsp0321在2006-12-19 18:39:21的发言:

#include <iostream>
using namespace std;

int gc(int m,int n) //求最大公约数
{
if(m<n) return gc(n,m);
else if(m%n==0) return n;
else
{
m = m%n;
return gc(m,n);
}
}
int gd(int m, int n) //求最小公倍数
{
return m*n/gc(m,n);
}


void main(void)
{
int m,n;
cout<<"m=";
cin>>m;
cout<<"n=";
cin>>n;
cout<<"m,n的最大公约数为:";
cout<<gc(m,n)<<endl;
cout<<"m,n的最小公被数为:";
cout<<gd(m,n)<<endl;
}


2006-12-19 20:58
fengwei
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-12-19
收藏
得分:0 

你这程序基本正确。只是有警告。
那是因为 返回的时候 类型不匹配改成这样就ok
#include <iostream>
using namespace std;

int gc(int m,int n) //求最大公约数
{ int tem;
if(m<n) gc(n,m);
else if(m%n==0) tem=n;
else
{
m = m%n; tem=gc(m,n);

}
return tem;
}
int gd(int m, int n) //求最小公倍数
{ int tem;
tem=gc(m,n);
return m*n/tem;
}


void main(void)
{
int m,n;
cout<<"m=";
cin>>m;
cout<<"n=";
cin>>n;
cout<<"m,n的最大公约数为:";
cout<<gc(m,n)<<endl;
cout<<"m,n的最小公被数为:";
cout<<gd(m,n)<<endl;
}

2006-12-19 21:02
bsp0321
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-2-22
收藏
得分:0 

这是输入输出控制,>> <<分别是输入,输出操作符。
不用管这些的。

2006-12-19 21:05
我是一只小菜鸟
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-12-19
收藏
得分:0 

你们写得我怎么看不懂啊!可我这样写也行啊
# include <stdio.h>
main()
{
int x,y,m,n,a,b;
scanf("%d,%d",&x,&y);
a=x;b=y;
m=x%y;
while (m!=0)
{
x=y;
y=m;
m=x%y;
}
printf("%d\n",y);
n=(a*b)/y;
printf("%d\n",n);
}

2006-12-19 21:10
bsp0321
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-2-22
收藏
得分:0 
sorry!
fengwei同学的测试:
m=3
n=5
m,n的最大公约数为:-85899340
m,n的最小公被数为:0



2006-12-19 21:13
bsp0321
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-2-22
收藏
得分:0 
mayudong1同学,我新手,刚学,解释一下,为什么要加上两个return呢?
2006-12-19 21:15
bsp0321
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-2-22
收藏
得分:0 
我是一只小菜鸟比我强多了,呵呵
我刚看C++ Primer 3rd Edition 中文完美版.pdf上有完整的代码,但是我还是想实现一下我所想的。
////////////////////////////////
//C++ Primer 3rd Edition 中文完美版.pdf
int gcd( int v1, int v2 )
{
// 返回最大公约数
while ( v2 )
{
int temp = v2;
v2 = v1 % v2;
v1 = temp;
}
return v1;
}

[此贴子已经被作者于2006-12-19 21:20:54编辑过]

2006-12-19 21:20
快速回复:我的求最大公约数的小程序该怎么改才没有警告
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.088883 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved