當前位置:首頁 » 編程語言 » c語言公式性質
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言公式性質

發布時間: 2022-08-28 15:29:28

A. c語言中如何調用函數求最大公約數和最小公倍數

C語言求最大公約數和最小公倍數(2010-03-20 22:23:46)轉載標簽: 雜談 分類: 編程
求最大公約數和最小公倍數

假設有兩個數a和b,求a,b的最大公約數和最小公倍數實際上是一個問題,得出這兩個數的最大公約數就可以算出它們的最小公倍數。

最小公倍數的公式是 a*b/m

m為最大公約數

因為

a=m*i; b=m*j;

最小公倍數為 m*i*j

那麼,下面就開始計算a和b的最大公約數。

更相損減法:

《九章算術·方田》作分數約簡時,提到求最大公因數方法:反覆把兩數的較大者減去較小者,直至兩數相等,這數就是最大公因數。這方法除了把除法換作減法外,與輾轉相除法完全相同。例如書中求91和49的最大公因數:

91 > 49, 91 - 49 = 42
49 > 42, 49 - 42 = 7
42 > 7, 42 - 7 = 35
35 > 7, 35 - 7 = 28
28 > 7, 28 - 7 = 21
21 > 7, 21 - 7 = 14
14 > 7, 14 - 7 = 7
7 = 7, 因此91和49的最大公因數是7
輾轉相除法:

輾轉相除法是利用以下性質來確定兩個正整數 a 和 b 的最大公因數的:

若 r 是 a ÷ b 的餘數, 則
gcd(a,b) = gcd(b,r)

a 和其倍數之最大公因數為 a。
另一種寫法是:

a ÷ b,令r為所得餘數(0≤r<b)
若 r = 0,演演算法結束;b 即為答案。

互換:置 a←b,b←r,並返回第一步。
這個演算法可以用遞歸寫成如下:

function gcd(a, b) {

if a mod b<>0

return gcd(b, a mod b);

else

return a;

}

或純使用循環:

function gcd(a, b) {

define r as integer;

while b ≠ 0 {

r := a mod b;

a := b;

b := r;

}

return a

}

其中「a mod b」是指取 a ÷ b 的余數。

C語言:

#include <stdio.h>

int gcd(int a,int b)//最大公約數

{

if (a<b) return gcd(b,a);

else if (b==0) return a;

else return gcd(b,a%b);

}

int lcm(int a,int b)

{

return a*b/gcd(a,b);

}

main()

{

int a,b;

scanf("%d%d",&a,&b);

printf("最大公約數:%d\n",gcd(a,b));

printf("最小公倍數:%d\n",lcm(a,b));

}

輸入兩個正整數m和n, 求其最大公約數和最小公倍數. <1> 用輾轉相除法求最大公約數 演算法描述: m對n求余為a, 若a不等於0 則 m <- n, n <- a, 繼續求余 否則 n 為最大公約數 <2> 最小公倍數 = 兩個數的積 / 最大公約數
#include int main()
{
int m, n; int m_cup, n_cup, res;
printf("Enter two integer:\n");
scanf("%d %d", &m, &n);
if (m > 0 && n >0)
{
m_cup = m;
n_cup = n;
res = m_cup % n_cup;
while (res != 0)
{
m_cup = n_cup;
n_cup = res;
res = m_cup % n_cup;
}
printf("Greatest common divisor: %d\n", n_cup);
printf("Lease common multiple : %d\n", m * n / n_cup);
}
else printf("Error!\n");
return 0;
}
★ 關於輾轉相除法, 搜了一下, 在我國古代的《九章算術》中就有記載,現摘錄如下: 約分術曰:「可半者半之,不可半者,副置分母、子之數,以少減多,更相減損,求其等也。以等數約之。」 其中所說的「等數」,就是最大公約數。求「等數」的辦法是「更相減損」法,實際上就是輾轉相除法。輾轉相除法求最大公約數,是一種比較好的方法,比較快。對於52317和75569兩個數,你能迅速地求出它們的最大公約數嗎?一般來說你會找一找公共的使因子,這題可麻煩了,不好找,質因子大。現在教你用輾轉相除法來求最大公約數。先用較大的75569除以52317,得商1,余數23252,再以52317除以23252,得商2,余數是5813,再用23252做被除數,5813做除數,正好除盡得商數4。這樣5813就是75569和52317的最大公約數。你要是用分解使因數的辦法,肯定找不到。那麼,這輾轉相除法為什麼能得到最大公約數呢?下面我就給大夥談談。比如說有要求a、b兩個整數的最大公約數,a>b,那麼我們先用a除以b,得到商8,余數r1:a÷b=q1…r1我們當然也可以把上面這個式子改寫成乘法式:a=bq1+r1------l)如果r1=0,那麼b就是a、b的最大公約數3。要是r1≠0,就繼續除,用b除以r1,我們也可以有和上面一樣的式子: b=r1q2+r2-------2)如果余數r2=0,那麼r1就是所求的最大公約數3。為什麼呢?因為如果2)式變成了b=r1q2,那麼b1r1的公約數就一定是a1b的公約數。這是因為一個數能同時除盡b和r1,那麼由l)式,就一定能整除a,從而也是a1b的公約數。反過來,如果一個數d,能同時整除a1b,那麼由1)式,也一定能整除r1,從而也有d是b1r1的公約數。這樣,a和b的公約數與b和r1的公約數完全一樣,那麼這兩對的最大公約數也一定相同。那b1r1的最大公約數,在r1=0時,不就是r1嗎?所以a和b的最大公約數也是r1了。有人會說,那r2不等於0怎麼辦?那當然是繼續往下做,用r1除以r2,……直到余數為零為止。在這種方法里,先做除數的,後一步就成了被除數,這就是輾轉相除法名字的來歷吧。

