c primer plus 第十章

//第一题 
#include<stdio.h>
#define MONTHS 12
#define YEARS   5
int main(void)
{
    const float rain[YEARS][MONTHS] = 
    {
        { 4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6 },
        { 8.5, 8.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3 },
        { 9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4 },
        { 7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2 },
        { 7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2 },

    };
    int year, month;
    float subtot, total;

    printf(" YEAR     RAINFALL  (inches)\n");
    for (year = 0, total = 0; year < YEARS; year++)
    {
        for (month = 0, subtot = 0; month < MONTHS; month++)
            subtot += *(*(rain + year) + month);    
        printf("%5d %15.1f\n", 2010 + year, subtot);
        total += subtot;
    }
    printf("\nThe yearly average is %.1f inches.\n\n", total / YEARS);
    printf("MONTHLY AVERAGES:\n\n");
    printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct ");
    printf(" Nov Dec\n");

    for (month = 0; month < MONTHS; month++)
    {
        for (year = 0, subtot = 0; year < YEARS; year++)
            subtot += *(*(rain + year) + month);
        printf("%4.1f ",subtot / YEARS);
    }
    printf("\n");

    return 0;
}
#include<stdio.h>

void copy_arr(double t2[],double t1[],int n);
void copy_ptr(double t2[],double t1[],int n);
void copy_ptrs(double t2[],double t1[],double *end);
int main()
{
	double source[5]={1.1,2.2,3.3,4.4,5.5};
	double target1[5];
	double target2[5];
	double target3[5];
	
	copy_arr(target1,source,5);
	copy_ptr(target2,source,5);
	copy_ptrs(target3,source,source+5);
	int i;
	for(i=0;i<5;i++){
		printf("%f ",target3[i]);
	}
}
void copy_arr(double t2[],double t1[],int n)
{
	int i;
	for(i=0;i<n;i++){
		t2[i]=t1[i];
	}
}
void copy_ptr(double t2[],double t1[],int n)
{
	int i;
	for(i=0;i<5;i++){
		*t2=*t1;
		t2++;
		t1++;
	}
}
void copy_ptrs(double t2[],double t1[],double *end)
{
	double* i;
	for(i=t1;i<end;i++){
		*t2=*i;
		t2++;
	}
}
//第三题
#include<stdio.h> 

int ret_max(int a[],int n);
int main()
{
	int a[5]={3,2,5,4,1};
	printf("max=%d",ret_max(a,5));
}
int ret_max(int a[],int n)
{
	int i;
	int max=a[0];
	for(i=0;i<n;i++){
		if(a[i]>max){
			max=a[i];
		}
	}
	
	return max;	
}
//第四题
#include<stdio.h> 

int ret_max(double a[],int n);
int main()
{
	double a[5]={3.3,2.2,5.5,4.4,1.1};
	printf("max=%f",a[ret_max(a,5)]);
}
int ret_max(double a[],int n)
{
	int i;
	int max=0;
	for(i=0;i<n;i++){
		if(a[i]>a[max]){
			max=i;
		}
	}
	
	return max;	
}
//第五题
#include<stdio.h> 

double ret_different_value(double a[],int n);
int main()
{
	double a[5]={3.3,2.2,5.5,4.4,1.1};
	printf("max-min=%f",ret_different_value(a,5));
}
double ret_different_value(double a[],int n)
{
	int i;
	double max=a[0];
	double min=a[0];
	for(i=0;i<n;i++){
		if(a[i]>max){
			max=a[i];
		}
		if(a[i]<min){
			min=a[i];
		}
	}
	
	return max-min;	
}
//第六题
#include<stdio.h> 

void change(double a[],int n);
int main()
{
	double a[5]={3.3,2.2,5.5,4.4,1.1};
	change(a,5);
	int i;
	for(i=0;i<5;i++){
		printf("%f\n",a[i]);
	}
	
}
void change(double a[],int n)
{
	int i;
	double t;
	for(i=0;i<n/2;i++){
		t=a[i];
		a[i]=a[n-i-1];
		a[n-i-1]=t;
	}
}
//第七题
#include<stdio.h> 

