[attach]517[/attach] 后天就是我母亲的生日,我想送她一个礼物。她最大的希望就是想学电脑,可是却一直没有机会。我就想到以前学电脑的时候老师经常叫我们练习的一个打字程序。所以我编写了一个程序送给她,可是在〈正确率统计〉上面我搞得一塌糊涂,我是没眼去看啦,灌上来请大家帮忙~
#include <conio.h> #include <stdio.h> char s[80*25];
void wellcome() /*开始界面*/ { clrscr(); textmode(C40); gotoxy(10,10); cprintf("Well Come\n"); gotoxy(4,15); cprintf("This Program for my mother!"); getch(); }
int readwords(char addname) /*读取题目所在的文件*/ { int i=0; FILE *fp; char ch,basename[15]={"text.txt"},filename[20]; filename[0]=addname; strcat(filename,basename); if((fp=fopen(filename,"r"))==NULL) return(-1); while((ch=fgetc(fp))!=EOF) { s[i]=ch; i++; } fclose(fp); return(i); }
void output(int max) /*把读取出来的字符显示到单数行去*/ { int x,y,i=0; textmode(C80); textcolor(14); textbackground(1); for(y=1;y<=23;y+=2) for(x=1;x<=80;x++) { i++; gotoxy(x,y); cprintf("%c",s[i]); if(i==max) return; } return; }
int input(int max) /*用户输入,并判断对错*/ { int error=0,x,y,i=0; char ch; textmode(C80); textbackground(1); for(y=2;y<=24;y+=2) for(x=1;x<=80;x++) { i++; gotoxy(x,y); ch=getch(); if(ch==35) return(-1); if(ch!=s[i]) { ch='*'; error++; } cprintf("%c",ch); if(i==max) return(error); } } main() { int i,l,sign=0; char addname='A'; wellcome(); while(sign!=-1) { i=100; textmode(C80); textbackground(1); clrscr(); if((l=readwords(addname++))==-1) { printf("File load error!"); getch(); exit(0); } else output(l); printf("Error=%d\n",(i=(input(l)-1))); if(i==-2) { i=100; sign=-1; } if(sign!=-1) { printf("The right rate is : %d\%",i=((l-i)*100/l)); getch(); } if(i<90) sign=-1; } getch(); clrscr(); textmode(C40); gotoxy(6,10); if(i<90) printf("You lost! Best wish with you!"); else printf(" Good bye!"); getch(); }
在压缩包里面的文件请放在同一个文件夹当中,并且使用全屏幕执行程序。另外,当你练习的过程中想中途退出~请按Shitf+3。因为思路太乱,在算法肯定有不妥之处,请您指正~~谢谢
[em43][此贴子已经被作者于2004-07-29 13:19:18编辑过]