明解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-3spa

#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-4code

#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-5blog

#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-6io

#include <stdio.h>

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

int main() {
    int x;
    printf("請輸入要發出響鈴的次數:");
    scanf("%d", &x);
    alert (x);
}

練習6-7class

#include <stdio.h>

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

練習6-8static

/*
    計算英語最低分
*/

#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-10di

/*
    對數組的所有元素進行倒序排列
*/

#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();
    }
}
相關文章
相關標籤/搜索