C Primer Plus 第六版第十章编程练习答案

部分习题代码丢失,需要请联系博主。
编译环境:Visual Studio 2017

#include<stdio.h>
#include<stdlib.h>
//2.
void copy_arr(double target1[], double source[], int n);
void copy_ptr(double *p, double *pp, int n);
void copy_ptrs(double *start, double source[], double *end);
int main()
{
    int i;
    double source[5] = { 1.1,2.2,3.3,4.4,5.5 };
    double target1[5];
    double target2[5];
    double target3[5];
    double *p, *pp;
    double *start;
    p = target2;
    pp = source;
    start = target3;
    copy_arr(target1, source, 5);
    copy_ptr(p, pp, 5);
    copy_ptrs(start, source, source+5);

    printf("target1=");
    for (i = 0; i < 5; i++)
        printf("%lf ", target1[i]);
    printf("\n");

    printf("target2=");
    for (i = 0; i < 5; i++)
        printf("%lf ", target2[i]);
    printf("\n");

    printf("target3=");
    for (i = 0; i < 5; i++)
        printf("%lf ", target3[i]);

    system("pause");
    return 0;
}
void copy_arr(double target1[], double source[], int n)
{
    int i;
    for (i = 0; i < n; i++)
        target1[i] = source[i];
    return 0;   
}
void copy_ptr(double *p, double *pp, int n)
{
    int i;
    for (i = 0; i < n; i++)
        *(p+i) = *(pp+i);
    return 0;
}
void copy_ptrs(double *start, double source[], double *end)
{

    while (source<end)
    {
       *start = *source;
       start++;
       source++;
    }

    return 0;
}
//3.
int maxx(int num[], int n);
int main()
{
    int i;
    int num[10];
    for (i = 0; i < 10; i++)
        scanf("%d", &num[i]);
    i = maxx(num, sizeof num / sizeof num[0]);
    printf("max=%d", i);
    system("pause");
    return 0;
}
int maxx(int num[], int n)
{
    int i, max;
    max = 0;
    for (i = 0; i < n; i++)
    {
        if (max < num[i])
            max = num[i];
    }
    return max;
}
//4.
int maxx(double num[], int n);
int main()
{
    int i;
    double num[10] = { 1.1,2.2,3.3,4.4,5.5,6.6,1.11,2.22,33.3,9.9 };
    i = maxx(num, sizeof num / sizeof num[0]);
    printf("i=%d", i);
    system("pause");
    return 0;
}
int maxx(double num[], int n)
{
    int i,j,k;
    for (i=0,j=0;i<n;i++)
    {
        if (j < num[i])
        {
            j = num[i];
            k = i;
        }
    }
    return k;
}
//5.
double cha(double num[], int n);
int main()
{
    double i;
    double num[10] = { 1.1,2.2,3.3,4.4,5.5,6.6,1.11,2.22,33.3,9.9 };
    i = cha(num, sizeof num / sizeof num[0]);
    printf("cha=%lf", i);
    system("pause");
    return 0;
}
double cha(double num[], int n)
{
    int i;
    double j=0, k=num[0], l;
    for (i = 0; i < n; i++)
    {
        if (j < num[i])
            j = num[i];
        if (k > num[i])
            k = num[i];
    }
    l = j - k;
    return l;
}
//6.
void dao(double num[], int n);
int main()
{
    double num[5] = { 1.1,2.2,3.3,4.4,5.5 };
    dao(num, 5);
    system("pause");
    return 0;
}
void dao(double num[], int n)
{
    double dnum[5];
    int i,j;
    for (i = 0, j = 4; i < n, j>=0; i++, j--)
        dnum[j] = num[i];
    for (i = 0; i < 5; i++)
        printf("%lf ", dnum[i]);
    return 0;
}
//7.
void copy(int target[], int source[], int n, int m);
int main()
{
    int source[3][3]=
    {
        {1,2,3},
        {4,5,6},
        {7,8,9}
    };
    int target[3][3];
    copy(target, source, 3, 3);

    system("pause");
    return 0;
}
void copy(int target[], int source[], int n, int m)
{
    int(*p)[3];
    int(*q)[3];
    p = target;
    q = source;
    int i,j;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            *(*(p + i) + j) = *(*(q + i) + j);
            printf("%d ", *(*(p + i) + j));
        }
        if (j == m)
            printf("\n");
    }
}
//8.
void copy_3(double *p, double *q, int n);
int main()
{
    double source[7] = { 1.1,2.2,3.3,4.4,5.5,6.6,7.7 };
    double target[3];
    double *p, *q;
    p = target;
    q = source;
    copy_3(p, q, 3);
    system("pause");
    return 0;
}
void copy_3(double *p, double *q, int n)
{
    for (; n > 0; n--)
    {
        *(p + n - 1) = *(q + 2 + n - 1);
        printf("%lf ", *(p + n - 1));//这里倒序输出了
    }
}
//9.
void copy(int num[][5],int num2[][5], int row);
void display(int num[][5], int row);
int main()
{
    int source[3][5] = {
    {1,2,3,4,5},
    {6,7,8,9,10},
    {11,12,13,14,15}
    };
    int target[3][5];
    copy(target, source, 3);
    display(source,3);
    printf("\n");
    display(target, 3);
    system("pause");
    return 0;
}
void copy(int num[][5], int num2[][5], int row)
{
    int i, j;
    for (i = 0; i < row; i++)
        for (j = 0; j < 5; j++)
            *(*(num + i) + j) = *(*(num2 + i) + j);
}
void display(int num[][5], int row)
{
    int i, j;
    for (i = 0; i < row; i++)
        for (j = 0; j < 5; j++)
            printf("%d ", num[i][j]);
}
//10.
void sumnum(int num[], int num1[], int num2[], int n);
int main()
{
    int num[] = { 2,4,5,8 };
    int num1[] = { 1,0,4,6 };
    int num2[4];
    sumnum(num, num1, num2, 4);
    system("pause");
    return 0;
}
void sumnum(int num[], int num1[], int num2[], int n)
{
    int i;
    for (i = 0; i < 4; i++)
    {
        *(num2 + i) = *(num + i) + *(num1 + i);
        printf("%d ", *(num2 + i));
    }
}
//11-12.
void fanbei(int target[][5], int source[][5], int n);
void display(int num[][5], int n);
int main()
{
    int source[3][5] = {
    {1,1,1,1,1},
    {2,2,2,2,2},
    {3,3,3,3,3}
    };
    int target[3][5];
    fanbei(target, source, 3);
    display(source, 3);
    printf("\n");
    display(target, 3);
    system("pause");
    return 0;
}
void fanbei(int target[][5], int source[][5], int n)
{
    int i, j;
    for (i = 0; i < n; i++)
        for (j = 0; j < 5; j++)
            *(*(target + i) + j) = *(*(source + i) + j) * 2;
}
void display(int num[][5], int n)
{
    int i,j;
    for (i = 0; i < n; i++)
        for (j = 0; j < 5; j++)
            printf("%d ", num[i][j]);
}
//13
void zupingjun(double num[][5], int row);
double allpingjun(double num[][5], int row);
double maxx(double num[][5], int row);
int main()
{
    double num[3][5] = {
    {1,1,1,1,1},
    {2,2,2,2,2},
    {3,3,3,3,3}
    };
    zupingjun(num, 3);
    allpingjun(num, 3);
    maxx(num, 3);
    system("pause");
    return 0;
}
void zupingjun(double num[][5], int row)
{
    int i,j;
    double k;
    for (i = 0,k=0; i < row; i++,k=0)
    {
        for (j = 0; j < 5; j++)
            k += num[i][j];
        if (j == 5)
            printf("zupingjun is %lf\n", k / 5);

    }

}
double allpingjun(double num[][5], int row)
{
    int i, j;
    double k = 0;
    for (i = 0; i < row; i++)
        for (j = 0; j < 5; j++)
            k += num[i][j];
    printf("allpingjun is %lf\n", k / 15);
    return k / 15;

}
double maxx(double num[][5], int row)
{
    int i, j, k = 0;
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < 5; j++)
        {
            if (k < num[i][j])
                k = num[i][j];
        }
    }
    printf("max=%d", k);
    return k;
}

2018.6.1

猜你喜欢

转载自blog.csdn.net/qq_38967295/article/details/80532328