例 某蔬菜公司销售N种蔬菜,分4个季度统计每年蔬菜销售量。输入每种蔬菜编号存放在数组num[N][10]中(假设编号小于10个字符),输入每种蔬菜4个季度的销售量(千克)存放在数组sale[N][5]中(sale的前4列存放各季度销售量,最后一列用来存放4个季度的销售总和),编写程序完成下面的任务。
(1)输入每种蔬菜编号、每种蔬菜4个季度的销售量存放数组num和sale中。
(2)计算每种蔬菜4个季度的销售总和,存放在数组sale的最后一列。
(3根据给定的蔬菜编号和季度数,找出与之对应的销售量。
(4)根据给定的季度数,找出该季度销售量最大、最小的两种蔬菜。
#include <stdio.h>
#include <string.h>
#define N 60 /*假设蔬菜品种为60*/
#define M 5
char num[N][10]; /*存放每种蔬菜编号,每行放一个编号*/
float sale[N][M];
/*每行可存放一种蔬菜的4个季度的销售量及销售总和*/
void fun1( )
/*功能是将每种蔬菜编号和4个季度的销售量存放数组中*/
{int i,k;
float (*p)[5]; /*定义行指针变量p,指向有5个元素的一维数组*/
p= sale; /*让p指向sale的首地址,即指向sale的首行*/
for (i=0; i<N; i++)
/*将每种蔬菜编号和销售量存放在num和sale数组的同一行*/
{ printf("请输入第%d种蔬菜的编号:",i+1);
scanf("%s",num[i]);
printf("请输入4个季度的销售量\n");
for (k=0; k<4; k++)
scanf("%f", *(p+i )+k); /*相当于执行“scanf("%f",&sale[i][k]);”*/
}
return;
}
void fun2( ) /*功能是计算每种蔬菜4个季度的销售总和*/
{int i,k;
char (*p)[10]; /*定义行指针变量p,指向有10个元素的一维数组*/
p=num; /*让p指向num的首地址,即指向num的首行*/
for (i=0; i<N; i++)
{ sale[i][4]= 0;;
for (k=0; k<4; k++)
sale[i][4]= sale[i][4]+ sale[i][k];
}
for (i=0; i<N; i++)
/*输出每种蔬菜编号和4个季度的销售量以及销售总和*/
{ printf("%s ", p+i); /*相当于执行“printf("%s ", num[i]);”*/
for (k=0; k<5; k++)
printf("%f ", sale[i][k]);
printf("\n");
}
return;
}
void fun3( )
/*功能是根据给定的季度数,找出该季度销售量最大、最小的蔬菜*/
{int qu,i,k1,k2; float max,min;
printf("请输入季度数(1或2或3或4):");
scanf("%d",&qu); /*该季度销售量对应数组sale的第qu-1列的值*/
max=sale [0][qu-1]; /*假设sale [0][qu-1]是最大值,暂时存放max中*/
min= sale [0][qu-1]; /*假设sale [0][qu-1]是最小值,暂时存放min中*/
for (i=1; i<N; i++)
/*通过与第qu-1列的其它数组元素比较,找最大、最小值*/
{if (sale [i][qu-1]>max)
{max= sale [i][qu-1]; k1=i; }
if (sale [i][qu-1]<min)
{min= sale [i][qu-1]; k2=i; }
}
printf("\n在第%d季度所有蔬菜销售量中,", qu);
printf("\n蔬菜编号%s的销售量%f千克最大;", num[k1],max);
printf("\n蔬菜编号%s的销售量%f千克最小。", num[k2],min);
return;
}
void fun4()
/*功能是根据给定的蔬菜编号和季度数,找出与之对应的销售量*/
{char *seek; int qu,i,j,k,n; ;
printf("请输入蔬菜编号:");
scanf("%s", seek);
for (i=0; i<N; i++)
if (strcmp(seek, num[i])==0)
k=i; /*k值存放给定的蔬菜编号在num中的行数*/
printf("请输入季度数(1或2或3或4):");
scanf("%d", &qu);
/*sale数组的第k行,第(qu-1)列位置的值就是要找的销售量*/
printf("\n编号为%s的蔬菜在第%d季度销售量为%f。\n",
seek, qu , sale[k][qu-1]);
return;
}

