当前位置:编程学习 > C/C++ >>

c语言设计 不是c++

1. 题目描述
从100名优秀运动员中评选出10名最佳运动员。具体规则如下。
1) 运动员号按1、2、3…..顺序编号;
2) 由键盘接受所收到的选票,每张选票至多可写10个不同的编号;
3) 对应名次的运动员编号可以有空缺,但必须用0表示;
4) 若编号超出规定的范围,或编号出现重复,作废选票;
5)按选票中所列最佳运动员顺序给他们计分,计分标准如下:从第1名至第10名所得分数依次为:15,12,9,7,6,5,4,3,2,1;
6)按各运动员所得分数高低进行排队,列出前十名最佳运动员排名,格式为:
名次      运动员编号     合计得分    合计得票数
如果得分相同,则得票多者在前,如果得分与票数都相同,则编号小的在前。
追问:来自手机问问我早都需要了。 而且你这个有好多我们都没学过
答案:昨天看到的!刚做好!在VC中运行无误!如果是TC把相应的清屏代码和所在的头文件换一下!

#include<stdio.h>
#include <stdlib.h>

int toupiao(int sc[100][2])
{
 system("cls"); 
 int flag=0,xh,i,j,xp[10]={0,0,0,0,0,0,0,0,0,0};
 printf("优秀运动员评选系统\n");
 printf("1.填写选票!\n");
 printf("2.放弃投票!\n");
 scanf("%d",&xh);
 switch (xh)
 {
  case 1:
   for(i=1;i<=10;i++)
   {
    printf("请给出投票第%d名的选手编号:",i);
    scanf("%d",&xp[i-1]);
    if(xp[i-1]>100||xp[i-1]<0)
    {
     printf("\n运动员编号错误!本票作废! \n");
     flag=2; 
     break;
    }
    else
     if(xp[i-1]!=0)
     {
      for(j=0;j<i-1;j++)
      {
       if(xp[i-1]==xp[j])
       {
        printf("\n给同一编号的运动员重复投票!本票作废! \n");
        flag=2; 
        break;
       }
      }
      if(j<i-1)
       break;
     }

   }
   break;   
  case 2:
   flag=0;
 }
 if(flag!=2)
 {
  for(i=0;i<10;i++)
  {
   if(xp[i]!=0)
   {
    switch(i)
    {
     case 0:
      sc[xp[i]-1][0]+=15;       
      break;
     case 1:
      sc[xp[i]-1][0]+=12;
      break;
     case 2:
      sc[xp[i]-1][0]+=9;
      break;
     case 3:
      sc[xp[i]-1][0]+=7;
      break;
     case 4:
      sc[xp[i]-1][0]+=6;
      break;
     case 5:
      sc[xp[i]-1][0]+=5;
      break;
     case 6:
      sc[xp[i]-1][0]+=4;
      break;
     case 7:
      sc[xp[i]-1][0]+=3;
      break;
     case 8:
      sc[xp[i]-1][0]+=2;
      break;
     case 9:
      sc[xp[i]-1][0]+=1;
    }
    sc[xp[i]-1][1]++;
   }
  }
  flag=1;
 }

 return flag;
}

void tjpm(int sc[100][2],int xp,int fp)
{
 system("cls");
 int pm[10]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},i,j;

 printf("选票统计与运动员排名\n");
 printf("已发放选票:\t%d\n",xp);
 printf("废 票:\t%d\n",fp);
 printf("有效票数:\t%d\n",xp-fp);

 for(i=0;i<100;i++)
 {
  for(j=0;j<10;j++)
  {
   if(sc[i][0]>sc[pm[j]][0])
   {
    int n;
    for(n=9;n>j;n--)
    {
     pm[n]=pm[n-1];
    }
    pm[n]=i;    
    break;
   }
   else
    if(sc[i][0]==sc[pm[j]][0])
    {
     if(sc[i][1]>sc[pm[j]][1])
     {
      int n;
      for(n=9;n>j;n--)
      {
       pm[j]=pm[j-1];
      }
      pm[j]=i;
      break;
     }
    }
  }
 }
 printf(" 十佳运动员排名得分:\n");
 printf("名次\t运动员编号\t合计得分\t合计得票数\t\n");
 for(i=0;i<10;i++)
 {
  if(pm[i]!=-1)
   printf("%d\t%d\t\t%d\t\t%d\n",i+1,pm[i]+1,sc[pm[i]][0],sc[pm[i]][1]);
 }
 printf("按回车键返回......\n");
 getchar();
 getchar();
}

void main()
{
 int score[100][2]={0,0};
 int xpcount = 0;
 int feipiao = 0;
 int flag=0;
 while(true){
  system("cls");
  int tpjg=0;
  printf("优秀运动员评选系统\n");
  printf("1.进行投票!\n");
  printf("2.统计选票并查看运动员排名!\n");
  printf("3.退出系统!\n");
  
  scanf("%d",&flag);
  switch (flag)
  {
   case 1:
    tpjg=toupiao(score);
    if(tpjg!=0)
     xpcount++;
    if(tpjg==2)
      feipiao++;
    break;
   case 2:
    tjpm(score,xpcount,feipiao);
    break;
   case 3:
    exit(0);
  }

 }
}

上一个:C语言新手入门怎么做?
下一个:关于C语言....很简单

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,