| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 974 人关注过本帖
标题:希望高手能帮忙看看我的程序为什么不对呢?
只看楼主 加入收藏
康冬亮
Rank: 1
来 自:成都
等 级:新手上路
帖 子:32
专家分:2
注 册:2010-8-14
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:18 
希望高手能帮忙看看我的程序为什么不对呢?
这是一个求最大公约数的程序   但不正常工作   希望高手们帮忙看看   
#include <stdio.h>
int fun(int a,int b)
{
 int r,t;
 if(a<b)
 {
 t=a;
 a=b;
 b=t;
 }
 r=a%b;
 while(r!=0)
 {
 a=b;
 b=r;
 r=a%b;
 
 }
 return(b);
}
void main()
{
int num1,num2,a;
printf("input num1 num2:");
scanf("%d%d",&num1,&num2);
printf("num1=%d num2=%d\n\n",num1,num2);
a=fun(num1,num2);

printf("the maximun common divisor is %d\n\n",a);
}
搜索更多相关主题的帖子: 工作 include 公约数 
2010-08-24 19:45
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:10 
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
return (b);
这段改成
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
return a;

御坂回答说

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-24 19:52
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:10 
呵呵 有道理

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-24 20:38
康冬亮
Rank: 1
来 自:成都
等 级:新手上路
帖 子:32
专家分:2
注 册:2010-8-14
收藏
得分:0 
回复 2楼 御坂美琴
我理解你的想法  能通过编译  但运行的时候不安预定功能运行  当输入9,3的时候  答案是3   当输入49,21是就是1.感觉它还有问题只是不知道在哪    我还想请教一下您   为什么当我输入49,21是显示的是num1=49,num2=200373373我感觉很诧异,谢谢
2010-08-24 21:23
康冬亮
Rank: 1
来 自:成都
等 级:新手上路
帖 子:32
专家分:2
注 册:2010-8-14
收藏
得分:0 
回复 3楼 jack10141
是有道理  但是还是不能执行预定的功能   帮我看看呗
2010-08-24 21:24
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
前面的
if(a<b)
{
t=a;
a=b;
b=t;
}
这段是多余的

应该没有这样的问题吧?你再试试,御坂说

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-24 21:46
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
以下是引用康冬亮在2010-8-24 19:45:40的发言:

这是一个求最大公约数的程序   但不正常工作   希望高手们帮忙看看   
#include
int fun(int a,int b)
{
 int r,t;
 if(a
如上改一下就好了!!还有 前面a,b交换的语句没有必要,纯属画蛇添足,因为后面的while循环可以实现交换!!
-------------------------
郁闷,这个论坛发的内容怎么经常丢失信息?
前面的程序只有一半???
下面是完整版
程序代码:
#include <stdio.h>
int fun(int a,int b)
{
   int r,t;
   r=b;
   while(r!=0)
   {
     r=a%b;
     a=b;
     b=r;
   }
   return(a);
}
int main()
{
    int num1,num2,aa;
loop: ;
    printf("input num1 num2:");
    scanf("%d%d",&num1,&num2);
    printf("num1=%d num2=%d\n\n",num1,num2);
    aa=fun(num1,num2);
    printf("the maximun common divisor is %d\n\n",aa);
    if(num1*num2)      
       goto loop;
}


[ 本帖最后由 jack10141 于 2010-8-24 22:37 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-24 21:53
康冬亮
Rank: 1
来 自:成都
等 级:新手上路
帖 子:32
专家分:2
注 册:2010-8-14
收藏
得分:0 
回复 6楼 御坂美琴
呵呵  我终于知道了  我用的是c-free编译  编译器有点问题  现在好了  谢谢
2010-08-24 22:35
康冬亮
Rank: 1
来 自:成都
等 级:新手上路
帖 子:32
专家分:2
注 册:2010-8-14
收藏
得分:0 
回复 7楼 jack10141
我知道了  谢谢  呵呵
2010-08-24 22:36
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
以下是引用康冬亮在2010-8-24 22:35:49的发言:

呵呵  我终于知道了  我用的是c-free编译  编译器有点问题  现在好了  谢谢
这里说的结果的正确与否跟编译器没有关系吧??关键看你的程序算法逻辑上有无遗漏?结果不对经常是算法问题!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-24 22:42
快速回复:希望高手能帮忙看看我的程序为什么不对呢?
数据加载中...
 
   



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

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