//第一题
#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");
}
}
由于博主使用的编译器版本过低,第十四题无法使用变长数组,在此就不做过多的解释。