明解C语言 入门篇 第六章答案


练习6-1

/*
    求两个整数中的最小值
*/

#include <stdio.h>

/*--- 返回三个整数中的最小值 ---*/
int min2(int a, int b)
{
    int min = a;

    if (b < min) min = b;
    
    return min;
}

int main(void)
{
    int a, b, c;

    puts("请输入两个整数。");
    printf("整数a:");      scanf("%d", &a);
    printf("整数b:");      scanf("%d", &b);
    
    printf("最小值是%d。\n", min2(a, b));

    return 0;
}

 

 

练习6-2

/*
    求三个整数中的最小值
*/

#include <stdio.h>

/*--- 返回三个整数中的最小值 ---*/
int min3(int a, int b, int c)
{
    int min = a;

    if (b < min) min = b;
    if (c < min) min = c;
    return min;
}

int main(void)
{
    int a, b, c;

    puts("请输入三个整数。");
    printf("整数a:");      scanf("%d", &a);
    printf("整数b:");      scanf("%d", &b);
    printf("整数c:");      scanf("%d", &c);

    printf("最小值是%d。\n", min3(a, b, c));

    return 0;
}

练习6-3

#include <stdio.h>

int cub(int x) {
    return x * x * x;   //求一个数的立方
}


int main(void) {
    int x;
    
    printf("请输入一个数:");
    scanf("%d", &x);
    printf("它的立方是%d",cub(x));
        
    return 0;
}

练习6-4

#include <stdio.h>

int sqr(int x) {
    return x * x ;   //求一个数的平方
}


int main(void) {
    int x;
    
    printf("请输入一个数:");
    scanf("%d", &x);
    printf("它的四次幂是%d", sqr(sqr(x)));
        
    return 0;
}

练习6-5

#include <stdio.h>

int sumup(int n) {
    int sum = 0;
    while (n-->0)
    {
        sum += n;

    }    
    return sum;
}


int main(void) {
    int x;
    
    printf("请输入一个数:");
    scanf("%d", &x);
    printf("从1到%d之间所有整数的和是%d",x, sumup(x));
        
    return 0;
}

练习6-6

#include <stdio.h>

void alert(int n) {
    while (n-- > 0)
    {
        putchar('\a');
    }
}

int main() {
    int x;
    printf("请输入要发出响铃的次数:");
    scanf("%d", &x);
    alert (x);
}

练习6-7

#include <stdio.h>

void hello(void) {
    puts("你好。");
}
int main() {
    hello();
}

练习6-8

/*
    计算英语最低分
*/

#include <stdio.h>

#define NUMBER    5        /* 学生人数 */

/*--- 返回元素个数为n的数组v中的最小值 ---*/
int min_of(const int v[], int n)
{
    int i;
    int min = v[0];

    for (i = 1; i < n; i++)
        if (v[i] < min)
            min = v[i];
    return min;
}

int main(void)
{
    int i;
    int eng[NUMBER];        
        
    int min_e;

    printf("请输入%d名学生的分数。\n", NUMBER);
    for (i = 0; i < NUMBER; i++) {
        printf("[%d]英语:", i + 1);  scanf("%d", &eng[i]);
    
    }
    min_e = min_of(eng, NUMBER);    /* 英语的最低分 */
    

    printf("英语的最低分=%d\n", min_e);



    return 0;
}

练习6-9

/*
    对数组的全部元素进行倒序排列
*/

#include <stdio.h>
#define number 7

void rev_intary(int v[], int n)
{
    
    
    int i;
    for (i = 0; i < n/ 2 - 1; i++) {    /* 对数组元素进行倒序排列 */
        int temp = v[i];
        v[i] = v[n - 1 - i];
        v[n- 1 - i] = temp;
    }
}

int main() {
    int i;
    int x[number];
    for (i = 0; i < number; i++) {    /* 输入元素的值 */
        printf("x[%d] : ", i);
        scanf("%d", &x[i]);
    }
    
    rev_intary(x, number);


    puts("倒序排列了。");
    for (i = 0; i < number; i++)        /* 显示元素的值 */
        printf("x[%d] = %d\n", i, x[i]);

    return 0;

}

练习6-10

/*
    对数组的全部元素进行倒序排列
*/

