求用C语言(排列)写一个求平均值小程序

一个星期,某大桥的通车量从星期一到星期五依次是:986, 818, 638, 763, 992, 534, 683.
数据要从一个.in文件读取

请用排列编一个程序,计算通车量的平均值,并且指出最高的通车量,以及是哪天。

输出大概是这样的
average=773
max=992, Friday

可能比较复杂,多谢了!! 我一定追加到最高分。

这个应该可以,你试试

#include <stdio.h>

/*交换两个数*/
void Swap(int &a, int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
/*输出一行十个数字*/
void Write(int array[], int begin, int end)
{
for(int i = begin; i <= end; i ++)
// cout <<array[i] << " ";
printf("%d ",array[i]);
printf("\n");
// cout << endl;
}
/*插入排序*/
void InsertionSort(int array[], int begin, int end)
{
int i, j;
int tmp;
for(i = begin+1; i <= end; i ++) /*循环几次就输出几行*/
{
tmp = array[i];
for(j = i-1; j >= begin; j --)
{
if(tmp > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
array[j + 1] = array[j];
else
break;
}
array[j+1] = tmp;
Write(array, begin, end); /*输出排序结果(一行)*/
}
}
/*选择排序*/
void SelectionSort(int array[], int begin, int end)
{
int i, j;
int position;
for(i = begin; i < end; i ++)
{
for(j = i+1, position = i; j <= end; j ++)
{
if(array[j] > array[position]) /*如果要从小到大排序,则改将'>'改为'<'*/
position = j;
}
Swap(array[i], array[position]);
Write(array, begin, end);
}
}
/*冒泡排序*/
void BubbleSort(int array[], int begin, int end)
{
int i, j;
for(i = begin; i < end; i ++)
{
for(j = begin; j <= end - begin -1; j ++)
{
if(array[j+1] > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
Swap(array[j], array[j+1]);
}
Write(array, begin, end);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-03-18
#include <stdio.h>
main()
{
int i,ind;
int flow,avr,max,sum;
static days[] = {"Monday","Tuesday","Wedensday","Thursday",
"Friday","Saturday","Sunday"};
FILE *file;

file = fopen("....in","r");
if( file == NULL ) {
printf("File open error\n");
exit(1);
}
max = sum = 0;
for(i=0;i<7;i++) {
fcanf(file,"%d",&flow);
sum += flow;
if(max < flow ) {
max = flow;
ind = i;
}
}
fclose(file);
avr = sum/7;
printf("Average=%d\n",avr);
printf("Max=%d %s\n",max,days[ind]);
}
第2个回答  2008-03-18
/*
一个星期,某大桥的通车量从星期一到星期日依次是:986, 818, 638, 763, 992, 734, 683.
数据要从一个.in文件读取

请用排列编一个程序,计算通车量的平均值,并且指出最高的通车量,以及是哪天。

输出大概是这样的
average=773
max=992, Friday
*/
#include <stdio.h>

//定义一个结构体以方便编程
typedef struct _data
{
float data;//通车量
int day;//星期数 0代表星期一 6代表星期日
}DATA;
//一日通车量

int main()
{
//初始化星期单词
char weekday[][10] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
//定义是通车量数组及一个临时变量(排列时用)
DATA array[7], temp;
FILE *fp;
int i, j;
float aver = 0;//平均通车量

//初始化星期数
for(i = 0; i < 7; i++)
{
array[i].day = i;
}

//打开文件
fp = fopen("in.in", "r");//假设文件名为in.in
if(fp != NULL)
{
//从文件中读取每日通车量,以逗号为分隔
fscanf(fp, "%f,%f,%f,%f,%f,%f,%f",
&array[0].data, &array[1].data,
&array[2].data, &array[3].data, &array[4].data,
&array[5].data, &array[6].data);

/*
//输出结果以检验读取是否正确
for(i = 0; i < 7; i++)
{
printf("%.f ", array[i].data);
}
printf("\n");
*/

//冒泡法排序
for(i = 0; i < 4; i++)
{
for(j = 0; j < 7 - i -1; j++)
{
//小的往下沉,大的往上浮
if(array[j].data < array[j + 1].data)
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}//排列后第一个元素日通车量最大

//输出结果
aver =
(array[0].data + array[1].data + array[2].data + array[3].data +
array[4].data + array[5].data + array[6].data ) / 7;
printf("average = %.f\n", aver);
printf("max = %.f, %s\n", array[0].data, weekday[array[0].day]);

//关闭文件
fclose(fp);
}
else
{
printf("error\ncan not open the file in.in");
}

//暂停以显示结果
printf("printf any key to exit ....");
getchar();
return 0;
}
-----------------------------------------
我想你应该是指星期一到星期天吧?因为有七个数据
注意,你最后一个数据的逗号是中文逗号,不符合要求

本文件在VC6.0下运行成功
运行时目录下有名叫in.in的文件,里面的数据是
986, 818, 638, 763, 992, 534, 683.
输出与LZ相同
第3个回答  2008-03-18
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
if((fp=fopen("D:\\data.in","r"))==NULL)
{
printf("file can not open!\n");
exit(0);
}

int i,j;
int data, maxi(0),max(0),avg(0);
printf("Element Value");
for(i=0; i<5; ++i)
{
fread(&data, sizeof(int), 1, fp);
if(max < data)
{
max = data;
maxi = i;
}
avg += data;
}
avg /= 5;
char *out[] = {"Monday", "Tuesday", "Thirsday", "Saterday", "Friday"};
printf("average=%d \n", avg);
printf("max=%d,%s\n", max, out[maxi]);
fclose(fp);
}
第4个回答  2008-03-18
void outResult(int data[], int num)
{
int i, avg = 0, max = 0;
for(i = 0; i < num; i++)
{
avg += data[i];
if(data[i] > data[max])
max = i;
}
avg /= num;
printf("average = %d\nmax = %d,%s", avg, data[max], days[max]);
}

编译通过.
第5个回答  2008-03-19
我已试过了,还是可以用的.
#include <stdio.h>

/*交换两个数*/
void Swap(int &a, int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
/*输出一行十个数字*/
void Write(int array[], int begin, int end)
{
for(int i = begin; i <= end; i ++)
// cout <<array[i] << " ";
printf("%d ",array[i]);
printf("\n");
// cout << endl;
}
/*插入排序*/
void InsertionSort(int array[], int begin, int end)
{
int i, j;
int tmp;
for(i = begin+1; i <= end; i ++) /*循环几次就输出几行*/
{
tmp = array[i];
for(j = i-1; j >= begin; j --)
{
if(tmp > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
array[j + 1] = array[j];
else
break;
}
array[j+1] = tmp;
Write(array, begin, end); /*输出排序结果(一行)*/
}
}
/*选择排序*/
void SelectionSort(int array[], int begin, int end)
{
int i, j;
int position;
for(i = begin; i < end; i ++)
{
for(j = i+1, position = i; j <= end; j ++)
{
if(array[j] > array[position]) /*如果要从小到大排序,则改将'>'改为'<'*/
position = j;
}
Swap(array[i], array[position]);
Write(array, begin, end);
}
}
/*冒泡排序*/
void BubbleSort(int array[], int begin, int end)
{
int i, j;
for(i = begin; i < end; i ++)
{
for(j = begin; j <= end - begin -1; j ++)
{
if(array[j+1] > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
Swap(array[j], array[j+1]);
}
Write(array, begin, end);
}
}

/*将原始数组拷贝到要排序的数组,因为有3个排序方法,所以必须保留原始数组,以备其他调用*/
bool Copy(int array1[], int array2[], int n1, int n2)
{
if(n1 != n2)
return false;
else
{
for(int i = 0; i < n1; i ++)
{
array1[i] = array2[i];
}
return true;
}
}
/*主函数*/
void main()
{
/*如果需要输入排序的个数不是10个数,可以将3个地方的10改为你要的个数就可以了*/

int number, i; /*定义2个整型变量*/
int initinal[10], sort[10]; /*定义2个数组,第一个是保存输入的10个数,第2个是用来排序的数组*/

printf("请输入十个要排序的数字:\n");
number = 10; /*排序个数是10个*/

for(i = 0; i < number; i ++)
scanf("%d",&initinal[i]);

printf("从大到小插入排序:\n");
Write(initinal, 0, number-1); /*输出原始十个数据*/
Copy(sort,initinal,number, number); /*将原始数组拷贝到排序数组*/
InsertionSort(sort,0,number-1); /*调用排序函数*/

printf("从大到小选择排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
SelectionSort(sort,0,number-1);

printf("从大到小冒泡排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
BubbleSort(sort,0,number-1);
}
好了,搞了半天,哎 现在要看你的造化了. 呵呵

用c语言编写一个程序,输入10个数求平均值。
C语言:编写一个程序,从键盘输入10个学生成绩,求平均成绩。1、虽然main函数可以作为结构体或者类的成员函数,但相应地会失去作为程序出入口的功能。 C++中全局main函数的书写格式与C语言完全相同,功能也完全相同,且同一C++程序同样只能有一个全局main函数。2、循环语句中进行10个数的累加在sum里面,然后...

用C语言设计一个求三个数平均值的程序
include<stdio.h>int main(){ double a,b,c,avg; scanf("%lf%lf%lf",&a,&b,&c);\/\/键盘输入 avg=(a+b+c)\/3; \/\/求平均数 printf("%.2lf\\n",avg);\/\/输出 return 0;}\/*例子:运行结果:求1 2 3的平均数1 2 32.00*\/ ...

c语言如何编写一段计算平均值的程序?
c++语言:include<iostream> using namespace std;int main(){int n;int i,m,sum;double ave;cout<<"how many numbers do you want to do average?";cin>>n;for(i=0;i<n;i++){cin>>m;sum+=m;} ave=sum\/n;cout<<"The average of these "<<n<<" numbers is:"<<ave<<endl;...

c语言求多个平均值程序代码,当输入一个确定的标号后后开始运行?_百度...
printf("平均值为 %.2f\\n", average);return 0;} ```如果要实现输入多组数组并计算它们的平均值,则可以在程序中使用循环结构,如下所示:```c include <stdio.h> int main() { int input;float sum = 0.0, average;int count = 0;int label = 0;while (1) { printf("请输入标号...

c语言 求一组数的平均值及其均方差 写出程序,谢谢!
sum1+=a[i];average=sum1\/N;printf("均值=%f\\n",average);for(i=0;i<N;i++)sum2+=(a[i]-average)*(a[i]-average);variance=sum2\/N;printf("方差=%f\\n",variance);printf("均方差=%f\\n",sqrt(variance));} 你要求几个数,帮N=4改成N=?以及下面的4改成?就可以了!!!...

求一个C语言的求平均值的程序
我原来写的求平均分的小程序 给你吧 include<stdio.h> void main(){ int m,i;float a[100],sum=0.0;while(1){ printf("请输入你要计算多少个数的平均分?按'0'退出程序:\\n");scanf("%d",&m);if(m==0) break;printf("\\n");printf("请分别输入每个数,数与数之间用回车或...

如何用c语言编写计算机平均值的程序?
1、#include<stdio.h>int main()2、{ int a,b,c; scanf("%d%d%d",&a,&b,&c);3、 int sum = a+b+c;4、 printf("和: %d",sum);5、printf("平均值:%f",sum\/3.0);6、return 0 讲解:1、先定义四个整形。2、一个浮点型保存平均值。3、然后在控制台等待输入。4、...

编程统计学生成绩平均值的C语言程序怎么写?
printf("请输入%d个学生的成绩:\\n", numStudents);for (i = 0; i < numStudents; i++) { printf("学生%d的成绩:", i + 1);scanf("%f", &scores[i]);sum += scores[i]; \/\/ 累加成绩 } \/\/ 计算平均值 average = sum \/ numStudents;\/\/ 输出平均值 printf("学生成绩的平均...

如何使用C语言编写一个程序来算出键盘上随意输入5个数的总和和平均值...
include\\x0d\\x0aint main()\\x0d\\x0a{\\x0d\\x0a int shu[5];\/\/记录五个数\\x0d\\x0a int sum=0;\/\/总和;\\x0d\\x0a int ave=0;\/\/平均数\\x0d\\x0a int i;\/\/用于计数\\x0d\\x0a for(i=0;i<5;i++)\\x0d\\x0a {\\x0d\\x0a scanf("%d",&sh...

c语言求n个数的平均数
求n个数平均数源程序如下:define _CRT_SECURE_NO_WARNINGS include<stdio.h> int main(void){ int a[100] = { NULL };\/\/初始化数组元素 int i = 0, n;\/\/定义循环变量和正整数变量n float sum = 0.0;\/\/定义和变量为float型,注意计算的数据类型 float average = 0.0;\/\/定义平均数...

相似回答
大家正在搜