求帮助一道 找到距平均数最近的值并替换问题

C++语言 码拜 9年前 (2016-04-11) 1169次浏览
11. 假设有一个已知值的整数数组a,大小为10,另有一个整数变量x,它的值通过键盘输入。请编写函数用于对数组内的数据进行更新替换,规则是: 对于输入的变量x的值,用它替换数组中距离平均值(数组内)最近的一个数据。该函数的调用方式如下:arrayupdate( a, x );
请给出该函数的完整定义。(10分)
本人写的程序是:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
double x;
cout<<“请输入x”;
cin>>x;
double a[10]={12,8,5,9,2,14,7,6,1,10};
int i;
double sum=0,aver;
for(i=0;i<=9;i++)
sum=sum+a[i];
aver=sum/10;
double b[10]={0,0,0,0,0,0,0,0,0,0};
int j;
for(j=0;j<=9;j++)
b[j]=fabs(a[j]-aver);//0.4,0.6小数的绝对值变成0了!?
int m,n,p,q;
for(m=1;m<=9;m++)
for(n=0;n<=10-m;n++)
{
if(b[n]>b[n+1])
{
p=b[n];b[n]=b[n+1];b[n+1]=p;
q=a[n];a[n]=a[n+1];a[n+1]=q;
}
}
int v;
for(v=0;v<=9;v++)
cout<<a[v]<<“*”;//调试
int w;
for(w=0;w<=9;w++)
cout<<b[w]<<“*”;//调试
a[0]=x;
int u;
for(u=0;u<=9;u++)
cout<<setw(5)<<a[u];
return 0;
}
本人的思路是构造另一个数组
但是在用fabs时发现了 0.4,0.6这样的小数的绝对值变成0了,可本人设的是double ,求怎么样解决
ps:作为小白本人只能编出来最蠢的程序,假如有好的思路可以提供给本人,谢谢!
解决方案

80

b[j]=fabs(a[j]-aver);不知道题主是怎么看出来它从0.4,0.6变成0的
你下面打印一下应该就会发现,b数组的值应该是对的,错的是你接下去写的代码才对
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求帮助一道 找到距平均数最近的值并替换问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)