| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 927 人关注过本帖
标题:求高手看看我的程序错在哪里了啊!
取消只看楼主 加入收藏
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
结帖率:88.24%
收藏
已结贴  问题点数:20 回复次数:8 
求高手看看我的程序错在哪里了啊!
程序代码:
#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(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];
}

//计算选手得分

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-6-8 18:22 编辑 ]
2011-06-08 18:21
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 2楼 jinzhu0505
我给n赋初值0但是结果是一样的!顺便问一下为什么要赋初值?????
2011-06-08 22:16
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 4楼 ytmyh
是的,自己写的东西,有时候就就是忘掉一些东西,完了在找就不易发现错误了!看到了!
2011-06-08 22:19
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 6楼 ouyangouyang
括号错在哪
2011-06-08 22:25
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 6楼 ouyangouyang
怎么是死循环啊,不是当输入的数不满足条件这个条件就不再执行了吗?
2011-06-08 22:32
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 11楼 小菜小C
max和min不是在开头用s[0]给他们赋值了吗?有什么问题 啊?求解释
2011-06-08 22:51
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 13楼 jinzhu0505
这一点说得好,正是我平时学习中疏漏的地方!学习了!
2011-06-09 13:16
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 16楼 fragileeye
感谢啊,我发现了一个致命的错误就是你说的那个n应该是m,另外把s[100]={0}然后给max=min=s[0]

这样好像行了!你觉得呢
2011-06-09 13:41
唏嘘草
Rank: 2
等 级:论坛游民
帖 子:128
专家分:93
注 册:2011-6-4
收藏
得分:0 
回复 16楼 fragileeye
这位高手 ,这个程序经过修改,只存在一个问题,就是最后排序的问题,你看下代码,再看下图
程序代码:
for(j=1;j<=n;j++)
{ for(k=j;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]);
  }
}[local]1[/local]

                                   为什么最后进行排名!怎么全是5号啊!不解啊!
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 唏嘘草 于 2011-6-9 18:03 编辑 ]
2011-06-09 18:00
快速回复:求高手看看我的程序错在哪里了啊!
数据加载中...
 
   



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

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