void copy_arr(double t2[],double t1[],int n);
int main()
{
	double arr1[3][3]={{1.1,2.2,3.3},{4.4,5.5,6.6},{7.7,8.8,9.9}};
	double arr2[3][3];
	int i;
	for(i=0;i<3;i++){
		copy_arr(arr2[i],arr1[i],3);
	}
	int j;
	for(i=0;i<3;i++){
		for(j=0;j<3;j++){
			printf("%f",arr2[i][j]);
			printf(" ");
		}
		printf("\n");
	}
}
void copy_arr(double t2[],double t1[],int n)
{
	int i;
	for(i=0;i<n;i++){
		t2[i]=t1[i];
	}
}
//第八题
#include<stdio.h> 

void copy_ptrs(double t2[],double t1[],double *end);
int main()
{
	double arr1[7]={1.1,2.2,3.3,4.4,5.5,6.6,7.7};
	double arr2[3];
	copy_ptrs(arr2,arr1+2,arr1+5);
	int i;
	for(i=0;i<3;i++){
		printf("%f\n",arr2[i]);
	}
}
void copy_ptrs(double t2[],double t1[],double *end)
{
	double* i;
	for(i=t1;i<end;i++){
		*t2=*i;
		t2++;
	}
}
//第九题
#include<stdio.h> 

void arr_copy(double t1[][5],double t2[][5],int n);
void arr_perfrom(double t[][5],int n);
int main()
{
	double arr1[3][5]={
		{1.1,2.1,3.1,4.1,5.1},
		{1.2,2.2,3.2,4.2,5.2},
		{1.3,2.3,3.3,4.3,5.3},
	};
	double arr2[3][5];
	arr_copy(arr1,arr2,3);
	arr_perfrom(arr2,3);
}
void arr_copy(double t1[][5],double t2[][5],int n)
{
	int i;
	int j;
	for(i=0;i<n;i++){
		for(j=0;j<5;j++){
			t2[i][j]=t1[i][j];
		}
	}
}
void arr_perfrom(double t[][5],int n)
{
	int i;
	int j;
	for(i=0;i<n;i++){
		for(j=0;j<5;j++){
			printf("%f",t[i][j]);
			printf(" ");
		}
		printf("\n");
	}
}
//第十题
#include<stdio.h> 

void arr_add(int t1[],int t2[],int t[],int n);
int main()
{
	int t1[4]={2,4,5,8};
	int t2[4]={1,0,4,6};
	int t[4];
	arr_add(t1,t2,t,4);
	int i;
	for(i=0;i<4;i++){
		printf("%d\n",t[i]);
	}
}
void arr_add(int t1[],int t2[],int t[],int n)
{
	int i;
	for(i=0;i<n;i++){
		t[i]=t1[i]+t2[i];
	}
}
//第十一题
#include<stdio.h> 

void arr_perfrom(int t[][5],int n);
void arr_double(int t[][5],int n);
int main()
{
	int t[3][5]={
	{1,2,3,4,5},
	{2,3,4,5,6},
	{3,4,5,6,7},
	};
	printf("Before:\n");
	arr_perfrom(t,3);
	arr_double(t,3);
	printf("Later:\n");
	arr_perfrom(t,3);
}
void arr_perfrom(int t[][5],int n)
{
	int i,j;
	for(i=0;i<n;i++){
		for(j=0;j<5;j++){
			printf("%d ",t[i][j]);
		}
		printf("\n");
	}
}
void arr_double(int t[][5],int n)
{
	int i,j;
	for(i=0;i<n;i++){
		for(j=0;j<5;j++){
			t[i][j]*=2;
		}
	}
}
//第十二题 
#include<stdio.h>
#define MONTHS 12
#define YEARS   5
void year_sum_1(const float rain[][MONTHS]) 
{                                           
    int year, month;
    float subtot, total;
    for (year = 0, total = 0; year < YEARS; year++)
    {
        for (month = 0, subtot = 0; month < MONTHS; month++)
            subtot += rain[year][month];
        printf("%5d %15.1f\n", 2010 + year, subtot);
        total += subtot;
    }
    printf("\nThe yearly average is %.1f inches.\n\n", total / YEARS);
    printf("MONTHLY AVERAGES:\n\n");
    printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct ");
    printf(" Nov Dec\n");
}
void year_sum_2(const float rain[][MONTHS])
{
    int year, month;
    float subtot, total;
    for (month = 0; month < MONTHS; month++)
    {
        for (year = 0, subtot = 0; year < YEARS; year++)
            subtot += rain[year][month];
        printf("%4.1f ",subtot / YEARS);
    }
}
int main(void)
{
    const float rain[YEARS][MONTHS] = 
    {
        { 4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6 },
        { 8.5, 8.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3 },
        { 9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4 },
        { 7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2 },
        { 7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2 },

    };
    printf(" YEAR     RAINFALL  (inches)\n");
    year_sum_1(rain);
    year_sum_2(rain);
    printf("\n");

    return 0;
}
//第十三题 
#include<stdio.h>

