想表示最大公约数与最小公倍数之比为1:120,大概是在判断语句里,用“最小公倍数/最大公约数==120”就行了,如果符合这个条件就跳出。

代码:

#include

//求最大公约数

int GCD(int m,int n)

{

int c,temp=0;

if(m {temp=m;m=n;n=temp;}

for(c=m%n;c!=0;m=n,n=c,c=m%n);

return n;

}

//求最小公倍数

int LCM(int m,int n)

{

int k=m*n;

int c,temp=0;

if(m {temp=m;m=n;n=temp;}

for(c=m%n;c!=0;m=n,n=c,c=m%n);

return k/n;

}

void main()

{

int a,b,m,n;

for(a=1;a<=333;a )

{

b=667-a;

m=GCD(a,b);

n=LCM(a,b);

if(n==120*m)

{

break;

}

}

printf("a=%d

",a);

printf("b=%d

",b);

}

结果:

a=115

b=552

(最大公约数m=23,最小公倍数n=2760)

===================

你说的三个条件具体是哪三个?

其实主要来说,可以构成式子的只有“两个数的合为667”和“最大公约数:最小公倍数=1:120”这两个。

这样的题目,最直接的思路就是用循环去一个一个试数,然后符合一定条件就结束循环,此时循环到的那个数就是你想要的。

但编程序又不能用多元的方程。所以,按其中一个数去循环(按a循环),则在循环过程中这个数a相当于是一个已知的具体数值。

另一个数b用667-a表示的话,那b的值也可以转化为一个具体的数。通过这两个数值能求出他们的最大公约数m和最小公倍数n,这就取得了第二个等式所需要的所有元素的具体值。就可以判断这个等式是否成立了。当等式成立,跳出循环,此时的a、b就是你要的解。

其中要注意的:

1、虽然按a、b的和为667来看,a这个数的取值范围是1到666(667和0的组合求最大公约数和最小公倍数没有意义),但是循环的上线没必要用666,用它的一半333就行了。

这个如果不明白的话请留言吧,我再解释。

2、最大公约数和最小公倍数的比值正好是1比一个整数值,写式子的时候没有必要按题目叙述的顺序写m/n==1/120,因为这样出现了实型数,增加误差。可以调整顺序写成等价的n/m==120,嗯对了,写成n==m*120更好!减小误差。

(我把程序里的条件式也改过来了)

别的有问题再留言吧

(8月21日 17:24)

=====================

不要总想这两个条件之间的联系,其实这两个条件是各司其职呀!

667的作用有两点。

一个是告诉你了这两个数数值上的直接关系;另一个是告诉你了这两个数的取值范围。在程序上,第一点表现在知道了a的值,就可以用667-a求出b;第二点表现在for循环的上下限上。

而1:120那个比值是用来控制程序循环到什么时候该出结果了。

在程序上它表现在if后面括号里的条件式上。

但怎么很好的应用这两个条件一定要在理解程序设计的结构的前提下。

像我前面说的,“这样的题目,最直接的思路就是用循环去一个一个试数,然后符合一定条件就结束循环,此时循环到的那个数就是你想要的。

因为是试数的思路,一定要有循环的思想!但是在它的取值范围内从头循环到尾的过程中,那个值是你想要的呢?怎么去判断呢?就要有一个条件来充当这个裁判。在你的题目中,最大公约数跟最小公倍数的比就是这个裁判。

所以第一次循环里用a=1、b=666算出的最大公约数和最小公倍数,一比,不是1:120不要紧,咱们接着循环;第二次a=2、b=665,还是不满足第二个条件也不要紧,再循环……直到a++加到115了,这时b=667-115=552,用这两个数算出的最大公约数m和最小公倍数n的比恰巧为1:120,那么好了,这个a和b的值就是我们想要的数。

每一次循环都肯定满足第一个条件,找他们当中到底哪一个能满足第二个条件也是要用循环的目的啊~

就好比上课的时候老师点名一样。比如已知你是1年级2班的一名学生(相当于第一个条件的第二点),又已知你的名字叫“星空”(相当于第二个条件)。

要求,当点到你的名字的时候你就喊“到”。

这个过程就是,老师选择了用1年级2班的名单(for取值范围)。从第一个人开始点名(执行for循环的过程)。第一个点的是“云淡风轻”,你一看,不是你的名,跳过(if语句的条件式为假的情况)。

第二个点的“荡漾心情”,你一看,又不是你的名,又跳过。终于在点到第10个人的时候点到了“星空”,你一看,终于到自己了(if语句的条件式为真了),你喊了“到”(输出语句)。

不知道这样讲,这两个条件的联系是否清楚一些?

还有,你又提到“怎样来表达其最大公约数与最小公倍数之比”的问题。

知道a和b的值了,可以用函数求出他们的最大公约数和最小公倍数吧。我用m表示最大公约数,n表示最小公倍数。那么,用数学符号表示,那个比值的恒等式应该是m:n=1:120。作为if语句的条件式(一定要明确这个等式要用于条件句哦~),c语言的语句是m/n==1/120。

但是为了避免误差,我们通常要把这个式子变形为乘法式(原理是纯数学问题,等式两边同乘上n*120),则这个等式变为m*120==n。这种用==连接的判断语句,==两头的表达式谁在左谁在右都可以。所以写成if(m*120==n)或者if(n==m*120),放在for循环里面,当等式成立,走if这个分支的时候,那就是该喊“到”的时候了。

另外,你写的你在编这个程序的时候,“另一个数为333-a”,我想大概是笔误吧?667-a才符合条件的。

全部

c语言输出三个比值为,请问如何用C语言表示数的比值相关推荐

  1. C语言输出字符,字符串的ASCII码的16进制数

    C语言输出字符,字符串的ASCII码的16进制数 /* file name : test.c cmd code : gcc -o test.exe test.c */ #include<stdi ...

  2. 大学c语言第三章作业,华中科技大学光电子学院C语言第三章

    <华中科技大学光电子学院C语言第三章>由会员分享,可在线阅读,更多相关<华中科技大学光电子学院C语言第三章(20页珍藏版)>请在装配图网上搜索. 1.第三章 简单程序设计 1. ...

  3. c语言输出数字漏斗图形_为什么你觉得C语言什么都不能做,学了没用?不可能的...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

  4. c语言输出数字漏斗图形_为什么你觉得C语言什么都不能做,学了没用?错!大错特错!!!...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

  5. c语言偶数分解成两个素数,如何用C语言验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和....

    题目: 如何用C语言验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和. 我是大一新生,代码不能太复杂 解答: //首先生成质数表,然后双重循环输出2000以内所有偶数的两个 ...

  6. c语言输出三行星,C语言大作业观察行星的运行报告(16页)-原创力文档

    程序设计挑战式课程设计报告 - PAGE 15 - 作业名称: 观察行星的运行 学 院: 教育实验学院 班 级: HC001505 学 号: 2015300074 姓 名: 祖陆晗 团队组成: 祖陆晗 ...

  7. c语言输出字母abcd,有字母ABCD,请用C语言编写程序,输出由该四个字母组成的字符串.要求如下:...

    有字母ABCD,请用C语言编写程序,输出由该四个字母组成的字符串.要求如下: 答案:6  信息版本:手机版 解决时间 2019-10-06 21:36 已解决 2019-10-06 01:51 1.包 ...

  8. java 输出三位数和n位数的每一位的数

    思路 规律:先除以/10^(n-1)再%10 三位数:n 个位:n/1%10 十位:n/10%100 百位:n/100%10 n位数:n 个位:n/10^0%10 十位:n/10^1%10 百位:n/ ...

  9. c语言输出方框□怎么回事_值得收藏的 C语言指针讲解文章,确实不错!

    来源 :https://zlc.im/language/c/c_and_pointer.md#%E6%8C%87%E9%92%88 指针 本文介绍C语言的指针相关知识. 指针是什么? 指针和其他的in ...

最新文章

  1. GPU Gems1 - 8 衍射的模拟
  2. KVM虚拟机IO处理过程(二) ----QEMU/KVM I/O 处理过程
  3. ElasticSearch之Tokenizer 分词器
  4. 读书笔记《Spring Boot实战 —— Java EE 开发的颠覆者》
  5. 网络(5)-应用层:了解常用协议使用的端口和底层协议
  6. Linux学习总结(79)—— Shell 编程规范
  7. 愁绪千万端,扰乱不成眠——如何修复Noise?
  8. 【物理】概念的理解 —— 蒸馏、萃取
  9. 烟台大学计算机技术面试,2019烟台大学研究生复试面试注意哪些
  10. mcs51 串口通信 单片机发 pc收
  11. matlab pid参数仿真研究,利用MATLAB实现PID参数整定及仿真
  12. 多台机器同步Windows上的文件 -cwRsync 同步问题
  13. 腾讯通信云服务端使用心得,腾讯云IM
  14. git fetch 理解
  15. 每日写题分享--优先队列
  16. vmware和hyper-v的一个坑
  17. pytorch矩阵运算
  18. java内存模型——JMM理解
  19. 基于Simulink的带通BPSK信号调制解调实验报告(含代码和slx文件)
  20. HTML小游戏22 —— html5版疯狂光头强网页游戏(附完整源码)

热门文章

  1. How does SGD weight_decay work?
  2. Xcode couldn‘t find any iOS App Development provisioning profiles matching ‘com.example.***‘
  3. Java堆和栈的基本理解
  4. LeetCode简单题之用栈操作构建数组
  5. 编译器架构Compiler Architecture(上)
  6. Tomcat之the jre_home environment variable is not defined correctly this environment variable is need
  7. 2021年大数据Hadoop(二十七):YARN运行流程
  8. #includebits/stdc++.h包含C++的所有头文件
  9. day042前端之HTML
  10. adb命令 判断锁屏