高分悬赏 C语言数组编程题

需要完整代码
小学生增长量是城市吸引力的重要体现,可以使用二维数组array存放不同城市近年的小学学生增长量,分别把array定义为局部数组和全局数组两种方式,编程实现如下功能:

1.通过键盘录入北京、上海、深圳、广州四个一线城市从2013年至2017年的小学生增长人数,并存入一个4*5的整型数组array[4][5]中。

2.定义一个sum()函数计算每年四个城市总共增加的小学生人数,在main函数中打印输出。

3.定义一个average()函数统计每个城市近5年的平均小学生增长量,根据小学生平均增长量的多少对数组重新排序。在main函数中打印出排序结果,并打印每个城市的平均小学生增长量。

4.定义一个max()函数找到array数组中最大的数,并在屏幕中显示其对应的城市和年份。

第1个回答  2018-06-15
#include "stdio.h"
int sum(int *p){
return p[0]+(p+5)[0]+(p+10)[0]+(p+15)[0];
}
void average(int (*p)[5],double *a,int *s){
int i,j,k;
for(i=0;i<4;i++)
a[i]=(p[i][0]+p[i][1]+p[i][2]+p[i][3]+p[i][4])/5.0;
for(i=0;i<4;i++){
for(k=i,j=k+1;j<4;j++)
if(a[s[k]]>a[s[j]])
k=j;
if(k-i)
j=s[k],s[k]=s[i],s[i]=j;
}
}
void max(int (*p)[5],char (*c)[12]){
int i,j,ii,jj;
for(ii=jj=i=0;i<4;i++)
for(j=0;j<5;j++)
if(p[i][j]>p[ii][jj])
ii=i,jj=j;
printf("The MAX: %d\t%s\t%d\n",p[ii][jj],c[ii],2013+jj);
}
int main(int argc,char *argv[]){
int array[4][5],s[4]={0,1,2,3},i,j;
char city[4][12]={"Beijing","Shanghai","Shenzhen","Guangzhou"};
double ave[4];
printf("Please enter data...\n");
for(i=0;i<4;i++){
printf("%10s: ",city[i]);
for(j=0;j<5;scanf("%d",array[i]+j++));
}
printf("\n");
for(i=0;i<5;i++)
printf("\t%d: %d\n",2013+i,sum(array[0]+i));
average(array,ave,s);
printf("\n     CITY       AVER\n==========================\n");
for(i=0;i<4;i++)
printf("%10s\t%g\n",city[s[i]],ave[s[i]]);
printf("\n");
max(array,city);
return 0;
}

运行样例:

本回答被提问者采纳
相似回答