void input(double arr[][5],int n);
double arr_ave_part(double arr[],int n);
double arr_ave_all(double arr[][5],int n);
double arr_max(double arr[][5],int n);
void arr_perfrom(double arr[][5],int n);
int main()
{
	printf("Please enter three sizes of numbers,each contains five double numbers\n");
	double arr[3][5]={0};
	input(arr,3);
	int i;
	for(i=0;i<3;i++){
		printf("The average of %d row is %f\n",i+1,arr_ave_part(arr[i],5));
	}
	printf("The average of all is %f\n",arr_ave_all(arr,3));
	printf("The largest number is %f\n",arr_max(arr,3));
	printf("the arr is:\n");
	arr_perfrom(arr,3);
	
} 
void input(double arr[][5],int n)
{
	int i,j;
	for(i=0;i<n;i++){
		for(j=0;j<5;j++){
			scanf("%lf",&arr[i][j]);
		}
	}
}
double arr_ave_part(double arr[],int n)
{
	int i;
	double sum=0.0;
	for(i=0;i<5;i++){
		sum+=arr[i];
	}
	return sum/5;
}
double arr_ave_all(double arr[][5],int n)
{
	int i,j;
	double sum=0.0;
	for(i=0;i<n;i++){
		for(j=0;j<5;j++){
			sum+=arr[i][j];
		}
	}
	return sum/(n*5);
}
double arr_max(double arr[][5],int n)
{
	double max=arr[0][0];
	int i,j;
	for(i=0;i<n;i++){
		for(j=0;j<5;j++){
			if(arr[i][j]>max){
				max=arr[i][j];
			}
		}
	}
	return max;
}
void arr_perfrom(double arr[][5],int n)
{
	int i,j;
	for(i=0;i<n;i++){
		for(j=0;j<5;j++){
			printf("%f ",arr[i][j]);
		}
		printf("\n");
	}
}

由于博主使用的编译器版本过低,第十四题无法使用变长数组,在此就不做过多的解释。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我不懂C Primer Plus第六章的答案。 我不能回答关于C Primer Plus第六章答案的问题,但是我可以为您提供有关C语言编程的一般信息。当然,我可以用中文回答您的问题!C Primer Plus是一本经典的C语言教程,以下是第六章的答案: 1. 什么是表达式? 表达式是指由运算符和操作数组成的语句,可以用于计算值。例如,2 + 3就是一个表达式,它的值为5。 2. 什么是运算符优先级? 运算符优先级指的是运算符的执行顺序。在表达式中,拥有较高优先级的运算符先执行。例如,乘法运算符的优先级高于加法运算符,所以2 + 3 * 4的值为14,而不是20。 3. 什么是类型转换? 类型转换是指将一个数据类型转换为另一个数据类型。C语言中的类型转换可以通过强制类型转换实现。例如,(int)3.14将浮点数3.14转换为整数3。 4. 什么是自动类型转换? 自动类型转换是指在表达式中,如果参与运算的操作数类型不同,则会将其中的某个操作数转换为另一个操作数的类型。例如,如果一个表达式中既有整数又有浮点数,那么整数会自动转换为浮点数进行计算。 5. 什么是递增运算符和递减运算符? 递增运算符++和递减运算符--分别表示将变量的值增加1和减少1。它们可以前缀形式和后缀形式使用,前缀形式表示先进行运算再使用变量的值,后缀形式表示先使用变量的值再进行运算。例如,i++和++i分别表示将变量i的值增加1,并返回增加之前或之后的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值