大家自己设三个或一个文本文件,内含1000个字符就行了,英文字母或其他字符都可以。谢谢指教!!主函数在下面!介绍一下自定义函数的功能吧。
自定义函数名称 |
函数功能 |
Background() |
设置简单友好界面。 |
DEMO() |
设置菜单供用户选择练习方式及退出。 |
Get_charater() |
实现从用户指定文件随机抽取100个字符并显示在屏幕上供用户参照打字的功能 |
Typing() |
程序的核心,实现了接受输入的字符、判定正误、计算练习成绩和时间等并显示在屏幕 |
特点:而主函数则非常简单,只包含这四个要调用的函数。
这四个函数功能单一,且每个函数不超过50行,较好地满足设计风格。
#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <time.h>
char string[101];
void Background()
{
int driver=DETECT,mode; /*定义变量*/
int x1=20,y1=20,r=10,num;
int x2=20,y2=450;
int color1=10,color2=10; /*在此设置颜色,一改全改*/
initgraph(&driver,&mode,"a:\\bgi "); /*初始化图形模式*/
setcolor(color1); /*步骤一、设置当前颜色用于绘图*/
for(num=0;num<30;num++)
{
circle(x1,y1,r); /*步骤二、使用当前颜色绘制一个闭合图形*/
setfillstyle(num%12,color1); /*步骤三、设置填充方式*/
floodfill(x1,y1,color1); /*步骤四、对闭合图形进行填充*/
x1+=20;
delay(100);
}
setcolor(color2);
for(num=0;num<30;num++)
{
circle(x2,y2,r);
setfillstyle(num%12,color2);
floodfill(x2,y2,color2);
x2+=20;
delay(100);
}
setcolor(YELLOW); /*改变当前颜色,输出友好话*/
settextstyle(0,0,2);
outtextxy(50,150,"WELCOME TO THE TYPING WORLD!");
setcolor(LIGHTMAGENTA);
outtextxy(200,350,"DESIGED BY HE ZHANG HONG");
sleep(3); /*延时二秒观看结果*/
closegraph(); /*关闭图形*/
}
void DEMO() /*设置菜单函数*/
{
printf("_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_**_*\n”
"\t\t\t"
"THE DEMO DISPLAY FOR THE FILE SYSTEM\n"
"\n"
"\t\t"
"1:PRATICE ONLY ENGLISH Characters.\n"
"\t\t"
"2:PRATICE OTHER Charcters.\n"
"\t\t"
"3:PRATICE ALL Charcters.\n"
"\t\t"
"4:QUIT AT ONCE!\n"
"\n");
}
void Get_character(void) /*设置得到字符函数*/
{
void Typing(); /*声明typing()函数*/
FILE *in;
int i,t,choice;
char ch;
t=abs(time(0))%700; /*获取随机数来指定下面指针的位*/
printf("\nPLEASE ENTER YOUR CHOICE:");
choice=getch();
clrscr(); /*清屏*/
switch(choice) /*选择不同打开文件来打不同的字符*/
{
case '1': in=fopen("english.txt","r");
break;
case '2': in=fopen("others.txt","r");
break;
case '3': in=fopen("type all.txt","r");
break;
case '4': exit(1);break;
}
fseek(in,t*1l,0);
fgets(string,101,in);
printf("\n");
printf("********************************************************************");
for(i=0;i<100;i++)
putchar(string[i]);
printf("\n");
printf("********************************************************************");
fclose(in);
printf("LET'S BEGIN TYPING,OK?[Y/N]");
printf("\n");
ch=getch();
if(ch=='n'||ch=='N') /*判定是否练习打字*/
exit(0);
else if(ch=='y'||ch=='Y')
Typing();
}
void Typing(void) /*设置打字(包括计算其他结果)函数*/
{
int i,j,Right_char=0,Wrong_char=0,Sum_char=0;
float Speed,Timeused,Right_rate;
char absorb_char,ch_1,ch_2,ch_3;
time_t star,stop; /*定义time变量,获取系统时间并显示在屏幕上*/
time(&star);
printf("\n");
printf("time begin:%s",ctime(&star));
i=0;
absorb_char=getchar(); /*接受键盘输入的字符并在下面的while语句判定正 错和计算结果*/
while(absorb_char!='\n'&&i<100)
{
if(absorb_char==string[i])
{
Right_char++;
Sum_char++;
}
else
{
Wrong_char++;
Sum_char++;
}
i++;
absorb_char=getchar();
}
time(&stop);
Timeused=difftime(stop,star); /*利用difftime()函数输出所用时间*/
Right_rate=(float)Right_char/(float)Sum_char*100;
Speed=(Sum_char/Timeused)*60;
printf("time end:%s",ctime(&stop)); /*下面显示分数*/
printf("****#################~~~~~~~~~~~~~YOUR SCORE!!~~~~~~~~~~~~~~################****");
printf(" 1: TOTAL TIME USED:%.3f\n",Timeused);
printf(" 2: YOU HAVE TYPED:%d\n",Sum_char);
printf(" 3: Typing Right_Characters are:%d\n",Right_char);
printf(" 4: Typing Wrong_Characters are:%d\n",Wrong_char);
printf(" 5: YOUR TYPING SPEED IS :%.2f\\min\n",Speed);
printf(" 6: YOUR TYPING RIGHT_RATE IS :%.2f%%\n",Right_rate);
printf("****#################~~~~~~~~~~~~~YOUR SCORE!!~~~~~~~~~~~~~~################****");
if(Speed<=50||Right_rate<=80) /*询问用户是否重来一遍*/
{
printf(" NOT VERY GOOD!\n TRY IT AGAIN,OK?[Y/N]\n");
ch_2=getch();
if(ch_2=='n'||ch_2=='N') exit(0);
else if(ch_2=='y'||ch_2=='Y')
{
clrscr();
DEMO(); /*分别调用函数重来一遍*/
Get_character();
Typing();
}
exit(0);
}
else printf(" WELL DONE!!\n ONE MORE TIME?[Y/N]\n"); /*询问用户是否重来一遍*/
ch_3=getch();
if(ch_3=='n'||ch_3=='N') exit(0);
else if(ch_3=='y'||ch_3=='Y')
{
clrscr();
DEMO(); /*分别调用函数重来一遍*/
Get_character();
Typing();
}
exit(0);
}
main(void) /*主函数包含四个要调用的函数*/
{
Background();
DEMO();
Get_character();
Typing();
}
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |