《程序设计技术》第一章例程

《程序设计技术》例程

《程序设计技术》第一章 C语言与程序设计(例程)
《程序设计技术》第二章 C语言基础知识(例程)
《程序设计技术》第三章 程序控制结构(例程)
《程序设计技术》第四章 数组和字符串(例程)
《程序设计技术》第五章 指针(例程)
《程序设计技术》第六章 函数(例程)
《程序设计技术》第七章 用户自定义类型(例程)
《程序设计技术》第八章 文件(例程)
《程序设计技术》第九章 编译预处理(例程)

第一章 C语言与程序设计
例1-1:

/* 例1-1 求任意两个数的和与平均值 */

#include <stdio.h>

int main(void)
{
    float a, b, sum, average; 		/* 声明变量 */
    scanf("%f,%f", &a, &b); 		/* 读入两个浮点数 */
    sum = a + b;					/* 求两个数的和 */
    average = sum / 2;				/* 求两个数的平均 */
    printf("sum=%.3f, average=%.3f\n", sum, average);/* 输出结果 */

    return 0;
}

例1-2A:

/* 例1-2 计算体育比赛的得分,10个裁判打分,去掉最低分和最高分。 */

#include<stdio.h>

#define N 10a

int main(void)
{
    float s[N],max, min, sum, score;/* 声明变量 */
    int i;

    for(i=0; i<N; i++)				/* 读入N个数 */
        scanf("%f", &s[i]);

    max = min = sum = s[0];			/* 计算最高分、最低分以及和值 */
    for(i=1; i<N; i++)
    {
        if(s[i] > max)
            max = s[i];
        if(s[i] < min)
            min = s[i];
        sum += s[i];
    }

    score = (sum - max - min) / (N - 2);    /* 计算最后得分 */
    printf("Score=%.4f", score);            /* 输出结果 */

    return 0;
}

例1-2B:

/* 例1-2 计算体育比赛的得分,10个裁判打分,去掉最低分和最高分。 */

#include <stdio.h>
#include <limits.h>

#define N 10

int main(void)
{
    float a, max, min, sum, score;	/* 声明变量 */
    int i;

    /* 求最高分、最低分以及和值 */
    max = INT_MIN;
    min = INT_MAX;
    sum = 0;
    for(i=1; i<=N; i++) {	/* 读入N个数,并计算最值及和 */
        scanf("%f", &a);

        if(a > max)
            max = a;
        if(a < min)
            min = a;
        sum += a;
    }

    score = (sum - max - min) / (N - 2);  /* 求最后得分 */
    printf("Score=%.4f", score);            /* 输出结果 */

    return 0;
}

例1-3A:

/* 例1-3 计算正整数m和n的最大公约数。
 * 欧几里得算法的递归程序
 */

#include <stdio.h>

int gcd(int n, int m)
{
    return n == 0 ? m : gcd(m % n, n);
}

int main(void)
{
    int m, n;

    while(~scanf("%d%d", &m, &n))
        printf("%d\n", gcd(n, m));

    return 0;
}

例1-3B:

/* 例1-3 计算正整数m和n的最大公约数。
 * 欧几里得算法的递推程序
 */

#include <stdio.h>

int gcd(int n, int m)
{
    int r;

    while(n > 0) {
        r = m % n;
        m = n;
        n = r;
    }

    return m;
}

int main(void)
{
    int m, n;

    while(~scanf("%d%d", &m, &n))
        printf("%d\n", gcd(n, m));

    return 0;
}

例1-3C:

/* 例1-3 枚举法:计算正整数m和n的最大公约数。*/

#include <stdio.h>

int main(void)
{
    int m, n;

    while(scanf("%d%d", &m, &n) != EOF) {
        int x = m > n ? n : m;
        for(;;) {
            if(m % x == 0 && n % x == 0)
                break;
            x--;
        }
        printf("gcd=%d\n", x);
    }

    return 0;
}

例1-4:

/* 例1-4 枚举法:给定一个正整数,判断其立方根是否存在,若存在输出其值 */

#include <stdio.h>

int main(void)
{
    int n, x = 1, c;

    scanf("%d", &n);

    /*
    do {
        c = x * x * x;
        x++;
    } while(c < n);
    */

    c = x * x * x;
    while(c < n) {
        x++;
        c = x * x * x;
    }

    if(c == n)
        printf("%d", x);
    else
        printf("no result");

    return 0;
}

例1-5A:

/* 例1-5 计算一个整数n的阶乘 */

#include <stdio.h>

int main(void)
{
    int factorial=1, i=1, n;
    scanf("%d", &n);
    while(i<=n) {
        factorial *= i++;

        /*
        factorial = factorial * i;
        i = i + 1;
        */
    }

    printf("factorial=%04d\n", factorial);

    return 0;
}

例1-5B:

/* 例1-5 计算一个整数n的阶乘(递推) */

#include <stdio.h>

long long factorial(int n)
{
    long long factorial=1;
    int i=1;
    while(i<=n)
        factorial *= i++;
    return factorial;
}

int main(void)
{
    int n;
    scanf("%d", &n);

    printf("n=%d\tfactorial=%lld\n", n, factorial(n));

    return 0;
}

例1-6A:

/* 例1-6 用递归法计算一个整数n的阶乘。 */

#include <stdio.h>

long factorial(int);

int main(void)
{
    int n;
    scanf("%d", &n);
    printf("n=%d fact=%ld\n", n, factorial(n));

    return 0;
}

long factorial(int n)
{
    if(n==0 || n==1)
        return 1;
    else
        return n * factorial(n-1);
}

例1-6B:

/* 例1-6 计算一个整数n的阶乘(递归) */

#include <stdio.h>


/*
int fact(int n)
{
    if(n == 1)
        return 1;
    else
        return n * fact(n - 1);
}
*/

int fact(int n)
{
    return n == 1 ? 1 : n * fact(n - 1);
}

int main(void)
{
    int n;

    scanf("%d", &n);

    printf("factorial=%04d\n", fact(n));

    return 0;
}

例1-7:

/* 例1-7 爬楼梯:每一步只能走1级或2级台阶,到达第n级台阶共有几种走法 */

#include <stdio.h>


int fib(int m)
{
    if(m == 1)
        return 1;
    else if(m == 2)
        return 2;
    else
        return fib(m - 1) + fib(m - 2);
}

int main(void)
{
    int n;

    while(scanf("%d", &n) != EOF)
        printf("fib=%d\n", fib(n));

    return 0;
}

猜你喜欢

转载自blog.csdn.net/tigerisland45/article/details/84469745