明解C语言第六章习题

简介: 明解C语言第六章习题

第一节:什么是函数

练习6-1

#include<stdio.h>
int min2(int a, int b)
{
    return (a > b) ? b : a;
}
int main()
{
    int a, b;
    printf("a="); scanf("%d", &a);
    printf("b="); scanf("%d", &b);
    printf("最小的是:%d", min2(a, b));
}

练习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()
{
    int a, b;
    printf("a="); scanf("%d", &a);
    printf("b="); scanf("%d", &b);
    printf("c="); scanf("%d", &c);
    printf("最小的是:%d", min3(a, b,c));
}

练习6-3

#include <stdio.h>
int cub(int x)
{
    return x * x * x;  
}

int main() 
{
    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() 
{
    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() 
{
    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() 
{
    printf("你好。\n");
}
int main() 
{
    hello();
}

练习6-8

#include <stdio.h>
#define NUMBER    5        
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;
}

练习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;
    }
}

练习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];
    }
}

练习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;
}

练习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++) 
    { 
        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];

            }
        }
    }
}

练习6-13

#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');
}
相关文章
TU^
|
5月前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
29 1
|
3月前
|
机器学习/深度学习 C语言
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
要保持最小的步数,每一次汉诺塔问题(无论是最初还是递归过程中的),如果此时初始柱盘子数为偶数,我们第一步是把最上面的盘子移动到中转柱,如果为奇数,我们第一步则是将其移动到目标柱。
81 0
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
TU^
|
5月前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
40 1
TU^
|
5月前
|
存储 C语言
C语言习题~day34
C语言习题~day34
TU^
34 1
TU^
|
5月前
|
算法 C语言
C语言习题~day33
C语言习题~day33
TU^
29 1
TU^
|
5月前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
18 1
TU^
|
5月前
|
C语言
C语言习题~day39
C语言习题~day39
TU^
21 0
C语言习题~day39
|
5月前
|
IDE 编译器 开发工具
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
42 0
TU^
|
5月前
|
存储 C语言
C语言习题~day38
C语言习题~day38
TU^
26 0
TU^
|
5月前
|
C语言
C语言习题~day37
C语言习题~day37
TU^
21 0