1.
#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", 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;
}
2.
#include<stdio.h>
void copy_arr(double a[], double b[], int c);
void copy_ptr(double *a, double *b, int c);
int main(void)
{
double source[5] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
double target1[5];
double target2[5];
copy_arr(source, target1, 5);
copy_ptr(source, target2, 5);
printf("%lf,%lf,%lf,%lf,%lf\n", target1[0], target1[1], target1[2], target1[3], target1[4]);
printf("%lf,%lf,%lf,%lf,%lf\n", target2[0], target2[1], target2[2], target2[3], target2[4]);
return 0;
}
void copy_arr(double a[], double b[], int c)
{
for (int i = 0; i < c; i++)
b[i] = a[i];
}
void copy_ptr(double *a, double *b, int c)
{
for (int i = 0; i < c; i++)
*(b + i) = *(a + i);
}
3.
#include<stdio.h>
int fun(int a[], int b);
int main(void)
{
int num[5] = { 1, 2, 3, 4, 5 };
printf("max=%d\n", fun(num, 5));
return 0;
}
int fun(int a[], int b)
{
int max=0;
for (int i = 0; i < b; i++)
{
if (max < a[i])
max = a[i];
else
continue;
}
return max;
}
4.
#include<stdio.h>
int fun(double a[], int b);
int main(void)
{
double num[5] = { 1, 2, 3, 4, 5 };
printf("The max is num[%d]\n", fun(num, 5));
return 0;
}
int fun(double a[], int b)
{
int i, max;
for (i=0,max=1;i<b;i++)
{
if (a[max] < a[i])
max = i;
}
return max;
}
5.
#include<stdio.h>
double fun(double a[], int b);
int main(void)
{
double num[5] = { 1, 2, 3, 4, 5 };
printf("%lf\n", fun(num, 5));
return 0;
}
double fun(double a[], int b)
{
double max, min;
int i, j;
for (i = 0, j = 1; i < b; i++)
{
if (a[i] < a[j])
j = i;
min = a[j];
}
for (i = 0, j = 1; i < b; i++)
{
if (a[i]>a[j])
j = i;
max = a[j];
}
return max - min;
}
6.
#include<stdio.h>
void fun(double a[][2], double b[][2]);
int main(void)
{
double num[][2] = { 1, 2, 3, 4 };
double c[2][2];
fun(num, c);
printf("%lf,%lf,%lf,%lf\n", c[0][0], c[0][1], c[1][0], c[1][1]);
return 0;
}
void fun(double a[2][2], double b[2][2])
{
int i, j;
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
b[i][j] = a[i][j];
}
}
7.
#include<stdio.h>
void fun(int *a, int b);
int main(void)
{
int num[7] = { 1, 2, 3, 4, 5, 6, 7 };
fun(num, 3);
return 0;
}
void fun(int *a, int b)
{
int c[3];
for (int i = 0; i < b; i++)
c[i] = *(a + 2 + i);
printf("%d %d %d\n", c[0], c[1], c[2]);
}
8.
#include<stdio.h>
#define M 5
#define N 3
void fun1(double p[N][M], double q[N][M]);
void fun2(double p[N][M]);
int main(void)
{
double num[N][M] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
double num1[N][M];
fun1(num, num1);
fun2(num1);
return 0;
}
void fun1(double p[N][M], double q[N][M])
{
int i, j;
for (i = 0; i < N;i++)
for (j = 0; j < M; j++)
q[i][j] = p[i][j];
}
void fun2(double p[N][M])
{
int i, j;
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
printf("%.2f ", p[i][j]);
printf("\n");
}
}
9.
#include<stdio.h>
void fun(int *a, int *b, int *c,int d);
int main(void)
{
int r[4] = { 1, 2, 3, 4 }, s[4] = { 5, 6, 7, 8 }, t[4];
fun(r, s, t, 4);
for (int i = 0; i < 4; i++)
printf("%d ", t[i]);
printf("\n");
return 0;
}
void fun(int *a, int *b, int *c, int d)
{
for (int i = 0; i < d; i++)
*(c + i) = *(a + i) + *(b + i);
}
10.
#include<stdio.h>
void print(int (*p)[5],int b);
void two(int (*p)[5], int b);
int main(void)
{
int num[3][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
print(num, 3);
two(num, 3);
print(num, 3);
return 0;
}
void print(int(*p)[5], int b)
{
for (int i = 0; i < b * 5; i++)
printf("%2d ", *(*(p)+i));
printf("\n");
}
void two(int(*p)[5], int b)
{
for (int i = 0; i < b * 5; i++)
*(*(p)+i) *= 2;
}
12.
#include<stdio.h>
void input(double (*a)[5],int b);
double ave(double (*a)[5], int b);
double all_ave(double (*a)[5], int b);
double max(double (*a)[5], int b);
void print(double *,double*);
int main(void)
{
double *p, *q;
double aver[3], m, all;
int i;
double num[3][5];
input(num, 3);
for (i = 0; i < 3; i++)
aver[i] = ave(num, i);
all = all_ave(num, 3);
m = max(num, 3);
p = &all; q = &m;
print(p,q);
return 0;
}
void input(double(*a)[5], int b)
{
printf("please input 15 numbers:");
for (int i = 0; i < b;i++)
for (int j = 0; j < 5; j++)
scanf("%lf", *(a+i)+j);
}
double ave(double(*a)[5], int b)
{
double sum = 0;
for (int i = 0; i < 5; i++)
sum += *(*(a)+i + 5 * b);
return (double)sum / 5;
}
double all_ave(double(*a)[5], int b)
{
double sum = 0;
for (int i = 0; i < b * 5; i++)
sum += *(*(a)+i);
return (double)sum / (b * 5);
}
double max(double(*a)[5], int b)
{
double max = 0;
for (int i = 0; i <= b * 5; i++)
{
if (*(*(a)+i)>max)
max = *(*(a)+i);
}
return max;
}
void print(double *r,double *s)
{
printf("ave:%.2lf\n", *r);
printf("max:%.2lf\n", *s);
}
原文:http://blog.csdn.net/xiaxianga/article/details/44660377