这个平均值怎么求(C语言)

编写一个程序,计算键盘输入的任意个浮点数的平均值。将所有的数存储到动态分配的内存中,之后计算显示平均值。用户不需要事先指定需要输入多少个数.
\n表输入结束啊
最新回答
一澜冬雪

2024-11-27 06:48:51

说明:

1.用户不需要事先指定需要输入多少个数

做法:while(scanf("%lf",&data)){},这样当scanf函数试图从用户输入中读取一个浮点型数值失败的时候 不再继续读取,!!!好处:可以输入多行数据,以任意字母结束

2.将所有的数存储到动态分配的内存中

做法:使用链表来存储就行了,记住!!:一定要记得释放内存

使用示例:

Please Input Some Float Values:

1.1 2.2 3.3

4.4 5.5 6 7 8 9

4.1 a

Data In List Are:

1.100000 2.200000 3.300000 4.400000 5.500000 6.000000 7.000000 8.000000 9.000000 4.100000

Average=5.060000

Press any key to continue

说明:当scanf("%lf",&data))函数读取到4.1后面的"a"时,判断得出该输入不是一个浮点数,从而中断读取操作。

#include <stdio.h>

#include <malloc.h>

struct ListNode

{

 ListNode* next;

 double data; 

};

ListNode* Append(ListNode *pList,double data)

{

 ListNode *pNew = (ListNode*)malloc(sizeof(ListNode));

 pNew->data = data;

 pNew->next = NULL;

 if (!pList)

 {

  pList = pNew;

  pList->next = NULL;

 }

 else

 {

  ListNode *pLast = pList;

  while(pLast->next)

  {

   pLast = pLast->next;

  }

  pLast->next = pNew;  

 }

 return pList;

}

double Average(ListNode *pList)

{

 printf("Data In List Are:\n");

 int i=0;

 double dSum=0;

 ListNode *pNode = pList;

 while(pNode)

 {

  dSum+=pNode->data;

  printf("%f ",pNode->data);

  pNode=pNode->next;

  i++;

 }

 return (dSum/i); 

}

void Free(ListNode *pList)

{

 ListNode *pNext,*pNode = pList;

 while(pNode)

 {

  pNext=pNode->next;

  free(pNode);

  pNode=pNext;

 } 

}

void main()

{

 double data,aver=0;

 ListNode *pList=NULL;

 printf("Please Input Some Float Values:\n");

 while(scanf("%lf",&data))

 {

  pList = Append(pList,data);    

 } 

 aver = Average(pList);

 printf("\nAverage=%f\n",aver);

 Free(pList); 

}

灯火印容

2024-11-27 06:23:58

#include"stdio.h"
#include"stdlib.h"

int main(int argc,char *argv[])
{
int i;
double *a=(double *)malloc(sizeof(double)*(argc-1));
double s=0;
for(i=1;i<argc;i++)
{
s+=atof(argv[i]);
}
s/=argc-1;
printf("%lf\n",s);
}

假设该段代码编译生成程序a.exe,那么程序的运行方式是
a 1.5 2.5 3.5 4
a 1 2 3
这样
冷月如霜

2024-11-27 07:08:11

#include "stdafx.h"
#include <vector>
using namespace std;

vector<float> m_fFloat;

float Average(vector<float> fFloat)
{
float fAverage = 0.0f;
float fTotal = 0.0f;

for (unsigned int i = 0; i < fFloat.size(); i++)
{
fTotal += fFloat[i];
fAverage = fTotal / (i + 1);
}

return fAverage;
}

int _tmain(int argc, _TCHAR* argv[])
{
while(1)
{
cout << "请选择你要执行的操作: 1.添加一个数 2.求平均值 3.清空数据" << endl;
int i = 0;
cin >> i;
switch (i)
{
case 1:
{
cout << "请输入一个数:" << endl;
float f = 0.0f;
cin >> f;
if (f)
{
m_fFloat.push_back(f);
}
else
{
cout << "输入参数错误!" << endl;
}
break;
}
case 2:
{
float fAverage = Average(m_fFloat);
CString str;
str.Format("平均数: %f", fAverage);
cout << str << endl;
break;
}
case 3:
{
if (m_fFloat.size() > 0)
{
m_fFloat.clear();
}
break;
}
}
}

return 0;
}
佐佐木惠理

2024-11-27 06:36:19

拜佛烧香求出来百度地图