程序要求:计算形参x所指数组中N个数的平均值(规定所有的数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至数组的后部,平均值作为函数值返回,在主函数中输入平均值和移动后的数据。
例如:有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为30.500000 。移动后的输出为:46 32 40 45 48 30 6 17 15 26
在编写程序之初的函数编写中,定义的各位综合出现了前后不符的情况,例如,之前定义的S是int整型变量,但是之后,在输出s的时候,却把它当成了和ave相同概念的变量,用%f浮点型变量进行输出。这个错误的出现,表明了我在程序编写中,思路不是特别清晰,定义的变量没有事先考虑清楚。改正错误最好的办法是在写程序之前,列出一个相对清晰的提纲,这使得程序在修改和备注的时候能有一个较为明了的辅助策略。
/*****************************************************
copyright (C), 2014-2015, Lighting Studio.Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
float ave;
float average(int a[])
{
inti;
floats=0;
for(i=0;i<10;i++)
s=s+a[i];
printf("数组各数之和等于%f\n",s);
ave=s/10;
returnave;
}
int main()
{
inta[10],b[10];
inti,j=0;
floataverage(int a[]);
printf("input:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
average(a);
printf("average=%f\n",ave);
for(i=0;i<10;i++)
{
if(a[i]>ave)
b[j++]=a[i];
}
for(i=0;i<10;i++)
{
if(a[i]<ave)
b[j++]=a[i];
}
for(j=0;j<10;j++)
printf("%d",b[j]);
printf("\n");
return0;
}