| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1153 人关注过本帖
标题:学习C语言中 编程有问题 希望大家帮我看一下哪有问题
只看楼主 加入收藏
JBL
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-1-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
学习C语言中 编程有问题 希望大家帮我看一下哪有问题
图片附件: 游客没有浏览图片的权限,请 登录注册

这里面输出的average出了问题 为什么呢 我感觉我弄的没有问题啊
搜索更多相关主题的帖子: average average C语言 C语言 
2016-01-29 20:22
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
我看到两个问题,sum未初始化,min   max如果是求极值的话比较逻辑不对,并且a[i+1]最后越界
2016-01-29 21:17
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
我看到两个问题,sum未初始化,min   max如果是求极值的话比较逻辑不对,并且a[i+1]最后越界
2016-01-29 21:20
JBL
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-1-29
收藏
得分:0 
回复 2楼 jklqwe111
好我修改看看 谢谢
2016-01-29 21:29
JBL
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-1-29
收藏
得分:0 
回复 2楼 jklqwe111
那最好怎么写逻辑上比较正确 求教 我刚开始学这个 不是很懂
2016-01-29 21:32
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:7 
程序代码:
#include<stdio.h>
int main(){
    int count=20;
    double average;
    int a[20];
    int i;
    int sum=0,min,max;
    for(i=0;i<20;i++){
        scanf("%d",a+i);
        if(i==0)
            min=max=a[0];   

        else if(a[i]>max)
            max=a[i];
        else if(a[i]<min)
            min=a[i];
        sum+=a[i];
    }
    average=1.0*(sum-max-min)/(count-2);
    printf("count=%d,average=%f",count,average);
}


剑栈风樯各苦辛,别时冰雪到时春
2016-01-29 21:40
JBL
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-1-29
收藏
得分:0 
#include <stdio.h>
int main (void)
{
    int count=20;
    double average;

    int a[20];
    int i,j;
    int sum=0,min,max;
   
    for(i=0;i<20;i++)
    {
        scanf("%d",a+i);
    }
    for(i=0;i<20;i++)
    {
        max=min=a[0];
        if(a[i]<min)
        {
            min=a[i];
        }
        if(a[i]>max)
        {
            max=a[i];
        }
    }
    for(i=0;i<20;i++)
    {
        sum+=a[i];
    }
    for(i=0;i<20;i++)
    {

        if(a[i]==min||a[i]==max)
        {
            count--;
            sum-=a[i];
        
        }
    }
    average=(double)sum/count;
        
    printf("count=%d,average=%f",count,average);
    return 0;
}
   
这是我修改好的 答案也对了
主要就是最后average加了(double)
那为什么加了double就对了呢? 不懂
2016-01-29 22:00
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:7 
for(i=0;i<20;i++)
    {
       if (i==0)//这一句不能省
        max=min=a[0];
        if(a[i]<min)
        {
            min=a[i];
        }
        if(a[i]>max)
        {
            max=a[i];
        }
    }
楼主修改后的程序还是有问题的,虽然运算结果正确,但那只是巧合罢了,你把输入的改为乱序看看看。
2016-01-30 02:22
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
  max=min=a[0];
 for(i=1;i<20;i++)//从1开始
    {
        if(a[i]<min)
        {
            min=a[i];
        }
        if(a[i]>max)
        {
            max=a[i];
        }
    }
以上是另一写法。
2016-01-30 02:36
w2015
Rank: 2
等 级:论坛游民
帖 子:23
专家分:26
注 册:2016-1-28
收藏
得分:7 
我请问下,scanf("%d",a+i)这个对了?想用函数名做函数参数? 还有就是判断语句没对。可以列如这样:
int max;
max=a[0];
for(i=1;i<20;i++)
if(a[i]>max)
max=a[i];
这个应该可以形成判断最值的语句,最小值也是一样的道理,改改就可以了。
2016-01-31 10:27
快速回复:学习C语言中 编程有问题 希望大家帮我看一下哪有问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058612 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved