第十章 数组和指针

原创
2015/05/20 20:23
阅读数 14

#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,2.3,5.6,2.5,1.3,1.5,2.2,5.6,8.6,9.1,7.7},
	{7.2,9.9,3.2,3.6,5.3,1.1,2.2,6.5,6.3,7.5,7.1,8.2},
	{7.6,5.3,2.3,1.3,4.1,2.5,6.4,2.0,0.5,0.0,0.0,5.2},
	};
	const float *p;
	int year,month;
	float subtot,total;

	p = &rain[0][0];

	printf("YEAR RAINFALL (inches)\n");
	for(year = 0,total = 0;year < YEARS;year++)
	{
		for(month = 0,subtot = 0;month < MONTHS; p++,month++)
		{
			subtot += *p;
		}
		printf("%5d %15.1f\n",2000+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 cpy_arr(double source[],double target1[],int n);
void cpy_ptr(double *s,double *t,int n);

int main()
{
	double source[5] = {1.1,2.2,3.3,4.4,5.5};
	double target1[5];
	double target2[5];
    cpy_arr(source,target1,5);
	cpy_ptr(source,target2,5);
	return 0;
}

void cpy_arr(double source[],double target1[],int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		target1[i] = source[i];
		printf(" %.1f ",target1[i]);
	}
}

void cpy_ptr(double *s,double *t,int n)
{
	int i;
	for(i=0;i<n;i++,s++,t++)
	{
		*t = *s;
		printf(" %.1f ",*t);
	}
}

#include<stdio.h>
int max(int a[],int n);

int main()
{
	int a[]={5,6,3,8,9,12,45,7};
	int n;
	n = sizeof(a)/sizeof(a[0]);
	printf("%d\n",max(a,n));
}

int max(int a[],int n)
{
	int max=0,i;
	for(i=0;i<n;i++)
	{
		if(a[i] > max)
			max = a[i];
	}
	return max;
}

#include<stdio.h>
double max(double a[],int n);

int main()
{
	double a[]={5.2,6.3,3.00,8.54,9.36,12.1,45.55,7.32};
	int n;
	n = sizeof(a)/sizeof(a[0]);
	printf("%f\n",max(a,n));
}

double max(double a[],int n)
{
	double max=0;
	int i;
	for(i=0;i<n;i++)
	{
		if(a[i] > max)
			max = a[i];
	}
	return max;
}

#include<stdio.h>
double max(double a[],int n);

int main()
{
	double a[]={5.2,6.3,3.00,8.54,9.36,12.1,45.55,7.32};
	int n;
	n = sizeof(a)/sizeof(a[0]);
	printf("%f\n",max(a,n));
}

double max(double a[],int n)
{
	double max=0,min=a[0];
	int i;
	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 cpy_arr(double source[][5],double target1[][5],int n);
void cpy_ptr(double (*s)[5],double (*t)[5],int n);

int main()
{
	double source[2][5] = {
				{1.1,2.2,3.3,4.4,5.5},
				{6.6,7.7,8.8,9.9,0.0}
				};
	double target1[2][5];
	double target2[2][5];
        cpy_arr(source,target1,2);
	cpy_ptr(source,target2,2);
	return 0;
}

void cpy_arr(double source[][5],double target1[][5],int n)
{
	int i,j;
	for(i=0;i<n;i++)
	{	 
		for(j=0;j<5;j++)
		{
			target1[i][j] = source[i][j];
			printf(" %.1f ",target1[i][j]);
		}
		printf("\n");
	}
}

void cpy_ptr(double (*s)[5],double (*t)[5],int n)
{
	int i,j;
	for(i=0;i<n;i++,s++,j++)
	{
		for(j=0;j<5;j++)
		{
			(*t)[j] = (*s)[j];
			printf(" %.1f ",(*t)[j]);
		}
		printf("\n");
	}
}

#include<stdio.h>
void cpy_arr(double source[],double target1[],int n);
void cpy_ptr(double *s,double *t,int n);

int main()
{
	double source[7] = {1.1,2.2,3.3,4.4,5.5,6.6,7.7};
	double target1[3];
	double target2[3];
    cpy_arr(source,target1,3);
	cpy_ptr(source,target2,3);
	return 0;
}

void cpy_arr(double source[],double target1[],int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		target1[i] = source[i+2];
		printf(" %.1f ",target1[i]);
	}
}

void cpy_ptr(double *s,double *t,int n)
{
	int i;
	for(i=0;i<n;i++,s++,t++)
	{
		*t = *(s+2);
		printf(" %.1f ",*t);
	}
}

#include<stdio.h>
void cpy(int a,int b,double num[][5],double num1[][5]);
void output(int a,int b,double num[][5]);

int main()
{
	double num[3][5]={
	{2.1,5.3,2.31,6.35,0.23},
	{1.36,6.9,3.58,9.6,7.5},
	{41.2,5.6,9.9,10.2,2.36},
	};
	double num1[3][5];
	cpy(3,5,num,num1);
	output(3,5,num);
	output(3,5,num1);
}

void cpy(int a,int b,double num[][5],double num1[][5])
{
	int i,j;
	for(i=0;i<a;i++)
	{
		for(j=0;j<b;j++)
		{
			num1[i][j] = num[i][j];
		}
	}
}

void output(int a,int b,double num[][5])
{
	int i,j;
	for(i=0;i<a;i++)
	{
		for(j=0;j<b;j++)
		{
			printf(" %.2f ",num[i][j]);
		}
		printf("\n");
	}
}

#include<stdio.h>
void add(int n,int a[],int b[],int c[]);

int main()
{
	int a[4] = {2,4,5,8};
	int b[4] = {1,0,4,6};
	int c[4];
	add(4,a,b,c);
	return 0;
}

void add(int n,int a[],int b[],int c[])
{
	int i;
	for(i=0;i<n;i++)
	{
		c[i] = a[i]+b[i];
		printf(" %d ",c[i]);
	}
}

#include<stdio.h>
void output(int n,int m,double a[][5]);
void two(int n,int m,double a[][5],double b[][5]);

int main()
{
	double a[3][5] = {
	{2.3,5.3,6.8,9.9,4.5},
	{5.32,6.35,5.14,8.47,9.21},
	{6.3,5.21,3.3,0.0,8}
	};
	double b[3][5];
	output(3,5,a);
	two(3,5,a,b);
	output(3,5,b);
	return 0;
}

void output(int n,int m,double a[][5])
{
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
			printf(" %.2f ",a[i][j]);
		printf("\n");
	}
}

