打字系统

      要求写一个打字系统(所要打的字均为字母),6个人可以进行打字练习 ,并且要求程序输出每个人的分数 、错误个数,正确个数以及排名,代码需要用c语言,共100个字符每个一分。

1、所要求的代码为c语言,所以肯定要用结构体,结构体中需要包含姓名,成绩、正确个数、错误个数这几个变量,做个结构体数组。

2、每个人所要打的字符都是随机的,所以要使用rand函数,此程序的头文件必须有#include<stdio.h> #include<time.h>  #include<stdlib.h>这三个。

3、对于随机产生的字符需要用rand()%26+97   这个数据,因为rand函数随时间的变化所以头文件必须有#include<time.h>这个  ,不然结果你们可以试试 ,嘿嘿。

4、要说这个程序最难的一点也要到了,不是检测正确个数、错误个数、所得分数、而是排序,如果没有一些思路,这可能会终结你这个程序。

5、对于一个结构体数组中的一个变量排序,不改变下表,能排完序后还能得到其他变量,这点可谓不难,有的人想着这有什么难的,so easy用个结构体就行了,   but  我想说,you can you try ,no can no bb  当两个结构体数组放在一起时,其中的琐碎关系能让人恶心的不想吃饭,说了这么多了,我就说说我的简单方法吧,不用结构体,用个数组就行,

把变量放在一个数组中,把它的下标放在一个数组中,这样两个就联系起来,变量交换,下标交换。同步就行。

以下是程序代码:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
 struct user
 {
  char name[20];
  int score;
  int trues;
  int errors;
 }a[6];
 int w[2][6];
 char b[100],c[100];
 int i,j,k,l1=0,l2=0,m,n;
 j=0;k=0;
 srand((unsigned)time(NULL));
 for(i=0;i<6;i++)
 {
  m=i;
  printf("请输入姓名:\n");
  scanf("%s",a[i].name);
     printf("请进行打字练习\n");
        for(i=0;i<10;i++)
  {
   b[i]=rand()%26+97;
      printf("%c",b[i]);
  }
     printf("\n");
     scanf("%s",c);
     for(i=0;i<100;i++)
  {
   if(b[i]==c[i])
    j=j+1;
      else
    k=k+1;
  }
  i=m;
  a[i].score=j*1;
  a[i].trues=j;
  a[i].errors=k;
  j=0;k=0;
 }
 for(n=0;n<2;n++)
 {
  if(n==0)
  {
   for(i=0;i<6;i++)
   {
    w[n][i]=a[i].score;
   }
  }
  else
  {
   for(i=0;i<6;i++)
   {
    w[n][i]=i;
   }
  }
 }
 for(i=0;i<5;i++)
 {
  for(m=i+1;m<6;m++)
  {
   if(w[0][m]>w[0][i])
   {   l1=w[0][i];
    w[0][i]=w[0][m];
    w[0][m]=l1;
    l2=w[1][i];
             w[1][i]=w[1][m];
    w[1][m]=l2;
   }
  }
 }
 printf("各人成绩为:\n");
 for(i=0;i<6;i++)
 {
  printf("第%d名成绩:\n",i+1);
        printf("姓名:%s\n分数:%d\n正确个数:%d\n错误个数:%d\n",a[w[1][i]].name,a[w[1][i]].score,a[w[1][i]].trues,a[w[1][i]].errors);
 }
 return 0;
}

 

懂了的, 顶一下下,谢谢,☺。

posted on 2015-07-08 18:09  码农er  阅读(223)  评论(0编辑  收藏  举报