网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月01日漏签0天
c语言吧 关注:799,060贴子:4,359,797
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 9回复贴,共1页
<<返回c语言吧
>0< 加载中...

大家看我这个程序错在哪里?

  • 只看楼主
  • 收藏

  • 回复
  • 传达室李老伯
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不好意思,我是个c语言新手,前两天布置一道题,是这样的:
求两个自然数,和为667,其最小公倍数除以最大公约数的商为120。打印所有符合要求的自然数。
我得程序是这样的:
#include "stdio.h"
main()
{
int a,b,i,t;
for(a=1,b=667-a;a<334;a++)
  {for(i=1;i<=a;i++)
     if(a%i==0&&b%i==0)  t=i;
  }
if(a*b/t/t==120)
printf("%d\t%d\n",a,b);
}
我想因为最小公倍数是两数之积除以最大公约数,所以可以写成a*b/t/t。我想来想去不知哪里错了,请大家指点。(新手,如果出现比较愚蠢的错误,见笑了!)


  • oceanfat
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
第一行应该是#include (stdio.h)吧。
另外c里的运算符号有优先级,我也搞不清楚,不过你可以把要先算的步骤用小括号括起来,再运行看看。你写的太花了我这里没稿纸而且我也是初学者,只能帮你这些了


2025-09-01 14:18:57
广告
不感兴趣
开通SVIP免广告
  • 传达室李老伯
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
回楼上的,第一行两种写法都是对的。
那个运算应该没有问题,a*b/t/t和a*b/(c*c)应该是一样的。
我觉得是前面的出了某些问题。求公约数那一段是我从例题上搬过来的,稍微改了一下,可能是改错了。这个程序在tc2.0下运行时没报错,但就是屏幕上什么也没有


  • oceanfat
  • 路人
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
恩,第一行的写法,我孤陋寡闻了。
最后一行printf("%d\t%d\n",a,b);好象也有问题啊。
 printf("%d\n,%d\n",a,b);比较通吧 
我觉得a*b/t/t应该是表示a跟b的积除t求余后的余数再除以t,不知楼主原本希望它干什么。
呵呵,咱两个新手讨论这题目该被人笑话啦。希望有高手看到哦。


  • 219.230.153.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
最大公约数和最小公倍数的求解有错误
还有,b的赋值应该放在第一个for循环


  • 58.33.52.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
试过了不


  • 121.18.84.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
支持5楼!


  • crack_008
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
最大公约数的算法应该没错:
#include "stdio.h"
main()
{
 int a,b,i,t;
 for(a=1;a<334;a++)
 {
 b=667-a;
 for(i=1;i<=a;i++)
 if(a%i==0&&b%i==0) t=i;
 if(a*b/t/t==120)
 printf("%d\t%d\n",a,b);
 }
}
这个程序完全OK!


2025-09-01 14:12:57
广告
不感兴趣
开通SVIP免广告
  • crack_008
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我怀疑是不是没有这样的两个数,所以才不打印出来的!楼主去问下你们老师


  • crack_008
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
事实证明我是对的,我自己写了个程序来验证这个问题,我只能说你们老师真是个随便的人,下面是我的程序:
#include "stdio.h" 
int da(int a,int b)/*这个求最大公约数的*/
{
 int i;
 i=b%a;
 while(i!=0)
 {
 b=a;a=i;
 i=b%a;
 }
 return a;
}
main() 
{ 
 int a,b,i,t; /*i为最大公约数,t为最小公倍数*/
 for(a=1;a<334;a++) 
 { 
 b=667-a; 
 i=da(a,b);
 t=a*b/i;
 if(t/i==120)printf("%d %d\n",a,b);
 } 
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 9回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示