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

C 語言經典習題解析:次方末三位、π 逼近、完數、二分法、迭代法與日期計算

     編輯:關於C

1. 次方末三位(模運算優化)

int m, n; scanf("%d%d", &m, &n);
int r = 1;
for (int i=0; i

2. π 萊布尼茨級數逼近

double pi = 0, term = 1, denom = 1;
while (fabs(term) > 1e-6) {
    pi += term;
    denom += 2;
    term = (term > 0) ? -1.0/denom : 1.0/denom;
}
printf("%.6f\n", 4*pi);

3. 實數整數部分位數

double x; scanf("%lf", &x);
int n = (int)fabs(x), cnt = 0;
do { cnt++; n/=10; } while (n);
printf("%d\n", cnt);

4. 二分法求根

double f(double x){ return 2*x*x*x - 4*x*x + 3*x - 6; }
double a, b; scanf("%lf%lf", &a, &b);
if (f(a)*f(b) > 0) return 0;
while (fabs(f((a+b)/2)) > 1e-6) {
    double m = (a+b)/2;
    if (f(a)*f(m) < 0) b = m; else a = m;
}
printf("%.2f\n", (a+b)/2);

5. 牛頓迭代法開平方

double x, x0=1, x1; scanf("%lf", &x);
do { x0 = x1; x1 = 0.5*(x0 + x/x0); } while (fabs(x1-x0) > 1e-5);
printf("%lf\n", x1);

6. 完數(因子和等於自身)

for (int i=2; i<=1000; i++) {
    int sum = 1;
    for (int j=2; j*j<=i; j++)
        if (i%j==0) sum += j + (j*j==i ? 0 : i/j);
    if (sum == i) print_factors(i);
}

7. 日期轉年度天數

int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,d; scanf("%d-%d-%d", &y,&m,&d);
int total = d;
for (int i=0; i2 && (y%400==0 || (y%4==0 && y%100!=0))) total++;
printf("%d\n", total);

8. 百分制轉等級

int g; scanf("%d", &g);
char c = "EEEEEEEDCBAA"[g/10];  // 查表法最簡潔
printf("%c\n", c);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved