有5个数字,把相同的数去掉,在求剩下数的平均数和它们的和???用C语言
有5个数字,把相同的数去掉,在求剩下数的平均数和它们的和???用C语言#include<stdio.h>
double b;
void newarray(double a[])
{
int i,j;
for(i=0;i<5;i++)
b=a;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(i!=j&&a==a)
{
b=0;
b=0;
}
}
}
}
int main()
{
double a;
int i,count=0;
double average,sum=0;
printf("please input 5 numbers:\n");
for(i=0;i<5;i++)
scanf("%lf",&a);
newarray(a);
for(i=0;i<5;i++)
printf("%lf\t",b);
for(i=0;i<=4;i++)
{
sum+=b;
if(b!=0)
count++;
}
average=sum/count;
printf("sum is %lf,average is %lf",sum,average);
return 0;
}
偶是菜鸟,请指教 有没有简单一点的???? 本帖最后由 maomingkun 于 2013-12-11 17:25 编辑
#include <stdio.h>
main()
{
int a={2,3,2,3,2}; //定义五个数
int i,j,x=0,y=0; //x是个标志,是否有重复的数;y是计算有几个重复的数字,用5减去y就是剩的数
float sum=0.0; 这个是存储和的,我用了实型
for(i=0;i<5;i++) //取第一个数开始于第二个比较
{
for (j=i+1;j<5;j++)
{
if (a==a) 如果相等跳出循环
{
x=0;
y++; //重复一次说明有一个重复的数,
break;
}
x=1; 不相等x=1,说明这个数与后边的数没有重复
}
if (x==1)
{
sum+=a; //没有相等的数的时候x=1,a可以相加了
}
}
printf("总和是%d,平均数是%1.1f",(int)sum,sum/(5-y));
}
我这个怎么样?能看得懂么?不懂继续追问!
有5个数字,假如有相同的数,要把相同的数去掉,去掉最大值和最小值,再来求剩下数的平均数和它们的和?怎么解决??? 楼主:I服了you!!!!! 我是菜鸟,没办法,不会做,求大神指教 trary 发表于 2013-12-11 14:14 static/image/common/back.gif
#include
double b;
兄弟,你这个貌似有点问题吧? 本帖最后由 maomingkun 于 2013-12-11 22:29 编辑
#include <stdio.h>
main()
{
int a={7,4,3,5,2};
int i,j,x=0,y=0,k=1,max,min;
float sum=0.0;
for(i=0;i<5;i++)
{
for (j=0;j<5;j++)
{
if (a==a&&i!=j) //如果两个数相同,a不算入sum
{
x=0;
y++; //判断有几个数相同,当有三个数相同时,1跟2比,y++,然后跳出循环;然后2跟1比;3跟1比,所以正好求出几个数相同
break;
}
x=1; / /x==1时,说明没有与a重复的a。
}
if (x==1) //下边是将不重复的数进行运算
{
if (k>=1)
{
max=a; //将没有重复的第一个数赋值给max和min用于初始化这两个变量
min=a;
k-=1;//这个if语句仅使用一次
}
max=max>a?max:a; //求出最大值
min=min<a?min:a; //求出最小值
sum+=a; //求和
printf("%d\t",a);
}
}
printf("\n");
switch (y) //判断有几个数相同,根据不同的值有不同的输出。这些你自己完善一下吧
{
case 0:
{
sum=sum-max-min;
printf("有5个不同的数, 去掉最大数%d和最小数%d,总和是%d,平均数是%1.1f\n",max,min,(int)sum,sum/3);
break;
}
case 2:
{
sum=sum-max-min;
printf("有3个不同的数, 去掉最大数%d和最小数%d,总和是%d,平均数是%1.1f\n",max,min,(int)sum,sum/1);
break;
}
case 3:
{
break;
}
case 4:
{
printf("有1个不同的数, 和是%d,平均数是%d\n",(int)sum,(int)sum);
break;
}
case 5:
{
printf("5个数都相同!");
break;
}
}
}
对不住了兄弟,有点事儿,发的有点晚了! 我也是蔡鸟混经验 想了一个晚上加两节课的时间。。
代码比较粗糙。。。其实可以优化的。
您的意思 是先去掉重复的,再去掉最大最小的是吧。#include <stdio.h>
int main ()
{
float a={0},b={0}, temp=0, count=0, max=0, min=0, sum=0, aver=0;
int i=0,j=0,p=0;
bool boolSame=false;
for (i=1; i!=6; i++)/*这个for循环用来把重复的数过滤掉*/
{ scanf("%f", &temp);/*输入5个数。 */
if (i==1)/*首次循环需要 确定max ,min的大小 */
{ /*max,min的值不能随便给出,否则会出现错误 */
max =temp;
min = max +1;
}
boolSame=false;/*标志位,标志着输入的数是否有重复,默认false不重复*/
for (j=1; j<=i; j++)
{
if ( a == temp) /*如果发现了重复的*/
{
boolSame=true;/*把标志位设置成true,然后跳出for循环*/
break;
}
else if (max < temp)
{
max = temp;
}
else if(min > temp)
{
min = temp;
}
}
if ( false == boolSame )/*如果和前面中没有一个相同,same就是false */
{
++p; /*p代表数组a有几个元素,每当筛选出一个符合的*/
a=temp; /*就放入数组,然后p加1*/
a=temp;/*把a后面的一个元素放人和a一样的值*/
}
}
a=p; /*a没用,这回用上了。。让它保存P,因为一会P要*/
p = 0;/*,因为一会P要统计新的数组b[]的元素个数,同时指向数组最后一个值*/
for (i=1; i <=a; i++)/*这个for把剩下的最大最小值过滤掉*/
{
if ( (a-min==0)||(a-max==0) )
{ //如果发现了最大值或者最小值,则不放入b[]数组
continue;//跳出进行下一步循环
}
else
{
p++;
b=a;
sum=sum+b;
}
}
aver = sum/p;
printf("数组元素:");
for (i=1; i<=p; i++)
{
printf("%f",b);
}
printf("\n筛选后剩余:%dmax:%fmin:%fsum:%faver:%f",p,max,min,sum,aver);
return 0;
} maomingkun 发表于 2013-12-11 22:25 static/image/common/back.gif
兄弟,你这个貌似有点问题吧?
额 我不是什么兄弟。。。什么问题 本帖最后由 maomingkun 于 2013-12-12 17:27 编辑
1. for(int j = i+1;j<size;j++)
{
if(p==p)//这个地方p是放的地址吧?而p这个应该是数值吧?p是不是应改为*p呢?
{
//用pc数组记录p数组中重复的数据,0表示重复,1表示不重复
pc=0;
pc=0;
}
2.void getNums(int* p,int size)
{
cout<<"请输入五个整数:";
for(int i = 0;i<size;i++)
{
cin>>p;//这个地方也是,p是个指针变量吧?应该用*p来接受输入吧!
}
}
姐们儿,你看看这两个地方,是不是有点出入啊?我给p改为*p了,但是运行结果还是不对! trary 发表于 2013-12-12 13:31 static/image/common/back.gif
额 我不是什么兄弟。。。什么问题
1. for(int j = i+1;j<size;j++)
{
if(p==p)//这个地方p是放的地址吧?而p这个应该是数值吧?p是不是应改为*p呢?
{
//用pc数组记录p数组中重复的数据,0表示重复,1表示不重复
pc=0;
pc=0;
}
2.void getNums(int* p,int size)
{
cout<<"请输入五个整数:";
for(int i = 0;i<size;i++)
{
cin>>p;//这个地方也是,p是个指针变量吧?应该用*p来接受输入吧!
}
}
姐们儿,你看看这两个地方,是不是有点出入啊?我给p改为*p了,但是运行结果还是不对!
maomingkun 发表于 2013-12-12 17:26 static/image/common/back.gif
1. for(int j = i+1;j
这不是我写的吧? 袁小贤 发表于 2013-12-11 16:41 static/image/common/back.gif
有没有简单一点的????
我是菜鸟。。。我写的已经是非常简单了。。。 本帖最后由 maomingkun 于 2013-12-12 21:53 编辑
trary 发表于 2013-12-12 20:19 static/image/common/back.gif
我是菜鸟。。。我写的已经是非常简单了。。。
:funk:看错了呵呵你的代码没问题 不好意思 maomingkun 发表于 2013-12-12 21:47 static/image/common/back.gif
看错了呵呵你的代码没问题 不好意思
没事啊 不过我现在还不是鱼友 加不了好友啊 trary 发表于 2013-12-13 13:31 static/image/common/back.gif
没事啊 不过我现在还不是鱼友 加不了好友啊
晓得晓得我刚开始也是别人加我我没权限
页:
[1]
2