zoukankan      html  css  js  c++  java
  • c primer plus 习题答案(3)

    p281.2

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define SIZE 5
     4 void copy_arr(double ar[], double pr[],int n);
     5 void copy_ptr(double ar[], double pr[], int n);
     6 
     7 int main(void)    
     8 {
     9     double source[5]={1.1, 2.2, 3.3, 4.4, 5.5};
    10     double target1[5];
    11     double target2[5];
    12 
    13     copy_arr(source, target1, 5);
    14     copy_ptr(source, target2, 5);
    15     
    16     system("pause");
    17     return 0;
    18 }
    19 
    20 void copy_arr(double ar[], double pr[],int n)
    21 {
    22     int i;
    23     for(i=0; i<n; i++)
    24     {
    25         pr[i]=ar[i];
    26         printf(" %lf", pr[i]);
    27     }
    28     printf("
    ");
    29 }
    30 
    31 void copy_ptr(double ar[], double pr[], int n)
    32 {
    33     int i;
    34     for(i=0; i<5; i++)
    35     {
    36         *(pr+i)=*(ar+i);
    37         printf(" %lf", pr[i]);
    38     }
    39     printf("
    ");
    40 }

    p281.4

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define n 5
     4 int compare(double [], int);
     5 
     6 
     7 int main(void)    
     8 {
     9     double ar[]={2.1, 3.1, 4.1, 3.2, 6.2};
    10     printf("the biggest number index is %d", compare(ar, n));
    11 
    12     system("pause");
    13     return 0;
    14 }
    15 
    16 int compare(double ar[], int num){
    17     int i, max=ar[0], j=0;
    18 
    19     for(i=1; i<num; i++){
    20         if(max<ar[i]){
    21             max=ar[i];
    22             j=i;
    23         }
    24     }
    25     return j;
    26 }

    p281.5

     1 #includestdio.h
     2 #includestdlib.h
     3 #define n 5
     4 double d_value(double [], int);
     5 
     6 
     7 int main(void)    
     8 {
     9     double ar[]={2.1, 3.1, 4.1, 3.2, 6.2};
    10     printf(the difference value is %lf, d_value(ar, n));
    11 
    12     system(pause);
    13     return 0;
    14 }
    15 
    16 double d_value(double ar[], int num){
    17     int i; 
    18     double max=ar[0], min=ar[0];
    19 
    20     for(i=1; inum; i++){
    21         if(maxar[i])
    22             max=ar[i];
    23     }
    24 
    25     for(i=1; inum; i++){
    26         if(minar[i])
    27             min=ar[i];
    28     }
    29     return max-min;
    30 }

    p281.6

    A方案

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define COLS 2
     4 #define ROWS 3
     5 void copy_ptr(double source[ROWS][COLS], double target[ROWS][COLS]);
     6 
     7 int main(void)    
     8 {
     9     int i, j;
    10     double source[ROWS][COLS]={{2.1, 1.2}, {3.1, 2.3}, {4.2, 3.5}}; 
    11     double target[ROWS][COLS]={0};
    12     
    13     for(i=0; i<ROWS; i++)
    14         for(j=0; j<COLS; j++)
    15     printf(" %lf", source[i][j]);
    16     printf("
    ");
    17     copy_ptr(source, target);
    18 
    19     system("pause");
    20     return 0;
    21 }
    22 
    23 void copy_ptr(double source[ROWS][COLS], double target[ROWS][COLS])
    24 {
    25     int i, j;
    26 
    27     for(i=0; i<ROWS; i++)
    28         for(j=0; j<COLS; j++){
    29             target[i][j]=source[i][j];
    30             printf(" %lf", target[i][j]);
    31         }
    32     printf("
    ");
    33 }

    B方案

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define COLS 2
     4 #define ROWS 3
     5 void copy_ptr(double source[][COLS], double target[][COLS], int);
     6 void copy_ar(double *a1, double *a2, int n);
     7 
     8 int main(void)    
     9 {
    10     int i, j;
    11     double source[ROWS][COLS]={{2.1, 1.2}, {3.1, 2.3}, {4.2, 3.5}}; 
    12     double target[ROWS][COLS]={0};
    13 
    14     copy_ptr(source, target, ROWS);
    15     for(i=0; i<ROWS; i++)
    16         for(j=0; j<COLS; j++)
    17             printf(" %lf", target[i][j]);
    18     
    19     system("pause");
    20     return 0;
    21 }
    22 
    23 void copy_ptr(double source[ROWS][COLS], double target[ROWS][COLS], int n)
    24 {
    25     int i;
    26 
    27     for(i=0; i<n; i++){
    28         copy_ar(source[i], target[i], COLS);
    29     }    
    30 }
    31 
    32 void copy_ar(double *a1, double *a2, int n)
    33 {
    34     int i;
    35 
    36     for(i=0; i<n; i++)
    37         *(a2+i)=*(a1+i);
    38 }

    p281.10

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define COLS 5
     4 void dbl(int [][COLS], int [][COLS], int);
     5 void typeout(int[][COLS], int);
     6 
     7 int main(void)
     8 {
     9     int source[3][5]={{1, 2, 7, 4, 1}, {2, 3, 8, 5, 4}, {5, 6, 8, 3, 2}};
    10     int ar[6][COLS]={0}, rows=3;
    11 
    12     dbl(source, ar, rows);
    13     typeout(source, rows);
    14     typeout(ar, rows);
    15 
    16     system("pause");
    17     return 0;
    18 }
    19 
    20 void dbl(int a1[][COLS], int a2[][COLS], int rows)
    21 {
    22     int i, j;
    23 
    24     for(i=0; i<rows; i++)
    25         for(j=0; j<COLS; j++)
    26             (*(a2+i))[j]=2*(*(a1+i))[j];
    27 }
    28 
    29 void typeout(int b1[][COLS], int rows)
    30 {
    31     int i, j;
    32     for(i=0; i<rows; i++){
    33         for(j=0; j<COLS; j++)
    34             printf("%d", b1[i][j]);
    35     printf("
    ");
    36     }
    37 }

    p281.12

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define COLS 3
     4 void collect(int [][COLS], int);
     5 void mean(int [][COLS], int);
     6 void tot_mean(int [][COLS], int);
     7 void max(int[][COLS], int);
     8 
     9 int main(void)
    10 {
    11     int rows=3;
    12     int num[3][3];
    13     collect(num, rows);
    14     mean(num, rows);
    15     tot_mean(num, rows);
    16     max(num, rows);
    17 
    18     system("pause");
    19     return 0;
    20 }
    21 
    22 void collect(int num[][COLS], int rows)
    23 {
    24     int i, j;
    25     for(i=0; i<rows; i++){
    26         for(j=0; j<COLS; j++){
    27             scanf("%d", &num[i][j]);
    28             printf("%5d", num[i][j]);
    29         }
    30         printf("
    ");
    31     }
    32 }
    33 
    34 void mean(int num[][COLS], int rows)
    35 {
    36     int i, j, sum;
    37     double mean;
    38 
    39     for(i=0; i<rows; i++){
    40         sum=0;
    41         for(j=0; j<COLS; j++)
    42             sum+=num[i][j];
    43         mean=sum/5.0;
    44         printf("the average is:");
    45         printf("%.2
    ", mean);
    46     }
    47 }
    48 
    49 void tot_mean(int num[][COLS], int rows)
    50 {
    51     int i, j, sum=0;
    52     double mean;
    53 
    54     for(i=0; i<rows; i++)
    55         for(j=0; j<COLS; j++)
    56             sum+=num[i][j];
    57     mean=sum/15.0;
    58     printf("the tot_mean is:");
    59     printf("%.2lf
    ", mean);
    60 }
    61 
    62 void max(int num[][COLS], int rows)
    63 {
    64     int i, j, max=num[0][0];
    65 
    66     for(i=0; i<rows; i++)
    67         for(j=0; j<COLS; j++)
    68             if(max<num[i][j])
    69                 max=num[i][j];
    70     printf("the largest number is %d
    ", max);
    71 }
  • 相关阅读:
    EL 自定义函数
    Linux 软件安装管理
    Linux 网络环境查看命令
    Linux 用户和用户组的命令
    Linux 用户和用户组进阶命令
    Linux 用户和用户组的基本命令
    将博客搬至CSDN
    U盘做系统启动盘(PE)时的文件格式选择 HDD ZIP FDD
    STM32 的几种输入输出模式
    define 中强制类型转换 && 浮点数后面带f
  • 原文地址:https://www.cnblogs.com/coding-time/p/4526621.html
Copyright © 2011-2022 走看看