20170929 C語言每日一練

2021-08-08 21:57:01 字數 1649 閱讀 8942

【程式16】

題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。

分析:首先介紹一種方法叫輾轉相除法(歐幾里得演算法);

從原理可以看出,有兩個迴圈:

1.最後的餘數要等於0;——>對應乙個while(r !=0)的迴圈

2.除數和餘數的輾轉相除。——>替換變數反覆相除的迴圈

因為最後有用的只有b和r的值,所以可以將b的值賦給a,再將r的值賦給b。

#include 

int main(int argc, char* argv)

//這樣就保證了被除數num2 比 除數num1 大

while(num1 !=0)

printf("兩個數的最大公約數是:%d",num2);

//最大公約數*最小公倍數 = 兩個數的乘積;

printf("兩個數的最小公倍數是:%d",(m*n) / num2);

【程式17】

題目:輸入一行字元,分別統計出其中英文本母、空格、數字和其它字元的個數。

#include 

int main(int argc, char* argv)

else

if((c >'0') && (c < '9'))

else

if(c ==' ')

else

others ++;

}printf("字母有:%d,數字有:%d,空格有:%d,其他字元有:%d",letters,digits,spaces,others);

}

注意:是單引號不是雙引號!還有字母判斷要加上等於號!

執行結果:

【程式18】

題目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是乙個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加由鍵盤控制。

#include 

#include

int main(int argc, char* argv)

else

}printf("the total is %d",sum);

}

作為乙個小白,這個題目真是糾結了好久,每次都是輸出相加的最後乙個數。糾結了好久要怎樣才能把前面的數給加上放到sum裡面,不過終於在我仔細的分析之下給編出來了。之前寫的是:

for(i = 0;i < n; i++)//其中n為相加的個數

錯誤在於,沒有把前面的數給加進去。(其實除了這個方法,我覺得創乙個陣列儲存每次的數,然後再加起來也行。)

執行結果:

C語言每日一練7 18

a類 b類2.請編寫乙個程式,使用者輸入乙個十進位制數,將其轉換為二進位制並輸出。3.下列程式的執行結果為 include void func int x int main return 0 以下為答案 1.d 硬碟檔案系統除了fat還有ntfs u盤檔案系統 光碟檔案系統 2.include in...

20170927 C語言每日一練

斐波那契數列 小兔子問題 程式11 題目 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?include long f1,f2 int i f1 f2 1 for i 1 i 20 i f1 f1 f2 f2 f1 ...

C 每日一練(STL Queue)

queue 佇列 queue 是乙個容器介面卡 container adaptor 型別,被特別設計用來執行於fifo first in first out 場景,在該場景中,只能從容器一端新增 insert 元素,而在另一端提取 extract 元素。1 有何用?queue 提供了一系列成員函式用...