void two(int n,int m,double a[][5],double b[][5])
{
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			b[i][j] = 2 * a[i][j];
		}
	}
}

#include<stdio.h>
#define MONTHS 12
#define YEARS 5
float sumYear(const float rain[YEARS][MONTHS]);
void sumMonth(const float rain[YEARS][MONTHS]);

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,2.3,5.6,2.5,1.3,1.5,2.2,5.6,8.6,9.1,7.7},
	{7.2,9.9,3.2,3.6,5.3,1.1,2.2,6.5,6.3,7.5,7.1,8.2},
	{7.6,5.3,2.3,1.3,4.1,2.5,6.4,2.0,0.5,0.0,0.0,5.2},
	};
	

	
	float total;
	printf("YEAR RAINFALL (inches)\n");
	total =	sumYear(rain);
	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");

	sumMonth(rain);
	
	printf("\n");
	return 0;
}

float sumYear(const float rain[YEARS][MONTHS])
{
	float subtot,total;
	int year,month;
	const float *p;
	p = &rain[0][0];
	for(year = 0,total = 0;year < YEARS;year++)
	{
		for(month = 0,subtot = 0;month < MONTHS; p++,month++)
		{
			subtot += *p;
		}
		printf("%5d %15.1f\n",2000+year,subtot);
		total += subtot;
	}
	return total;
}

