您的位置:首页 > 编程语言 > C语言/C++

C Primer Plus 第十章课后习题……2015.5.5

2015-05-05 20:27 393 查看
C Primer Plus

              第五版

第十章 课后习题

1、#include<stdio.h>

int main(void)

{
int ref[]={8,4,0,2};
int *ptr;
int index;
for(index=0,ptr=ref;index<4;index++,ptr++)
printf("%d %d\n",ref[index],*ptr);
return 0;



2、4

3、数组的地址,也是ref[0],ref指向4, 常量不能自增运算

4、#include<stdio.h>

int main(void)

{
int ref[2][2]={8,4,2 };
int *ptr;
ptr=ref[0];
 

     printf("%d\n", ref[1][0]) ;
printf("%d\n",*ptr) ;

  printf("%d",*(ptr+4)) ;
return 0;



#include<stdio.h>

int main(void)

{
int ref[2][2]={{8},{4,2} };
int *ptr;
ptr=ref[0];
 

     printf("%d\n", ref[0][0]) ;
printf("%d\n",*ptr) ;

  printf("%d",*(ptr+3)) ;
return 0;



5、

#include<stdio.h>

int main(void)

{
int ref[2][2]={8,4,2 };
int (*ptr)[2];
ptr=ref;
 

     printf("%d\n", ref[1][0]) ;
printf("%d\n", *ptr) ;

  printf("%d",**(ptr+1)) ;
return 0;



6、&grid[][],&gird[][], gird[],&gird[][], gird[],int (*)

gird

7、int arr[10],float arr[6],int arr[3][5] char *arr

[20],char(*arr)[20]

8、int arr[6]={1,2,4,6,8,16,32};    arr[2]=3;

     int arr[100]={arr[99]=-1};

9\ 0--9

10、 a ,e,h

11\ int arr[800][600]

12void process(double arr[])

  void processvla(int n,double arr
)

  process(trots);processval(n,trots);

13\int arr[]={8,3,9,2};show(arr,4);

   int arr[2][3]={{8,3,9},{5,4,1}};show2(arr[][3],3)

#include<stdio.h>

void Arr_ay(int a,int (*arr)[],int b);

int main(void)

{
int array[2][2]={{1,2},{3,4}};

  Arr_ay(2,array,2);
return 0;

}

 

void Arr_ay(int a,int (*arr)[a],int b)

{
int i,j;
for(i=0;i<a;i++)
  for(j=0;j<b;j++)
   printf("%d\n",*(*(arr+i)+j));



2

#include<stdio.h>

void copy_arr(double source[],double target1[],int b);

void copy_ptr(double source[],double target1[],int b);

int main(void)

{
double array[4] ={1.1,2.2,3.3,4.3};
double target1[4];
double target2[4];

  int *ptr,i;

   

  copy_arr(array,target1,4);

  copy_ptr(array,target2,4);

  for(i=0;i<4;i++)
 {
  printf("target1=%lf  ",target1[i]);
  printf("target1=%lf  ",target2[i]);
  printf("\n");
 } 
 
return 0;

}

 

void copy_arr(double source[],double target1[],int b)

{
int i;
for(i=0;i<b;i++)
 {
  target1[i]= source[i] ;
//printf("target1=%d  ",target1[i]);
 }

}

void copy_ptr(double *source ,double *target,int b)

{
int i;
for(i=0;i<b;i++)
{
*(target+i)=*(source+i);
// printf("target2=%d  ",(target+i));
}
  

}

3\4\5

#include<stdio.h>

int Return_max(int arr[],int n);

double Return_index(double arr[],int n);

double Return_value(double arr[],int n);

int main(void)

{
int int_arr[8]={1,2,3,4,5,6,7,8};
double double_arr[8]=

{1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8};
Return_max(int_arr,8);

  Return_index(double_arr,8);

  Return_value(double_arr,8);
return 0;

}

int Return_max(int arr[],int n)

{
int i;
for(i=0;i<n;i++)
{
 if(arr[i]>arr[i+1])
   
    arr[i+1]=arr[i];
}

printf("%d\n",arr[i-1]);

}

double Return_index(double arr[],int n)

{
int i ;
double temp;
temp=arr[0];
for(i=0;i<n;i++)
{
 if(temp<arr[i+1])
   
    temp=arr[i+1];
}
for(i=0;i<n;i++)
{
 if(temp==arr[i ])
   
    printf("%d\n",i-1 );  
}

}

double Return_value(double arr[],int n)

{
int i,j;
double temp=0.0;
for(j=0;j<n;j++)
for(i=0;i<n-1-j;i++)
{
 if(arr[i]<arr[i+1])
   
    temp=arr[i+1];
    arr[i+1]=arr[i];
    arr[i]=temp;
//    printf("%lf  ",arr[i] ); 

//    printf("%lf \n",arr[i+1] );
}

// for(i=0;i<n;i++)

// printf("%lf \n",arr[i] );
printf("%lf",arr[0]-arr[7]);

}

6……

#include<stdio.h>

 void copy_arr(int a,int b,int (*source)[b],int 

(*target1)[b]);

//void copy_arr(int a,int b,int  source [a][b],int  

target1[a][b]);

int main(void)

{   int i,j;
int arr[3][2]={{1,2 },{4,5 },{7,8}};
int cop1_arr[3][2];
int (*ptr)[2];
ptr=arr;

  copy_arr(3,2,arr,cop1_arr);
return 0;

}

void copy_arr(int a,int b,int (*source) [b],int 

(*target1)[b])

//void copy_arr(int a,int b,int  source [a][b],int  

target1[a][b])

{
int i,j ;

c36c
for(i=0;i<a;i++)
for(j=0;j<b;j++)
 {    
   
*(*(target1+i)+j)= *(*(source+i)+j) ;
 
 }

  for(i=0;i<a;i++)

    {
for(j=0;j<b;j++)
 {
  printf("%d ",*(*(target1+i)+j) ) ;

 }
 printf("\n");

    } 

}

7.

#include<stdio.h>

void copy_arr(double source[],double target1[],int a,int 

b);

int main(void)

{
double array[7] ={1.1,2.2,3.3,4.3,5.5,6.6,7.7};
double target1[3];

  copy_arr(array,target1,2,3);

   int i; 

    for(i=0;i<3;i++)
 {
  printf("target1=%lf  ",target1[i]);
  
  printf("\n");
 } 
 
return 0;

}

 

void copy_arr(double source[],double target1[],int a,int 

b)

{
int i;
for(i=a;i<a+b;i++)
 {
  target1[i-a]= source[i] ;
//printf("target1=%d  ",target1[i]);
 }

}

8.

#include<stdio.h>

void VLA_array(int row,int rank,double (* ptr)

[rank],double(*arr)[rank]);

int main(void)

{
double array[3][2]={{1.1,2.2},{3.3,4.4},

{5.5,6.6}};
double copy_arr[3][2];
VLA_array(3,2,array,copy_arr);
return 0;

}

void VLA_array(int row,int rank,double (* ptr)

[rank],double(*arr)[rank])

{   

     int i,j;

      for(i=0;i<row;i++)

         for(j=0;j<rank;j++)

            *(*(arr+i)+j)=*(*(ptr+i)+j);
for(i=0;i<row;i++)

       {

        for(j=0;j<rank;j++)

          printf("%lf ",*(*(arr+i)+j));

          printf("\n");

       }  

}

9.

#include<stdio.h>

void VLA_array(int row,double * sum,double *arr,double 

*ptr);

int main(void)

{
double array[3]={1.1,2.2,5.5};
double copy_arr[3]={3.3,4.4,6.6};
double sum[3];
VLA_array(3,sum,array,copy_arr);
return 0;

}

void VLA_array(int row,double *sum ,double *arr,double 

*ptr)

{   

     int i ;

      for(i=0;i<row;i++)

         *(sum+i) =*(arr+i)+*(ptr+i);
for(i=0;i<row;i++)

       {

         

          printf("%lf ",*(sum+i)) ;

           

       }  

}

10.

#include<stdio.h>

void VLA_array(int row,int rank,double (* ptr)[rank]);

int main(void)

{
double array[3][2]={{1.1,2.2},{3.3,4.4},

{5.5,6.6}};

VLA_array(3,2,array);
return 0;

}

void VLA_array(int row,int rank,double(*arr)[rank])

{   

     int i,j;

      for(i=0;i<row;i++)

         for(j=0;j<rank;j++)

            *(*(arr+i)+j)=2*(*(*(arr+i)+j));
for(i=0;i<row;i++)

       {

        for(j=0;j<rank;j++)

          printf("%lf ",*(*(arr+i)+j));

          printf("\n");

       }  

}

12-13

#include<stdio.h>

void VLA_array(int row,int rank,double (* ptr)[rank]);

void average(int row,int rank,double(*arr)[rank]);

void VLA_average(int row,int rank,double(*arr)[rank]);

void VLA_max(int row,int rank,double(*arr)[rank]);

int main(void)

{
double array[3][2];
VLA_array(3,2,array);
average(3,2,array);
VLA_average(3,2,array);
VLA_max(3,2,array);
return 0;

}

void VLA_array(int row,int rank,double(*arr)[rank])

{   

     int i,j;

      for(i=0;i<row;i++)

         for(j=0;j<rank;j++)

             scanf("%lf",*(arr+i)+j);
for(i=0;i<row;i++)

       {

        for(j=0;j<rank;j++)

         {

         

printf("%lf ",*(*(arr+i)+j));

         } 

         

          printf("\n");

       }  

}

void average(int row,int rank,double(*arr)[rank])

{   

     int i,j;

     double sum1=0;
for(i=0;i<row;i++)

       {

        for(j=0;j<rank;j++)

         

         
sum1+=*(*(arr+i)+j);
printf("%lf ",sum1/rank);
sum1=0;

         

           

       }  

       printf("\n");

}

void VLA_average(int row,int rank,double(*arr)[rank])

{   

     int i,j;

     double sum1=0;
for(i=0;i<row;i++)

        for(j=0;j<rank;j++)

         
sum1+=*(*(arr+i)+j);

          

          printf("%lf ",sum1/(rank*row));

           

          printf("\n");

        

}

void VLA_max(int row,int rank,double(*arr)[rank])

{   

     int i,j;

      
for(i=0;i<row;i++)

        for(j=0;j<rank;j++)

        if(**arr<*(*(arr+i)+j))

         
**arr=*(*(arr+i)+j);

          

          printf("%lf ",**arr);

           

          printf("\n");

        

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 数组和指针