| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 927 人关注过本帖
标题:求高手看看我的程序错在哪里了啊!
只看楼主 加入收藏
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:2 
回复 楼主 唏嘘草
#include<stdio.h>
int main()
{
int s[100];//声明评分数组
int i,j; //声明循环变量i,j
int m,n;//声明变量 m:评委的人数,
int max=s[0];                         //这部貌似有点问题int min=s[0];
float sum;
float ave;
int a[100];
float b[100];







//输入m的值
printf("请输入评委人数(最少4人):");
scanf("%d",&m);
while(m<4)
{printf("请输入正确的评委数:");
  scanf("%d",&m);
}

//输入n的值
printf("请输入学生数(最少5人):");
scanf("%d",&n);     
while(n<5)     
{printf("请输入正确的学生数:");
scanf("%d",&n);         
}
     


for(j=1;j<=n;j++)
{//输入各评委的打分            
printf("输入各评委给第%d个学生的打分:",j);            //应该内嵌的for循环
for(i=0;i<m;i++)
{
   scanf("%d",&s[i]);
}
}


//求出个评委所打分的最高分和最低分

for(i=0;i<m;i++)
{if(s[i]>max)max=s[i];                  //max没赋初值
if(s[i]<min)min=s[i];            //min没赋初值
}
                               //后面你的还没看
//计算选手得分

for(i=0;i<m;i++)
sum=0;
sum=sum+s[i];
sum=sum-max-min;
ave=sum/(n-2);


//输出选手得分并记录

printf("第%d个学生的分数:%.2f\n",j,ave);

a[j]=j;//记录号数
b[j]=ave;//记录分数
}


//下面这部分进行排名
int k;
float t;
for(j=1;j<=n;j++)
{ for(k=1;k<=n-1;k++)
     if(b[j]<b[k+1]){t=b[j]; b[j]=b[k+1];b[k+1]=t;a[j]=k+1;
      printf("第%d名%d号%.2f",j,a[j],b[j]);
  }
}
return 0;   
}


菜鸟一名,准备起飞
2011-06-08 22:33
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 11楼 小菜小C
max和min不是在开头用s[0]给他们赋值了吗?有什么问题 啊?求解释
2011-06-08 22:51
jinzhu0505
Rank: 2
等 级:论坛游民
帖 子:24
专家分:35
注 册:2010-10-16
收藏
得分:0 
一般情况下变量或数组赋初值才能被正常引用;
2011-06-09 09:24
jinzhu0505
Rank: 2
等 级:论坛游民
帖 子:24
专家分:35
注 册:2010-10-16
收藏
得分:0 
s[0]无初值,赋值给max,min的是不可知的参数,你可以添加打印信息看看,用printf()函数
2011-06-09 09:26
jinzhu0505
Rank: 2
等 级:论坛游民
帖 子:24
专家分:35
注 册:2010-10-16
收藏
得分:0 
for(i=0;i<m;i++)
{if(s[i]>max)max=s[i];                  //max没赋初值
 else if(s[i]<min)min=s[i];            //min没赋初值,少了else看的不通顺
}
                               //后面你的还没看
//计算选手得分

for(i=0,sum=0;i<m;i++)//如果在执行语句中对sum赋初值会把之前的sum值用0覆盖了
{sum=sum+s[i];//此时{}可以省略了,只是为了好理解
}
sum=sum-max-min;
ave=sum/(n-2);

2011-06-09 09:31
fragileeye
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:107
专家分:387
注 册:2011-5-21
收藏
得分:2 
出错的地方还不少、
1:初始值max,min的设置都不当,数组s[]都没有出事化,就有max = min = s[0],这里应该这么改(初始化),max = 0(毕竟分数都是正的),min = LARGE_NUM(一个比较大的数,超过满分或定为满分,比如200)

2:计算选手得分的时候,sum 初始化为 0不能在循环内、不然for还有什么意义?这么改:
for(sum = 0,i=0;i<m;i++)
sum=sum+s[i];

3:求平均时lz得注意对象啊,sum=sum-max-min; ave = sum / (m - 2),这里是m,不是n !
2011-06-09 09:56
黄昏乐章
Rank: 2
来 自:青岛
等 级:论坛游民
帖 子:73
专家分:25
注 册:2011-6-6
收藏
得分:2 
观摩观摩 不过max min不用赋值吗
2011-06-09 10:11
jinzhu0505
Rank: 2
等 级:论坛游民
帖 子:24
专家分:35
注 册:2010-10-16
收藏
得分:0 
小改了一下,只保证第一个人正确显示
#include<stdio.h>
int main()
{

    int s[100];//声明评分数组
    int i,j; //声明循环变量i,j
    int m=0,n=0;//声明变量 m:评委的人数,
    int max=0;
    int min=100;//int max=s[0]=0;
                 //int min=s[0]=0;
    printf("%d\n%d\n",max,min);
    int sum;//float sum;
    int ave;//float ave;
    int a[100];
    float b[100];
   //输入m的值
    printf("请输入评委人数(最少4人):");
    scanf("%d",&m);
    while(m<4)
    {
        printf("请输入正确的评委数:");
        scanf("%d",&m);
    }

  //输入n的值
    printf("请输入学生数(最少5人):");
    scanf("%d",&n);     
    while(n<5)     
    {
        printf("请输入正确的学生数:");
        scanf("%d",&n);         
    }
     


    for(j=1;j<=n;j++)
    {//输入各评委的打分            
        printf("输入各评委给第%d个学生的打分:",j);
        for(i=0;i<m;i++)
        scanf("%d",&s[i]);

    //求出个评委所打分的最高分和最低分

        for(i=0;i<m;i++)
        {
            if(s[i]>max)max=s[i];
            if(s[i]<min)min=s[i];
        }

   //计算选手得分

        sum=0;
        ave=0;
        for(i=0;i<m;i++)
        {
            sum=sum+s[i];
        }
        sum=sum-max-min;
        printf("%d\n",sum);
        ave=sum/(m-2);//ave=sum/(n-2);


   //输出选手得分并记录

        printf("第%d个学生的分数:%d\n",j,ave);

        a[j]=j;//记录号数
        b[j]=ave;//记录分数
    }


  //下面这部分进行排名
    int k;
    float t;
    for(j=1;j<=n;j++)
    {
        for(k=1;k<=n-1;k++)
        if(b[j]<b[k+1]){t=b[j]; b[j]=b[k+1];b[k+1]=t;a[j]=k+1;
        printf("第%d名%d号%.2f",j,a[j],b[j]);
    }
     
    return 0;   
}

}
2011-06-09 10:29
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:0 
for(i=0;i<m;i++)
{
sum=0;
sum=sum+s[i];
sum=sum-max-min;
ave=sum/(n-2);
}
//是这样的吧!
//输入m的值
printf("请输入评委人数(最少4人):");
scanf("%d",&m);
while(m<4)
{printf("请输入正确的评委数:");
  scanf("%d",&m);
}//这是我看错了,但是前一句就没必要了啊!


多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2011-06-09 10:51
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:2 
s的数组没有初始化,最好用二维数组。
2011-06-09 10:54
快速回复:求高手看看我的程序错在哪里了啊!
数据加载中...
 
   



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

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