首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言题目//求改错解决办法

2012-03-28 
C语言题目//求改错/*比赛7个人比赛结束,按照选手的出场顺序宣布最后得分和最后名次,获得相同分数的选手具

C语言题目//求改错
/*
  比赛7个人比赛结束,按照选手的出场顺序宣布最后得分和
  最后名次,获得相同分数的选手具有相同的名次。
  选手序号:1,2,3,4,5,6,7
  选手得分:5,3,4,7,3,5,6
  则输出名次为:3,1,2,5,1,3,4
*/
#include <stdio.h>
#define NUM 7 //人数

void Groups()
{
  int array[NUM+1]={0,5,3,4,7,3,5,6};//选手成绩
  int array_t[NUM+1]={0},array_tt[NUM+1]={0};
  //array_t是已编名次的标记数组,array_tt是记录同名次元素的下标
  int i,n,smallest,num,k,j;
  num=1;//名次
  for(i=1;i<=num;i++)//每次处理一个名次
  if(array_t[i]==0)//找到第一个未处理的元素
  {
  smallest=array[i];//取第一个未处理元素当最小值
  k=1;//数组array_tt下标,同名次人数
  array_tt[k]=i;//记录分值为smallest的同名次元素的下标
  for(j=i+1;j<=NUM;j++)//对余下的进行处理
  if(array_t[j]==0)
  if(array[j]<smallest)
  {
  smallest=array[j];//重新设置当前最小值
  k=0;//重新设置同名次人数
  array_tt[++k]=j;
  }
  else if(array[j]==smallest)
  array_tt[++k]=j;
  for(j=1;j<=k;j++)
  array_t[array_tt[j]]=num;
  num++;
  i=0;
  }
  printf("player-NO Score Rank\n");
  for(j=1;j<=NUM;j++)
  printf("%3d %4d %4d\n",j,array[j],array_t[j]);
}

int main()
{
  Groups();
}

[解决办法]

C/C++ code
#include <stdio.h>#include <math.h>#include <conio.h>void sort(int array[],int n) //从小到大排序{     int i,j,k,t;     for(i=0;i <n-1;i++)     {        k = i;        for(j=i+1;j <n;j++)        {                    if(array[j] <array[k])            {                k = j;    //循环结束k总是数值最小的下标                }             }        //将数值最小的放到位置i        t=array[k];        array[k]=array[i];        array[i]=t;        } } int main(void){    int record[2][7] = {{5,3,4,7,3,5,6},{0,0,0,0,0,0,0}};    int ptemp[7];    int num[7];    int i,j;    for(i = 0; i<7; i++)    {        ptemp[i] = record[0][i];    }        sort(ptemp,7);    num[0] = 1;    for(i = 1; i<7; i++)    {        if(ptemp[i] == ptemp[i-1])        {            num[i] = num[i-1];        }        else        {            num[i] = num[i-1]+1;        }    }    for(i = 0; i<7; i++)    {        for(j = 0;j<7;j++)        {            if(record[0][i] == ptemp[j])            {                record[1][i] = num[j];            }        }    }        for(i = 0; i<7; i++) printf("%d ",record[0][i]);    printf("\n");    for(i = 0; i<7; i++) printf("%d ",record[1][i]);    getch();    return 0;} 

热点排行