#include <stdio.h>
#define number 7

void intary_rcpy(int v1[], const int v2[], int n)
{

    int i;
for (i = 0; i < n; i++) {
    v1[i] = v2[n - i - 1];
}


}

int main() {
    int i;
    int x[number];
    int y[number];
    for (i = 0; i < number; i++) {    /* 输入元素的值 */
        printf("x[%d] : ", i);
        scanf("%d", &x[i]);
    }

    intary_rcpy(y, x, number);


    puts("倒序排列了。");
    for (i = 0; i < number; i++)        /* 显示元素的值 */
        printf("y[%d] = %d\n", i, y[i]);

    return 0;

}

练习6-11

#include <stdio.h>
#define number 5

int search_idx(const int v[], int idx[], int key, int n) {

    int i;
    int x = 0;
    for (i = 0; i < n; i++) {
        if (v[i] == key)
            x++;
        idx[x] = v[i];
    }
    return x;
}
    
int main() {
    int v[number];
    int y[number + 1];


    int i;
    int key;
    printf("要查找的值是:");
    scanf("%d", &key);
    for (i = 0; i < number; i++) {
        printf("v[%d]=", i);
        scanf("%d", &v[i]);
    }
    int x = search_idx(v, y, key, number);
    printf("有%d个相同的元素", x);
}
    

练习6-12

#include<stdio.h>


void mat_mul(const int a[4][3], const int b[3][4], int c[3][3]) {

    int i, j, k;

    for (i = 0; i < 3; i++) {    //计算矩阵c的值 
        for (j = 0; j < 3; j++) {
            c[i][j] = 0;
            for (k = 0; k < 3; k++) {
                c[i][j] += a[i][k] * b[k][j];

            }

        }
    }
}


int main()
{
    int a[4][3];
    int b[3][4];
    int i, j, k, x, y, c[3][3];
    printf("输入4*3 个数 以空格隔开:\n");
    for (i = 0; i < 4; i++)
        for (k = 0; k < 3; k++)
            scanf("%d", &a[i][k]);
    printf("输入3*4 个数 以空格隔开:\n");
    for (i = 0; i < 3; i++)
        for (k = 0; k < 4; k++)
            scanf("%d", &b[i][k]);

    mat_mul(a, b, c);

    for (x = 0; x < 3; x++)
    {
        for (y = 0; y < 3; y++)
            printf("%d\t", c[x][y]);
        printf("\n");
    }
    return 0;
}

 

 

 

练习6-13

/*
    求4名学生在两次考试中3课程的总分并显示(函数版)
*/

#include <stdio.h>

/*--- 将4行3列矩阵a和b的和存储在c中 ---*/
void mat_add(const int a[4][3], const int b[4][3], int c[2][4][3])
{
    int x, y, z;

    for (x = 0; x < 2; x++)
        for (y = 0; y < 4; y++)
            for (z = 0; z < 3; z++) {
                c[x][y][z] = a[y][z] + b[y][z];
            }
}

/*--- 显示4行3列矩阵m ---*/
void mat_print(const int m[4][3])
{
    int i, j;

    for (i = 0; i < 4; i++) {
        for (j = 0; j < 3; j++)
            printf("%4d", m[i][j]);
        putchar('\n');
    }
}

int main(void)
{
    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 sum[2][4][3];            /* 总分 */

    mat_add(tensu1, tensu2, sum);                /* 求两次考试中成绩的总和 */

    puts("第一次考试的分数");  mat_print(tensu1);    /* 显示第一次考试的分数 */
    puts("第二次考试的分数");  mat_print(tensu2);    /* 显示第二次考试的分数 */
    puts("总分");        mat_print(sum);        /* 显示总分 */

    return 0;
}

 

练习6-14

#include <stdio.h>
#define number 4


int main() {
    int i;
    static double x[number];
    for (i = 0; i < number; i++) {
        printf("v[%d]=%.1f", i, x[i]);
        putchar('\n');
    }
}

练习6-15

#include <stdio.h>


void put_count() {
    static i = 1;
    printf("put-count:第%d次", i++);
    putchar('\n');

}

int main() {
    int i;
    for (i = 0; i < 5; i++) {
        put_count();
    }
}

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM