练习题

练习题解答

练习 1:计算倒数及倒数总和

#include <stdio.h>

int main(void)
{
    double numbers[5] = {0.0};
    double rnums[5] = {0.0};
    double sum = 0.0;

    for(int i = 0; i < 5; i++)
    {
        printf("%d>", i + 1);
        scanf("%lf", &numbers[i]);
        rnums[i] = 1.0 / numbers[i];
        sum += rnums[i];
    }

    for(int i = 0; i < 5; i++)
    {
        printf("%lf\n", rnums[i]);
    }
    printf("倒数总和:%lf\n", sum);

    return 0;
}Code language: PHP (php)

练习 2:数列求和

#include <stdio.h>

int main(void)
{
    double numbers[100] = {0.0};
    for(int i = 2; i <= 200; i += 2)
    {
        numbers[i / 2 - 1] = 1.0 / (i * (i + 1) * (i + 2));
    }

    double res = 0.0;
    for(int i = 0; i < 100; i++)
    {
        if(i % 2 == 0)
        {
            res += numbers[i];
        }
        else
        {
            res -= numbers[i];
        }
    }
    res = res * 4.0 + 3.0;
    printf("%lf\n", res);

    return 0;
}Code language: PHP (php)

练习 3:二维数组计算并输出

#include <stdio.h>

int main(void)
{
    double data[11][5];

    /* 初始化数组 */
    int row = 0;
    for(double d = 2.0; d <= 3.0; d += 0.1)
    {
        data[row][0] = d;
        data[row][1] = 1.0 / d;
        data[row][2] = d * d;
        data[row][3] = d * d * d;
        data[row][4] = d * d * d * d;
        row++;
    }

    /* 输出标题 */
    printf("%-6s %-10s %-10s %-10s %-10s\n",
           "x", "1/x", "x^2", "x^3", "x^4");

    /* 输出每一行 */
    for(int i = 0; i < 11; i++)
    {
        printf("%-6.1f %-10.4f %-10.4f %-10.4f %-10.4f\n",
               data[i][0], data[i][1], data[i][2], data[i][3], data[i][4]);
    }

    return 0;
}Code language: PHP (php)

练习 4:计算多个班级学生的平均分

这个程序支持任意多个班级、任意多个学生。输入时先输入班级数,再依次输入每个班级的学生数,然后输入每个学生的成绩。程序会输出每个学生的平均分以及该班级的平均分。

#include <stdio.h>

int main(void)
{
    int classCount = 0;
    printf("请输入班级数量: ");
    scanf("%d", &classCount);

    for(int c = 0; c < classCount; c++)
    {
        int studentCount = 0;
        printf("\n请输入第 %d 个班级的学生数量: ", c + 1);
        scanf("%d", &studentCount);

        double scores[studentCount];
        double classSum = 0.0;

        printf("请输入第 %d 个班级 %d 名学生的成绩:\n", c + 1, studentCount);
        for(int s = 0; s < studentCount; s++)
        {
            printf("  学生 %d: ", s + 1);
            scanf("%lf", &scores[s]);
            classSum += scores[s];
        }

        /* 输出该班每个学生的成绩和平均分 */
        printf("\n第 %d 个班级学生成绩:\n", c + 1);
        for(int s = 0; s < studentCount; s++)
        {
            printf("  学生 %d 成绩: %.1f, 个人平均分: %.1f\n",
                   s + 1, scores[s], scores[s]);
        }

        /* 输出班级平均分 */
        printf("第 %d 个班级的平均分: %.2f\n\n", c + 1, classSum / studentCount);
    }

    return 0;
}Code language: PHP (php)

说明

练习要点
练习 1一维数组存储原始值和倒数,注意 1.0/x 确保浮点除法
练习 2数列公式 1/(i*(i+1)*(i+2)),交替加减后乘以4加3
练习 3二维数组初始化,列标题对齐输出,步长 0.1
练习 4变长数组(VLA),嵌套循环处理多班级多学生,分别计算个人和班级平均分

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注