日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

發(fā)布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言输出三个比值为,请问如何用C语言表示数的比值 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

想表示最大公約數(shù)與最小公倍數(shù)之比為1:120,大概是在判斷語句里,用“最小公倍數(shù)/最大公約數(shù)==120”就行了,如果符合這個條件就跳出。

代碼:

#include

//求最大公約數(shù)

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;

}

//求最小公倍數(shù)

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);

}

結(jié)果:

a=115

b=552

(最大公約數(shù)m=23,最小公倍數(shù)n=2760)

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

你說的三個條件具體是哪三個?

其實主要來說,可以構(gòu)成式子的只有“兩個數(shù)的合為667”和“最大公約數(shù):最小公倍數(shù)=1:120”這兩個。

這樣的題目,最直接的思路就是用循環(huán)去一個一個試數(shù),然后符合一定條件就結(jié)束循環(huán),此時循環(huán)到的那個數(shù)就是你想要的。

但編程序又不能用多元的方程。所以,按其中一個數(shù)去循環(huán)(按a循環(huán)),則在循環(huán)過程中這個數(shù)a相當于是一個已知的具體數(shù)值。

另一個數(shù)b用667-a表示的話,那b的值也可以轉(zhuǎn)化為一個具體的數(shù)。通過這兩個數(shù)值能求出他們的最大公約數(shù)m和最小公倍數(shù)n,這就取得了第二個等式所需要的所有元素的具體值。就可以判斷這個等式是否成立了。當?shù)仁匠闪?#xff0c;跳出循環(huán),此時的a、b就是你要的解。

其中要注意的:

1、雖然按a、b的和為667來看,a這個數(shù)的取值范圍是1到666(667和0的組合求最大公約數(shù)和最小公倍數(shù)沒有意義),但是循環(huán)的上線沒必要用666,用它的一半333就行了。

這個如果不明白的話請留言吧,我再解釋。

2、最大公約數(shù)和最小公倍數(shù)的比值正好是1比一個整數(shù)值,寫式子的時候沒有必要按題目敘述的順序?qū)憁/n==1/120,因為這樣出現(xiàn)了實型數(shù),增加誤差。可以調(diào)整順序?qū)懗傻葍r的n/m==120,嗯對了,寫成n==m*120更好!減小誤差。

(我把程序里的條件式也改過來了)

別的有問題再留言吧

(8月21日 17:24)

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

不要總想這兩個條件之間的聯(lián)系,其實這兩個條件是各司其職呀!

667的作用有兩點。

一個是告訴你了這兩個數(shù)數(shù)值上的直接關(guān)系;另一個是告訴你了這兩個數(shù)的取值范圍。在程序上,第一點表現(xiàn)在知道了a的值,就可以用667-a求出b;第二點表現(xiàn)在for循環(huán)的上下限上。

而1:120那個比值是用來控制程序循環(huán)到什么時候該出結(jié)果了。

在程序上它表現(xiàn)在if后面括號里的條件式上。

但怎么很好的應(yīng)用這兩個條件一定要在理解程序設(shè)計的結(jié)構(gòu)的前提下。

像我前面說的,“這樣的題目,最直接的思路就是用循環(huán)去一個一個試數(shù),然后符合一定條件就結(jié)束循環(huán),此時循環(huán)到的那個數(shù)就是你想要的。

因為是試數(shù)的思路,一定要有循環(huán)的思想!但是在它的取值范圍內(nèi)從頭循環(huán)到尾的過程中,那個值是你想要的呢?怎么去判斷呢?就要有一個條件來充當這個裁判。在你的題目中,最大公約數(shù)跟最小公倍數(shù)的比就是這個裁判。

所以第一次循環(huán)里用a=1、b=666算出的最大公約數(shù)和最小公倍數(shù),一比,不是1:120不要緊,咱們接著循環(huán);第二次a=2、b=665,還是不滿足第二個條件也不要緊,再循環(huán)……直到a++加到115了,這時b=667-115=552,用這兩個數(shù)算出的最大公約數(shù)m和最小公倍數(shù)n的比恰巧為1:120,那么好了,這個a和b的值就是我們想要的數(shù)。

每一次循環(huán)都肯定滿足第一個條件,找他們當中到底哪一個能滿足第二個條件也是要用循環(huán)的目的啊~

就好比上課的時候老師點名一樣。比如已知你是1年級2班的一名學生(相當于第一個條件的第二點),又已知你的名字叫“星空”(相當于第二個條件)。

要求,當點到你的名字的時候你就喊“到”。

這個過程就是,老師選擇了用1年級2班的名單(for取值范圍)。從第一個人開始點名(執(zhí)行for循環(huán)的過程)。第一個點的是“云淡風輕”,你一看,不是你的名,跳過(if語句的條件式為假的情況)。

第二個點的“蕩漾心情”,你一看,又不是你的名,又跳過。終于在點到第10個人的時候點到了“星空”,你一看,終于到自己了(if語句的條件式為真了),你喊了“到”(輸出語句)。

不知道這樣講,這兩個條件的聯(lián)系是否清楚一些?

還有,你又提到“怎樣來表達其最大公約數(shù)與最小公倍數(shù)之比”的問題。

知道a和b的值了,可以用函數(shù)求出他們的最大公約數(shù)和最小公倍數(shù)吧。我用m表示最大公約數(shù),n表示最小公倍數(shù)。那么,用數(shù)學符號表示,那個比值的恒等式應(yīng)該是m:n=1:120。作為if語句的條件式(一定要明確這個等式要用于條件句哦~),c語言的語句是m/n==1/120。

但是為了避免誤差,我們通常要把這個式子變形為乘法式(原理是純數(shù)學問題,等式兩邊同乘上n*120),則這個等式變?yōu)閙*120==n。這種用==連接的判斷語句,==兩頭的表達式誰在左誰在右都可以。所以寫成if(m*120==n)或者if(n==m*120),放在for循環(huán)里面,當?shù)仁匠闪?#xff0c;走if這個分支的時候,那就是該喊“到”的時候了。

另外,你寫的你在編這個程序的時候,“另一個數(shù)為333-a”,我想大概是筆誤吧?667-a才符合條件的。

全部

總結(jié)

以上是生活随笔為你收集整理的c语言输出三个比值为,请问如何用C语言表示数的比值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。