首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言經典編程 50 例(第一輯):入門必練 10 題詳解

     編輯:關於C語言

C 語言經典編程 50 例(第一輯):入門必練 10 題詳解

收錄《C語言程序設計50例》前 10 道經典習題,涵蓋排列組合、分段函數、數學性質、日期計算、排序、圖形輸出、九九乘法表、棋盤打印、樓梯圖案等核心基礎知識點。每題附帶分析思路、完整代碼與運行結果,適合初學者夯實編程基本功。

例 1:三位數不重複排列

題目:用 1、2、3、4 組成互不相同且無重複數字的三位數,統計個數並列舉。
思路:三重循環遍歷百位、十位、個位,`if` 判斷三位互不相同。
代碼片段:

for (i=1; i<5; i++)
  for (j=1; j<5; j++)
    for (k=1; k<5; k++)
      if (i!=k && i!=j && j!=k)
        printf("%d,%d,%d\n", i, j, k);
輸出:24 個排列(4×3×2=24)。

例 2:企業獎金提成計算

題目:按利潤分段計算獎金:≤10萬提 10%,10-20萬超額提 7.5%,20-40萬提 5%,40-60萬提 3%,60-100萬提 1.5%,>100萬提 1%。
思路:預計算各段檻值獎金,用 `if-else` 定位區間,基礎獎金 + 超額部分×比率。注意用 `long` 防溢出。
關鍵代碼:

bonus1 = 100000 * 0.1;
bonus2 = bonus1 + 100000 * 0.075;
...
if (i <= 100000) bonus = i * 0.1;
else if (i <= 200000) bonus = bonus1 + (i-100000)*0.075;
...

例 3:完全平方數尋找

題目:一整數加 100 後是完全平方數,再加 168(共 268)也是完全平方數,求該數。
思路:暴力枚舉 1~100000,判斷 `sqrt(x+100)` 和 `sqrt(x+268)` 是否為整數(平方後等於原數)。
數學洞察:設 x+100=a², x+268=b² → b²-a²=168 → (b-a)(b+a)=168,可轉化為因子分解問題,更高效。

例 4:日期轉年內天數

題目:輸入年月日,輸出是當年的第幾天。
思路:`switch` 累加前幾月天數,加上日數。閏年判斷:`(year%400==0) || (year%4==0 && year%100!=0)`,若閏年且月份>2 則總天數+1。
代碼結構:

switch(month) { case 1: sum=0; break; case 2: sum=31; break; ... }
sum += day;
if (leap && month > 2) sum++;

例 5:三數排序輸出

題目:輸入 x,y,z,按小到大輸出。
思路:兩兩交換法:先使 x 為最小(與 y、z 比較交換),再使 y ≤ z。共 3 次比較交換。
代碼:

if (x>y) swap(x,y);
if (x>z) swap(x,z);
if (y>z) swap(y,z);

例 6:字母 C 圖案

題目:用 `*` 輸出字母 C。
思路:紙上畫好逐行 `printf`。
輸出:

 ****
 *
 *
 ****

例 7:特殊字符圖案

題目:用 ASCII 176、219 輸出對稱圖案。
思路:字符陣列直接輸出,展示擴展字符視覺效果。
代碼:

char a=176, b=219;
printf("%c%c%c%c%c\n", b,a,a,a,b);
printf("%c%c%c%c%c\n", a,b,a,b,a);
...

例 8:九九乘法表

題目:輸出 9×9 乘法口訣表。
思路:雙層循環 `i=1..9, j=1..9`,`%-3d` 左對齊寬度 3 保證對齊。
輸出片段:

1*1=1   1*2=2   1*3=3 ...
2*1=2   2*2=4   2*3=6 ...

例 9:國際象棋棋盤

題目:輸出 8×8 棋盤(黑白相間)。
思路:`(i+j)%2==0` 打印雙字符塊(219,219),否則打印空格。
代碼:

for(i=0;i<8;i++)
  for(j=0;j<8;j++)
    if((i+j)%2==0) printf("%c%c",219,219); else printf("  ");
  printf("\n");

例 10:樓梯與笑臉

題目:打印樓梯,頂部兩個笑臉(ASCII 1)。
思路:外層控制行數,內層打印與行號相等數量的方塊字符。
輸出:

☻☻
██
████
██████
...

學習建議

  1. **先不看代碼自己寫** —— 遇到卡殼再參考。
  2. **手動模擬執行** —— 尤其例 2 分段函數、例 4 閏年邏輯。
  3. **修改參數擴展** —— 如例 1 改為 1~9 組成 4 位數,例 8 改為 12×12 乘法表。
  4. **注意格式控制** —— `printf` 寬度、對齊、換行是輸出題關鍵。

總結

這 10 例橫跨循環控制、條件分支、數學建模、日期邏輯、排序思想、字符圖形輸出等 C 語言核心基礎。熟練掌握它們,意味著你已具備了解決實際問題的基本編程思維與語法工具。建議繼續挑戰後續 40 例,逐步進階至指針、數組、字符串、結構體、文件操作等進階主題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved