明解C语言 入门篇 第五章练习题

明解C语言 入门篇 第五章练习题

5-1

#include <stdio.h>

int main()
{
    int i;
    int v[5];

    for (i = 0;i < 5;i ++)
    {
        v[i] = i;
    }

    for (i = 0;i < 5;i ++)
    {
        printf("v[%d] = %d\n",i,v[i]);
    }

    return 0;
}

5-2

#include <stdio.h>

int main()
{
    int i;
    int v[5];

    for (i = 0;i < 5;i ++)
    {
        v[i] = 5 - i;
    }

    for (i = 0;i < 5;i ++)
    {
        printf("v[%d] = %d\n",i,v[i]);
    }

    return 0;
}

5-3

#include <stdio.h>

int main()
{
    int i;
    int v[5] = {5,4,3,2,1};

    for (i = 0;i < 5;i ++)
    {
        printf("v[%d] = %d\n",i,v[i]);
    }

    return 0;
}

5-4

#include <stdio.h>

int main()
{
    int i;
    int a[5] = {17, 23, 36};
    int b[5];

    for (i = 0;i < 5;i ++)
    {
        b[4-i] = a[i];
    }

    puts("   a   b");
    puts("----------");
    for (i = 0;i < 5;i ++)
    {
        printf("%4d%4d\n",a[i],b[i]);
    }

    return 0;
}

5-5

#include <stdio.h>

#define NUMBER 7

int main()
{
    int i;
    int x[NUMBER];

    for (i = 0;i < NUMBER;i ++)
    {
        printf("x[%d]:",i);
        scanf("%d",&x[i]);
    }

    for (i = 0;i < NUMBER / 2;i ++)
    {
        int temp = x[i];
        x[i] = x[NUMBER - 1 - i];
        x[NUMBER - 1 - i] = temp;
    }

    puts("倒序排列了。");
    for (i = 0;i < NUMBER;i ++)
    {
        printf("x[%d] = %d\n",i,x[i]);
    }

    return 0;
}

5-6

#include <stdio.h>

int main() {
    int b;
    double a;

    a = b = 1.5;

    printf("a = %f,b = %d\n",a,b);
    return 0;
}

5-7

#include <stdio.h>

#define NUMBER 4

int main()
{
    int num;
    int i;
    int v[NUMBER];

    printf("数据个数:");
    scanf("%d",&num);

    for (i = 0;i < NUMBER;i ++)
    {
        printf("%d号:",i + 1);
        scanf("%d",&v[i]);
    }

    putchar('{');
    for (i = 0;i < NUMBER;i ++)
    {
        printf("%d",v[i]);
        if (i != NUMBER - 1)
        {
            putchar(',');
        }
    }
    putchar('}');

    return 0;
}

5-8

#include <stdio.h>

#define NUMBER 80   /* 人数上限 */

int main()
{
    int i, j;
    int num;      /* 实际人数 */
    int tensu[NUMBER];
    int bunpu[11] = {0};

    printf("请输入学生人数:");
    do {
        scanf("%d",&num);
        if (num < 1 || num > NUMBER)
        {
            printf("\a请输入1~%d之间的人数。",NUMBER);
        }
    }while (num < 1 || num > NUMBER);

    printf("请输入%d个学生的成绩。\n",num);

    for (i = 0;i < num;i ++)
    {
        printf("%2d号:",i + 1);
        do {
            scanf("%d",&tensu[i]);
            if (tensu[i] < 0 || tensu[i] > 100)
            {
                printf("\a请输入1~100的数。");
            }
        }while (tensu[i] < 0 || tensu[i] > 100);
        bunpu[tensu[i] / 10]++;
    }
    puts("----分布图----");

    for (i = 0;i <= 9;i ++)
    {
        printf("%3d~%3d:",i * 10,i * 10 + 9);
        for (j = 0;j < bunpu[i];j ++)
        {
            putchar('*');
        }
        putchar('\n');
    }

    printf("    100:");
    for (j = 0;j < bunpu[10];j ++)
    {
       putchar('*');
    }
    putchar('\n');


    return 0;
}

5-9

#include <stdio.h>

#define NUMBER 80   /* 人数上限 */

int main()
{
    int i, j;
    int num;      /* 实际人数 */
    int tensu[NUMBER];
    int bunpu[11] = {0};
    int max;

    printf("请输入学生人数:");
    do {
        scanf("%d",&num);
        if (num < 1 || num > NUMBER)
        {
            printf("\a请输入1~%d之间的人数。",NUMBER);
        }
    }while (num < 1 || num > NUMBER);

    printf("请输入%d个学生的成绩。\n",num);

    for (i = 0;i < num;i ++)
    {
        printf("%2d号:",i + 1);
        do {
            scanf("%d",&tensu[i]);
            if (tensu[i] < 0 || tensu[i] > 100)
            {
                printf("\a请输入1~100的数。");
            }
        }while (tensu[i] < 0 || tensu[i] > 100);
        bunpu[tensu[i] / 10]++;
    }

    max = bunpu[0];
    for (i = 1;i < 11;i ++)
    {
        if (max < bunpu[i])
        {
            max = bunpu[i];
        }
    }

    puts("\n--------------------------------分布图---------------------------------");

    for (i = 0;i < max;i ++)
    {
        for (j = 0;j < 11;j ++)
        {
            if (bunpu[j] >= max - i)
            {
                printf("    * ");
            } else{
                printf("      ");
            }
        }
        printf("\n");
    }

    puts("----------------------------------------------------------------------");
    puts("    0    1 0   2 0   3 0   4 0   5 0   6 0   7 0   8 0   9 0   1 0 0");


    return 0;
}

5-10

#include <stdio.h>

#define a 3
#define b 4

int main()
{
    int h1[a][b];
    int h2[b][a];
    int i, j;

    puts("请输入3行4列矩阵:");
    for (i = 0;i < a;i ++)
    {
        printf("第%d行:",i+1);
        for (j = 0;j < b;j ++)
        {
            scanf("%d",&h1[i][j]);
        }
        putchar('\n');
    }

    puts("请输入4行3列矩阵:");
    for (i = 0;i < b;i ++)
    {
        printf("第%d行:",i+1);
        for (j = 0;j < a;j ++)
        {
            scanf("%d",&h2[i][j]);
        }
        putchar('\n');
    }

    puts("两矩阵的乘积为:");
    for (i = 0;i < a;i ++)
    {
        for (j = 0;j < a;j ++)
        {
            int ptd = 0;
            for (int x = 0;x < b;x ++)
            {
                ptd += h1[i][x]*h2[x][j];
            }
            printf("%5d",ptd);
        }
        putchar('\n');
    }

    return 0;
}

5-11

#include <stdio.h>

#define a 6                /* 学生人数 */
#define b 2                /*   科目  */

int main()
{
    int grade[a][b];
    int i, j;

    /* 输入各学生各科目成绩*/
    puts("请输入成绩:");
    for (i = 0;i < a;i ++)
    {
        printf("第%d名同学\n",i + 1);
        for (j = 0;j < b;j ++)
        {
            if (j == 0)
            {
                printf("语文:");
                scanf("%d",&grade[i][j]);
            } else{
                printf("数学:");
                scanf("%d",&grade[i][j]);
            }
        }
    }

    /* 各科目总分和平均分 */
    for (i = 0;i < b; i ++)
    {
        if (i == 0)
        {
            int sum = 0;
            printf("语文的");
            for (j = 0;j < a;j ++)
            {
                sum += grade[j][i];
            }
            printf("总分为%d,",sum);
            printf("平均分为%.2f",(double)sum / a);
            putchar('\n');
        } else{
            int sum= 0;
            printf("数学的");
            for (j = 0;j < a;j ++)
            {
                sum += grade[j][i];
            }
            printf("总分为%d,",sum);
            printf("平均分为%.2f",(double)sum / a);
            putchar('\n');
        }
    }
    putchar('\n');

    /* 各个学生的总分和平均分 */
    for (i = 0;i < a; i ++)
    {
        printf("第%d名同学的",i + 1);
        int sum = 0;
        for (j = 0;j < b;j ++)
        {
            sum += grade[i][j];
        }
        printf("总分为%d",sum);
        printf(",平均分为%.2f",(double)sum / b);
        putchar('\n');
    }


    return 0;
}

5-12

#include <stdio.h>

int main()
{
    int i, j;
    int tensu1[4][3] = { {91, 63, 78}, {67, 72, 46}, {89, 34, 53}, {32, 54, 34} };  /* 第一次成绩 */
    int tensu2[4][3] = { {97, 67, 82}, {73, 43, 46}, {97, 56, 21}, {85, 46, 35} };  /* 第二次成绩 */
    int tensu[3][4][3];
    int sum[4][3];   /* 总成绩 */

    /* 求和 */
    for (i = 0;i < 4;i ++)
    {
        for (j = 0;j < 3;j ++)
        {
            sum[i][j] = tensu1[i][j] + tensu2[i][j];
        }
    }

    /* 将两次考试成绩以及总成绩存入三维数组中 */
    /* 第一次 */
    for (i = 0;i < 4;i ++)
    {
        for (j = 0;j < 3;j ++)
        {
            tensu[0][i][j] = tensu1[i][j];
        }
    }
    /* 第二次 */
    for (i = 0;i < 4;i ++)
    {
        for (j = 0;j < 3;j ++)
        {
            tensu[1][i][j] = tensu2[i][j];
        }
    }
    /* 总成绩 */
    for (i = 0;i < 4;i ++)
    {
        for (j = 0;j < 3;j ++)
        {
            tensu[2][i][j] = sum[i][j];
        }
    }

    /* 显示第一次成绩 */
    puts("第一次考试分数:");
    for (i = 0;i < 4;i ++)
    {
        for (j = 0;j < 3;j ++)
        {
            printf("%4d",tensu[0][i][j]);
        }
        putchar('\n');
    }

    /* 显示第二次成绩 */
    puts("第二次考试分数:");
    for (i = 0;i < 4;i ++)
    {
        for (j = 0;j < 3;j ++)
        {
            printf("%4d",tensu[1][i][j]);
        }
        putchar('\n');
    }

    /* 显示总成绩 */
    puts("总分:");
    for (i = 0;i < 4;i ++)
    {
        for (j = 0;j < 3;j ++)
        {
            printf("%4d",tensu[2][i][j]);
        }
        putchar('\n');
    }

    return 0;


}
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值