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");
}
第五版
第十章 课后习题
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++ primer plus 第十章课后习题,原创答案。
- c primer plus 第八章 课后习题程序
- C++Primer Plus笔记——第四章 复合类型及课后习题答案
- c++ primer plus第十章习题答案
- C++ Primer Plus 第六版 每天总结一章加课后习题
- C++ Primer Plus (第6版)课后习题答案 第二章
- 《C Primer Plus》第一章 概览 课后习题
- C++ primer plus 第四章课后习题
- C++ primer plus 第五章课后习题
- 《C Primer Plus》第二章 C语言概述 课后习题
- C++ primer plus 第六章课后习题
- C Primer Plus 第六章课后习题练习……2015.4.24
- C Primer Plus 第十二章课后习题……2015.5.10
- C++ Primer Plus 课后习题 第四章
- C++Primer Plus笔记——第三章 处理数据及课后习题答案
- C Primer Plus(第五版) 第十四章 课后习题 4
- C++ Primer Plus 课后习题 第二章
- c++ Primer Plus(第六版)第十章习题,写代码之路
- C Primer Plus(第五版) 第十四章 课后习题5
- c primer plus第十一章课后习题