c++ premier puls 第十章课后答案

2.编写一个程序,初始化一个double数组,然后把数组内容复制到另外两个数组(3个数组都需要在主程序中声明)。制作第一份拷贝的函数使用数组符号。制作第二份拷贝的函数使用指针符号,并使用指针的增量操作。把目标数组名和要复制的元素数目做为参数传递给函数。也就是说,如果给定了下列声明,函数调用应该如下面所示:

#include 

void copy_arr(double target1[],double source[],int n);
void copy_ptr(double *target2,double *source,int n);
void display(double *target,int n);


int main (void)
{
	double source[5] ={1.1,1.2,1,6.4,7.8};
	double target1[5];
	double target2[5];
	
	copy_arr(target1,source,5);
	copy_arr(target2,source,5);
	
	display(target1,5);
	printf("\n");
	display(target2,5);
	 
	
	return 0;
}	

void copy_arr(double target1[],double source[],int n)
{
	int i;
	for (i =0; i < n;i++)
	{
		target1[i] = source[i];
	}
}

void copy_ptr(double target2[],double source[],int n)
{
	int i;
	for (i =0; i < n;i++)
	{
		*target2 = *source;
		*target2 ++  = *source++;
	}
}

void display(double *target,int n)
{
	int i;
	for ( i = 0; i < n; i ++)
	{
		printf("%2.2f ",*target++);
	//	target++;
	}
}

#include 

void cpp(double source[],double den1[], int len);
void cpp_2(double *source, double * denp, int len);

int main (void)
{
	double source[5] = {1.0, 2.2, 3.8, 4.11, 5.335} ;
	double den1 [5];
	double denp[5];
	
    cpp(source, den1, 5) ;
    cpp_2 (source, denp, 5) ;
	
	return 0;
}


void cpp(double source[],double den1[], int len)
{
	 int i;
     for( i=0; i
                                                             3编写一个函数,返回一个int数组中储存最大的数值
//第3题

#include 

int compare(int ar[], int len) ;

int main (void)
{
    int i_arry[5] = {5, 18, 4, 28, 23} ;
    int back ;

    back = compare(i_arry,5) ;
    printf("数组的最大值为:%d\n",back) ;

    return 0 ;
}

int compare(int ar[], int len)  //比较大小函数
{
    int i , t ;

    for (i=0;i ar[i + 1] )
        {
           t = ar[i] ;
           ar[i] = ar[i + 1] ;
           ar[i + 1] = t ;
        }
    }

    return ar[4] ;
}
//指针求法;
#include  
  
#define SIZE 5  
  
int select_max(int *ptr,int n);  
  
int main()  
{  
    int array[SIZE] = {  
        1,2,3,4,5  
    };  
    int max;  
      
    max = select_max(array,SIZE);  
    printf("max is %d\n",max);  
    return 0;  
}  
  
int select_max(int *ptr,int n)  
{  
    int max = *ptr;  
    for(int i = 0 ; i < SIZE ; i++)  
    {  
        if(max < *ptr)  
           max = *ptr;  
        ptr++;  
    }  
    return max;  
}  

 4.编写一个函数,返回一个double数组中存储的最大数值的索引,并在一个简单程序中测试这个函数。

 //第4题

#include 

int a_index(double ar[], int len) ;

int main (void)
{
    double d_arry[7] = {9.3, 11.5, 5.44, 12.6, 39.643, 40.05, 1.39} ;
    int back ;

    back = a_index(d_arry, 7) ;
    printf("最大值的索引为%d",back) ;

    return 0 ;
}

int a_index(double ar[], int len)
{
    double aa ;
    int back, i ;

    for (i=1,aa=ar[0];i


  1. #include  
  2.   
  3. #define SIZE 5  
  4.   
  5. int select_max(int *ptr,int n);  
  6.   
  7. int main()  
  8. {  
  9.     int array[SIZE] = {  
  10.         1,2,3,4,5  
  11.     };  
  12.     int max_index;  
  13.       
  14.     max_index = select_max(array,SIZE);  
  15.     printf("max index is %d\n",max_index);  
  16.     return 0;  
  17. }  
  18.   
  19. int select_max(int *ptr,int n)  
  20. {  
  21.     int max = *ptr;  
  22.     int max_index = 0;  
  23.     for(int i = 0 ; i < SIZE ; i++)  
  24.     {  
  25.         if(max < *ptr)  
  26.         {  
  27.              max = *ptr;  
  28.              max_index = i;  
  29.         }  
  30.             
  31.         ptr++;  
  32.     }  
  33.     return max_index;  
  34. }  

 

 5.编写一个函数,返回一个double数组中最大的和最小的数之间的差值,并在一个简单的程序中测试这个函数。


  1. #include  
  2.   
  3. #define SIZE 5  
  4.   
  5. int D_value(int *ptr,int n);  
  6.   
  7. int main()  
  8. {  
  9.     int array[SIZE] = {  
  10.         1,2,3,4,5  
  11.     };  
  12.     int value;  
  13.       
  14.     value = D_value(array,SIZE);  
  15.     printf("max - min = %d\n",value);  
  16.     return 0;  
  17. }  
  18.   
  19. int D_value(int *ptr,int n)  
  20. {  
  21.     int max = *ptr;  
  22.     int min = *ptr;  
  23.     for(int i = 0 ; i < SIZE ; i++)  
  24.     {  
  25.         if(max < *ptr )  
  26.         {  
  27.              max = *ptr;  
  28.         }  
  29.         if(min > *ptr)  
  30.          min = *ptr;  
  31.     
  32.         ptr++;  
  33.     }  
  34.     return max-min;  
  35. }  
6.编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处理一维数组的函数来复制数组的每个子数组)。
//第6题

#include 
#define CLOS 2

void cpp(double ar[][2], double cp[][2], int len) ;

int main (void)
{
    double arry[3][2] = { {1, 3}, {5, 7}, {9,11} } ;
    double by[3][2] ;

    cpp(arry, by, 3) ;

    return 0 ;
}

void cpp(double ar[][2], double cp[][2], int rows)
{
    int i, j ;
    for (i=0;i



你可能感兴趣的:(c学习)