B. C語言,楊輝三角公式

方法1:

#include <stdio.h>
main()
{
int i,j,a[10][10]; /*10行10列的楊輝三角*/
for(i=0;i<10;i++) /*先賦值兩邊*/
{
a[i][0]=1;
a[i][i]=1;
}

for(i=2;i<10;i++) /* 計算中間的數值 */
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=0;i<10;i++) /* 輸出部分 */
{
for(j=0;j<i+1;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}

方法2:
#include<stdio.h>
main()
{
long i,j,n,k;
printf("請輸入要輸出的楊輝三角的行數:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
k=1;
for(j=1;j<=i;j++)
{
printf("%5ld",k);
k=k*(i-j)/j;
}
printf("\n");
}
}

C. C語言,邏輯運算的理解,他是基於一個什麼的原理

有些運算中,當已知其中一個運算數是某個值時,它的計算結果就可以直接確定了,而與另一個運算數無關。這樣的性質通常描述為:
任何數,與某個數進行某種運算,結果都是某個數。
例如:
任何數,乘以0,結果都是0;
同樣,對於邏輯運算:
任何邏輯值,和「假」進行與運算,結果都是「假」;
任何邏輯值,和「真」進行或運算,結果都是「真」;
用公式表示就是:
p&&0=0&&p=0;
p||1=1||p=1;
所以,在我們進行人工計算時,如果遇到這種情形,就可以利用這條性質,直接寫出結果;同樣,對於計算機,在遇到這種情形時,也無須計算第二個操作數。
而編譯器通常是按照從左到右的次序分析源程序的,所以總是左邊的操作數先被確定,即任何情況下,左邊的操作數肯定會被計算;而右邊的,就有可能被忽略了。

D. C語言編程,已知三角形的三邊長a,b,c,計算求三角形面積的公式為:

程序代碼如下:

#include <stdio.h>

#include <math.h>

int main()

{

printf("輸入三個邊長: ");

float a,b,c;

float s,area;

scanf("%f%f%f",&a,&b,&c);

s = (a+b+c)/2;

area = sqrt(s*(s-a)*(s-b)*(s-c));

if(a+b>c && b+c>a && a+c>b)

printf("面積是%.2f ",area);

else

printf("三條邊無法構成三角形");

return 0;

}

(4)c語言公式性質擴展閱讀

三角形具有以下性質:

1、三角形任意兩邊之和大於第三邊,任意兩邊之差小於第三邊。

2、在平面上三角形的內角和等於180°(內角和定理)。

3、在平面上三角形的外角和等於360° (外角和定理)。

4、三角形的三條角平分線交於一點,三條高線的所在直線交於一點,三條中線交於一點。

5、三角形的任意一條中線將這個三角形分為兩個面積相等的三角形。

E. c語言演算法中的五個特性是什麼

C語言中的演算法是指為解決某個特定問題而採取的確定且有限的步,主要的五個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。

F. C語言中的一個等號和兩個等號有什麼區別

C語言中的一個等號和兩個等號區別為:性質不同、用途不同、影響不同。

一、性質不同

1、一個等號:一個等號是一種賦值運算符。

2、兩個等號:兩個等號是一種關系運算符。

二、用途不同

1、一個等號:一個等號用途是給一個對象賦值。

2、兩個等號:兩個等號用途是作為判斷語句的條件,對兩個對象進行比較。

三、影響不同

1、一個等號:一個等號會改變、影響被賦值對象的值。

2、兩個等號:兩個等號不會改變、影響被兩個比較對象的值。

G. C語言中什麼是邏輯表達式,什麼是關系表達式。舉幾個例子

邏輯表達式是指運算符為或||、與&&、非!的表達式。返回值為0或1,0表示false,非0表示true. 例如!0返回1,0&&1返回0,0||1返回1。

關系表達式是指運算符為<,<=,>,>=,==,!=的表達式。返回值同樣為0或1,例如a!=b,a>=0等。

C語言用整數"1"表示"邏輯真"、用"0"表示"邏輯假"。但在判斷一個數據的"真"或"假"時,卻以0和非0為根據:

如果為0,則判定為"邏輯假";如果為非0,則判定為"邏輯真"。

例如,假設num=12,則: !num的值=0 ,num>=1 && num<=31的值=1 ,num || num>31的值=1。

邏輯運算符兩側的操作數,除可以是0和非0的整數外,也可以是其它任何類型的數據,如實型、字元型等。

短路原則:非常重要,在計算邏輯表達式時,只有在必須執行下一個表達式才能求解時,才求解該表達式(即並不是所有的表達式都被求解)。換句話說:

對於邏輯與運算,如果第一個操作數被判定為"假",系統不再判定或求解第二操作數;對於邏輯或運算,如果第一個操作數被判定為"真",系統不再判定或求解第二操作數。

(7)c語言公式性質擴展閱讀:

C語言邏輯表達式注意:

由於浮點數在計算機中不能非常准確地表示,所以,判斷兩個浮點數是否相同時,通常不使用關系運算符「等於」(==),而是利用區間判斷方法來實現。為了判斷x是否等於5.003,可利用如下邏輯表達式:x>5.002 && x<5.004。

當此邏輯表達式為「真」時,就可以認為x等於5.003

邏輯及性質保真性:所有變數的真值皆為「真」的命題在邏輯或運算後的結果為真。保假性:所有變數的真值皆為「假」的命題在邏輯或運算後的結果為假。

H. C語言中的 與或非運算

C語言中的與、或、非是C語言的邏輯運算符。

1、邏輯與

在C語言中邏輯與用&&表示。

舉例:a&&b(其中a、b都代表一個條件)

如果a和b都為真,則結果為真,如果a和b中有一個條件為假,則結果為假。

2、邏輯或

在C語言中邏輯或用||表示。

舉例:a||b(其中a、b都代表一個條件)

如果a和b有一個或以上為真,則結果為真,二者都為假時,結果為假。

3、邏輯非

在C語言中邏輯非用!表示。

舉例:!a(a代表一個條件)

如果a為假,則!a為真,如果a為真,則!a為假。

(8)c語言公式性質擴展閱讀

在C 語言中的邏輯運算符及優先順序:

一元:!(邏輯非)。

二元:&&(邏輯與)、||(邏輯或)。

以上三種邏輯運算符中,邏輯非 ! 的優先順序最高,邏輯與 && 次之,邏輯或 || 優先順序最低。即算術、邏輯、賦值運算符的優先順序順序為:

邏輯非 ! >算術 > 邏輯與 &&、邏輯或 || > 賦值=

I. C語言中|=代表什麼意思最好舉個例子。謝謝!

a|=b,實際上就是a=a|b,是一個位或運算,是二進制運算,在同一位上數字相同時結果為0,不同十為1。跟+=一樣的性質,都是復合賦值運算符。
例如:
有a=2和b=3,他們的二進制代碼分別為0000010和0000011
則a|=b,就是
00000010
|
00000011
=
00000001
既運算的結果為a=1.