标签:
要求写一个打字系统(所要打的字均为字母),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;
}
懂了的, 顶一下下,谢谢,?。
标签:
原文地址:http://www.cnblogs.com/1521299249study/p/4630992.html