void sumMonth(const float rain[YEARS][MONTHS])
{
		float subtot;
		int year,month;
	for (month = 0; month < MONTHS; month++)
	{
	
		for(year = 0,subtot = 0; year < YEARS; year++)
			subtot += rain[year][month];
		printf("%4.1f",subtot/YEARS);
	}
}

#include<stdio.h>
void input(double a[3][5]);        //输入函数
void ave(double a[3][5]);          //每行平均数函数
double inch(double a[3][5]);       //全部平均数函数
double max(double a[3][5]);        //最大值函数
void output(double n,double m);    //输出函数

int main()
{
	double a[3][5];
	double n,ma;
	input(a);
	printf("第一行 第二行 第三行\n");
	ave(a);
	n = inch(a);
	ma = max(a);
	printf("平均数 最大值\n");
	output(n,ma);
	return 0;
}

//输入函数
void input(double a[3][5])
{
	int i,j;
	printf("请输入3个数集,每个数集包括5个double值\n");
	for(i=0;i<3;i++)
	{
		for(j=0;j<5;j++)
		{
			scanf("%lf",&a[i][j]);
		}
	}
}


//每行平均数函数
void ave(double a[3][5])
{
	double sum = 0;
	double inches = 0;
	int i,j,k;
	for(i=0;i<3;i++)
	{
		for(j=0;j<5;j++)
		{
			sum = sum + a[i][j];
		}
		inches = sum / 5;
		sum = 0;
		printf("%.2f   ",inches);
	}
	printf("\n");
}


//全部平均数函数
double inch(double a[3][5])
{
	double n,m = 0;
	int i,j;
	for(i=0;i<3;i++)
	{
		for(j=0;j<5;j++)
		{
			m = m + a[i][j];
		}
	}
	n = m / 15;
	return n;
}


//最大值函数
double max(double a[3][5])
{
	int i,j;
	double max = 0;
	for(i=0;i<3;i++)
	{
		for(j=0;j<5;j++)
		{
			if(a[i][j] > max)
				max = a[i][j];
		}
	}
	return max;
}


//输出函数
void output(double n,double m)
{
	printf("%.2f  %.2f\n",n,m);
}

#include<stdio.h>
void input(int c,int d,double a[][5]);       //输入函数
void ave(int c,int d,double a[][5]);         //每行平均数函数
double inch(int c,int d,double a[][5]);      //全部平均数函数
double max(int c,int d,double a[][5]);       //最大值函数
void output(double n,double m);              //输出函数

int main()
{
	double a[3][5];
	double n,ma;
	input(3,5,a);
	printf("第一行 第二行 第三行\n");
	ave(3,5,a);
	n = inch(3,5,a);
	ma = max(3,5,a);
	printf("平均数 最大值\n");
	output(n,ma);
	return 0;
}

//输入函数
void input(int c,int d,double a[][5])    
{
	int i,j;
	printf("请输入3个数集,每个数集包括5个double值\n");
	for(i=0;i<c;i++)
	{
		for(j=0;j<d;j++)
		{
			scanf("%lf",&a[i][j]);
		}
	}
}

//每行平均数函数
void ave(int c,int d,double a[][5])        
{
	double sum = 0;
	double inches = 0;
	int i,j,k;
	for(i=0;i<c;i++)
	{
		for(j=0;j<d;j++)
		{
			sum = sum + a[i][j];
		}
		inches = sum / 5;
		sum = 0;
		printf("%.2f   ",inches);
	}
	printf("\n");
}

//全部平均数函数
double inch(int c,int d,double a[][5])        
{
	double n,m = 0;
	int i,j;
	for(i=0;i<c;i++)
	{
		for(j=0;j<d;j++)
		{
			m = m + a[i][j];
		}
	}
	n = m / 15;
	return n;
}

//最大值函数
double max(int c,int d,double a[][5])        
{
	int i,j;
	double max = 0;
	for(i=0;i<c;i++)
	{
		for(j=0;j<d;j++)
		{
			if(a[i][j] > max)
				max = a[i][j];
		}
	}
	return max;
}

//输出函数
void output(double n,double m)
{
	printf("%.2f  %.2f\n",n,m);
}


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部