zoukankan      html  css  js  c++  java
  • 《C程序设计的抽象思维》1.9编程练习

    本文地址:http://www.cnblogs.com/archimedes/p/programming-abstractions-in-c-1.html,转载请注明源地址。

    1、温度转换:

    #include<stdio.h>
    int main()
    {
        double C;
        while(~scanf("%lf", &C))
            printf("%lf
    ", 9 * C * 1.0 / 5 + 32);
        return 0;
    }   

    2、长度转换:

    #include<stdio.h>
    int main()
    {
        double YCI, YC, M;
        while(~scanf("%lf", &M)){
            printf("YCI:%lf
    ", 1.0 / 0.0254);
            printf("YC:%lf
    ", 1.0 / 12);
        }
        return 0;
    }   

    3、计算1+2+3+……+100

    #include<stdio.h>
    int main()
    {
        int sum = 0;
        for(int i = 1; i <= 100; i++)
            sum += i;
        printf("%d
    ", sum);
        return 0;
    }   

    4、计算序列值

    #include<stdio.h>
    int main()
    {
        int N, i, sum;
        scanf("%d", &N);
        sum = 0;
        i = 1;
        while(i <= N)
            sum += 2 * (i++) - 1;
        printf("%d
    ", sum);
        return 0;
    }   

    5、按照指定格式输入一个整数序列中的最大值

    #include<stdio.h>
    int main()
    {
        int max, n, i;
        printf("This program finds the largest integer in a list.
    ");
        printf("Enter 0 to sigal the end of the list.
    ");
        printf("? ");
        max = -1;
        while(scanf("%d", &n) && n) {
            if(max < n) max = n;
            printf("? ");
        }
        printf("The largest value is %d
    ", max);
        return 0;
    }   

    6、反转打印输入的整数

    #include<stdio.h>
    void print(int N)
    {
        printf("The reverse number is ");
        while(N) {
            printf("%d", N % 10);
            N /= 10;
        }
        printf("
    ");
    }
    int main()
    {
        int N;
        printf("This program reverses the digits in an integer.
    ");
        printf("Enter a positive integer: ");
        scanf("%d", &N);
        print(N);
        return 0;
    }   

    7、寻找完全数

    #include<stdio.h>
    #include<math.h>
    #include<stdbool.h>
    bool IsPerfect(int n)
    {
        int m, sum, t;
        sum = 1;
        m = (int)sqrt(n);
        for(int i = 2; i <= m; i++){ 
            if(n % i == 0) {
                if(i * i == n) {
                    sum += m;
                } else {
                    sum += (i + n / i);
                }
            }
        }
        if(sum == n)
            return true;
        else
            return false;
    }
    int main()
    {
        for(int i = 2; i <= 9999; i++) {
            if(IsPerfect(i))
                printf("%d
    ", i);
        }
        return 0;
    }   

    8、按照指定格式分解质因数

    #include<stdio.h>
    #include<math.h>
    #include<stdbool.h>
    #define N 100000
    int isprime[N];
    bool prime(int n)
    {
        int i;
        for(i = 2; i * i <= n; i++) {
            if(n % i == 0)
                return false;
        }
        return true;
    }
    void init()
    {
        int i, k;
        k = 0;
        for(i = 2; i < 100000; i++) {
            if(prime(i))
                isprime[k++] = i;
        }
    }
    void solve()
    {
        int i, n, flag, k, t;
        init();
        printf("Enter number to be factored: ");
        while(~scanf("%d", &n)) {
            k = flag = 0;
            if(prime(n)) {
                printf("%d
    ", n);
            } else {
                t = n;
                while(isprime[k] < n) {
                    while(t % isprime[k] == 0) {
                        if(!flag) {
                            flag = 1;
                            printf("%d", isprime[k]);
                        } else {
                            printf(" * %d", isprime[k]);
                        }
                        t /= isprime[k];
                    }
                    k++;
                }
                printf("
    ");
            }
            printf("Enter number to be factored: ");
        }
    }
    int main()
    {
        solve();
        return 0;
    }   

    9、浮点数按照规则转化为整数

    #include<stdio.h>
    #include<math.h>
    #include<stdbool.h>
    void Round(float n)
    {
        int m;
        m = floor(n);
        if(n > 0) {
            if(n - m < 0.5) {
                printf("%d
    ", m);
            } else {
                printf("%d
    ", m + 1);
            }
        } else {
            if(n - 0.5 > m) {
                printf("%d
    ", m + 1);
            } else {
                printf("%d
    ", m);
            }
        }
            
    }
    int main()
    {
        float n;
        while(~scanf("%f", &n))
            Round(n);
        return 0;
    }   

    10、利用莱布利兹公式计算PI

    #include<stdio.h>
    #include<math.h>
    #include<stdbool.h>
    double count(int n)
    {
        int t, i;
        double ans = 0.0;
        t = 1;
        for(i = 1; i <= n; i++) {
            ans += t * 1.0 / (2 * i - 1);
            t *= -1;
        }
        return 4 * ans;
    }
    int main()
    {
        printf("%f
    ", count(10000));
        return 0;
    }   

    11、通过扇形的面积近似计算PI

    #include<stdio.h>
    #include<math.h>
    #include<stdbool.h>
    #define N 100
    void solve()
    {
        int i;
        double w, r, ans, x;
        r = 2.0;
        w = r / N;
        ans = 0.0;
        for(i = 1; i <= N; i++) {
            x = w * (i - 0.5);
            ans += sqrt(r * r - x * x) * w;
        }
        printf("%f
    ", ans);
    }
    int main()
    {
        solve();
        return 0;
    }   

     

  • 相关阅读:
    BZOJ2752: [HAOI2012]高速公路(road)
    BZOJ1146: [CTSC2008]网络管理Network
    BZOJ3545: [ONTAK2010]Peaks
    启发式算法
    特征选择算法
    傅里叶变换 小波变换
    流类库 输入输出
    模板与异常处理
    多态性
    派生类与继承
  • 原文地址:https://www.cnblogs.com/wuyudong/p/programming-abstractions-in-c-1.html
Copyright © 2011-2022 走看看