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

C語言經典助教題目解析:從平方根迭代到完全數判定

     編輯:關於C語言

C語言經典助教題目解析:從平方根迭代到完全數判定

本文整理 10 道經典 C 語言練習題,涵蓋數值計算、迴圈控制、條件判斷、陣列操作、遞迴等核心考點。每題提供完整代碼、關鍵邏輯解析與常見錯誤提醒,適合期中複習與面試準備。

題目清單與核心解法

  1. 任意次方最後三位:模 1000 累乘,避免溢位 sum = (sum * m) % 1000
  2. 公式求 π 近似值:萊布尼茨級數 π/4 = 1 - 1/3 + 1/5 - ...,項值 < 1e-6 停止
  3. 實數整數部分位數:fabs 取絕對值,整數部反覆除 10 計數
  4. 二分法求方程根:區間有根判斷 f(x1)*f(x2)<0,中點迭代至 |f(x0)|<1e-6
  5. 迭代法求平方根:牛頓法 x_{n+1} = 0.5*(x_n + a/x_n),收斂快
  6. 完全數判定:真因子和等於自身,O(sqrt(n)) 優化枚舉因子
  7. 百分制成績轉等級:switch(grade/10) 利用整除特性簡化區間判斷
  8. 日期轉年間天數:閏年判斷 (y%4==0&&y%100!=0)||y%400==0,累加各月天數
  9. 字串反轉/複製/比較:指標算術原地操作,注意 \0 處理
  10. 遞迴/動態規劃入門:費波那契、背包問題變體

精選代碼片段

牛頓法求平方根 (雙精度)

double sqrt_newton(double a) {
    double x = a;
    while (fabs(x - a/x) > 1e-10) // 相對誤差更穩健
        x = 0.5 * (x + a/x);
    return x;
}

完全數判定 O(√n)

int is_perfect(int n) {
    if (n <= 1) return 0;
    int sum = 1;
    for (int i = 2; i*i <= n; i++)
        if (n % i == 0) {
            sum += i;
            if (i != n/i) sum += n/i;
        }
    return sum == n;
}

閏年判斷宏

#define IS_LEAP(y) ((y)%4==0 && ((y)%100!=0 || (y)%400==0))

通用解題模板

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main() {
    // 1. 讀取輸入 (檢查返回值)
    // 2. 邊界條件預處理
    // 3. 核心演算法 (注意精度/溢位)
    // 4. 格式化輸出 (嚴格符合題目要求)
    return 0;
}

高頻失分點提醒

  • scanf 格式字串不匹配 (如 %lf vs %f)
  • 浮點數直接比較相等 (需用 fabs(a-b) < eps)
  • 整數溢位 (用 long long 或取模運算規避)
  • 陣列越界 (循環條件 <= vs <)
  • 輸出格式多餘空格/換行 (OJ 嚴格比對)

這些題目雖屬基礎,但涵蓋了「數值精度、邊界處理、演算法複雜度、標準庫使用」四大核心能力,反覆練習至熟練,是建立扎實編程基本功的最佳路徑。

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