| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5214 人关注过本帖
标题:刚学c语言,老师让编打字游戏,无奈啊。。。。。。。。
只看楼主 加入收藏
zcfyxw
Rank: 1
等 级:新手上路
帖 子:68
专家分:7
注 册:2012-12-26
收藏
得分:0 
回复 80楼 TonyDeng
哦,那我百度一下fgetc的用法去
2013-01-02 15:47
zcfyxw
Rank: 1
等 级:新手上路
帖 子:68
专家分:7
注 册:2012-12-26
收藏
得分:0 
回复 80楼 TonyDeng
小哥,我又想到个问题,如果我突然打着字想退出,那不是按esc退出吗,但是这个怎么实现啊,esc键不是普通的字符啊???
2013-01-02 20:18
zcfyxw
Rank: 1
等 级:新手上路
帖 子:68
专家分:7
注 册:2012-12-26
收藏
得分:0 
#include<stdio.h>                         /*库函数*/
#include<time.h>                          /*时间函数*/
long t1,t2;
int n;
main()                                    /*主函数*/
{
    int word();
    int english();
    int Class();
    int c1();
    int c2();
    int c3();
    int n;
    textcolor(0);                         /*文本色*/
    textbackground(1);                    /*背景色*/
    clrscr();
    gotoxy(28,8);
    cprintf("dan zi lian xi an 1");
    printf("\n");
    gotoxy(28,10);
    cprintf("ying wen lian xi an 2");
    printf("\n");
    gotoxy(28,12);
    cprintf("wen zhang lian xi an 3");
    printf("\n");
    scanf("%d",&n);
    switch(n)                              /*菜单选择*/
    {
    case 1:{clrscr();word();}break;
    case 2:{clrscr();english();}break;
    case 3:{clrscr();Class();};break;
     }
getch();
}                                           /*单字打字练习函数*/
int word()
{
    char a[20],b[20];
    int i;                                  /*开始时间*/
    t1=time(NULL);                          /*初始化随机数*/
    srand(time(NULL));
    for(i=0;i<20;i++)
        {
        a[i]=97+rand()%26;                  /*随机生成字母*/
        printf("%c",a[i]);
        b[i]=getch();
        if(a[i]==b[i])
        {
            n++;
            printf("%c\n",b[i]);
        }
        else   
        {
            textcolor(4);
            cprintf("%c",b[i]);
            printf("\n");
        }
        }
        t2=time(NULL);                       /*结束时间*/
        printf("mei fen zhong da zi%d",60*n/((int) (t2-t1))); /*计算速度*/
}
int english()                                /*英文练习*/
{
    char a[10][30],b[10][30];
    int i,j,m;
    t1=time(NULL);
    srand(time(NULL));
    for(j=0,i=1;j<10;j++,i+=2,gotoxy(1,i))
        {
             for(m=0;m<30;m++) {
             a[j][m]=97+rand()%26;
             cprintf("%c",a[j][m]);}
         }
 
    gotoxy(1,2);
    for(j=0,i=1;j<10;j++,i+=2,gotoxy(1,i+1))
        for(m=0;m<30;m++)
        {
             if((b[j][m]=getch())=='\n')      /*判断是否换行*/
             {
                fflush(stdin);break;
             }
             if(b[j][m]==a[j][m])
                 {
                    n++;
                    printf("%c",b[j][m]);
                 }
             else
             {
                textcolor(4);
                cprintf("%c",b[j][m]);
             }
        }
 
    t2=time(NULL);
    printf("mei fen zhong da zi %d ge .",60*n/((int)(t2-t1)));
}

int Class()                                         /*文章练习函数*/
{
    int n;                                          /*文章选择菜单*/
    printf("1 A boy\n");
    printf("2 lal\n");
    printf("3 big head\n");
    printf("qing xuan ze 1~3\n");
    scanf("%d",&n);
    switch(n)
    {
        case 1:{clrscr();c1();}break;
        case 2:{clrscr();c2();}break;
        case 3:{clrscr();c3();}break;
    }
}

int c1()                                            /*文章1函数*/
{
    FILE *fp;
    int a[200],b[200],i=0;
    fp=fopen("A BOY.txt","r");                      /*调用文件*/
    while((a[i]=fgetc(fp))!=EOF)                    /*读取文件信息*/
    {

        printf("%c",a[i]);
         i++;
     }
     gotoxy(1,1);
     t1=time(NULL);
     for(i=0;i<200;i++)
        {
            b[i]=getch();
            if(a[i]==b[i])
                {
                    textcolor(1);                    /*用蓝色输出正确结果*/
                    cprintf("%c",b[i]);
                }
            else
            {
                textcolor(4);                        /*用红色输出错误结果*/
                cprintf("%c",a[i]);
            }
         }
     fclose(fp);
     t2=time(NULL);
     printf("mei fen zhong da zi%d",60*n/((int) (t2-t1)));
}

int c2()                                             /*文章2函数*/
{
    FILE *fp;
    int a[500],b[500],i=0;
    fp=fopen("lal.txt","r");
    while((a[i]=fgetc(fp))!=EOF)
    {

        printf("%c",a[i]);
         i++;
     }
     gotoxy(1,1);
     t1=time(NULL);
     for(i=0;i<500;i++)
        {
            b[i]=getch();
            if(a[i]==b[i])
                {
                    textcolor(1);
                    cprintf("%c",b[i]);
                }
            else
            {
                textcolor(4);
                cprintf("%c",a[i]);
            }
         }
     fclose(fp);
     t2=time(NULL);
     printf("mei fen zhong da zi%d",60*n/((int) (t2-t1)));
}

int c3()                                           /*文章3函数*/
{
    FILE *fp;
    int a[300],b[300],i=0;
    fp=fopen("big head.txt","r");
    while((a[i]=fgetc(fp))!=EOF)
    {

        printf("%c",a[i]);
         i++;
     }
     gotoxy(1,1);
     t1=time(NULL);
     for(i=0;i<300;i++)
        {
            b[i]=getch();
            if(a[i]==b[i])
                {
                    textcolor(1);
                    cprintf("%c",b[i]);
                }
            else
            {
                textcolor(4);
                cprintf("%c",a[i]);
            }
         }
     fclose(fp);
     t2=time(NULL);
     printf("mei fen zhong da zi%d",60*n/((int) (t2-t1)));
}


在两位大哥的帮助下,我终于实现我的课题,哈哈,可惜还有个问题,怎么按esc键退出,并且在打字的时候按回车键不让它换行
2013-01-02 20:50
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<time.h>
#define Key_Esc 0x1b 
long t1,t2;
int n;
main()
{
    int word();
    int english();
    int Class();
    int c1();
    int c2();
    int c3();
    int n;
    textcolor(0);
    textbackground(1);
    clrscr();
    gotoxy(28,8);
    cprintf("dan zi lian xi an 1");
    printf("\n");
    gotoxy(28,10);
    cprintf("ying wen lian xi an 2");
    printf("\n");
    gotoxy(28,12);
    cprintf("wen zhang lian xi an 3");
    printf("\n");
    scanf("%d",&n);
    switch(n)
    {  case  Key_Esc:return 0;
    case 1:{clrscr();word();}break;
    case 2:{clrscr();english();}break;
    case 3:{clrscr();Class();};break;
     }
getch();
}
int word()
{
    char a[20],b[20];
    int i;
    t1=time(NULL);
    srand(time(NULL));
    for(i=0;i<20;i++)
        {
        a[i]=97+rand()%26;
        printf("%c",a[i]);
        b[i]=getch();
        if(b[i]==Key_Esc)return 0;
        if(a[i]==b[i])
        {
            n++;
            printf("%c\n",b[i]);
        }
        else   
        {
            textcolor(4);
            cprintf("%c",b[i]);
            printf("\n");
        }
        }
        t2=time(NULL);
        printf("mei fen zhong da zi%d",60*n/((int) (t2-t1)));
}
int english()
{
    char a[10][30],b[10][30];
    int i,j,m;
    t1=time(NULL);
    srand(time(NULL));
    for(j=0,i=1;j<10;j++,i+=2,gotoxy(1,i))
        {
             for(m=0;m<30;m++) {
             a[j][m]=97+rand()%26;
             cprintf("%c",a[j][m]);}
         }

    gotoxy(1,2);
    for(j=0,i=1;j<10;j++,i+=2,gotoxy(1,i+1))
        for(m=0;m<30;m++)
        {
             if((b[j][m]=getch())=='\n')
                          {
                fflush(stdin);break;
             }
             else if(b[j][m]==Key_Esc) return 0;
             if(b[j][m]==a[j][m])
                 {
                    n++;
                    printf("%c",b[j][m]);
                 }
             else
             {
                textcolor(4);
                cprintf("%c",b[j][m]);
             }
        }

    t2=time(NULL);
    printf("mei fen zhong da zi %d ge .",60*n/((int)(t2-t1)));
}

int Class()
{
    int n;
    printf("1 A boy\n");
    printf("2 lal\n");
    printf("3 big head\n");
    printf("qing xuan ze 1~3\n");
    scanf("%d",&n);
    switch(n)
    {   case  Key_Esc:return 0;
        case 1:{clrscr();c1();}break;
        case 2:{clrscr();c2();}break;
        case 3:{clrscr();c3();}break;
    }
}

int c1()
{
    FILE *fp;
    int a[200],b[200],i=0;
    fp=fopen("A BOY.txt","r");
    while((a[i]=fgetc(fp))!=EOF)
    {

        printf("%c",a[i]);
         i++;
     }
     gotoxy(1,1);
     t1=time(NULL);
     for(i=0;i<200;i++)
        {
            b[i]=getch();
            if(b[i]==Key_Esc)return 0;
            if(a[i]==b[i])
                {
                    textcolor(1);
                    cprintf("%c",b[i]);
                }
            else
            {
                textcolor(4);
                cprintf("%c",a[i]);
            }
         }
     fclose(fp);
     t2=time(NULL);
     printf("mei fen zhong da zi%d",60*n/((int) (t2-t1)));
}

int c2()
{
    FILE *fp;
    int a[500],b[500],i=0;
    fp=fopen("lal.txt","r");
    while((a[i]=fgetc(fp))!=EOF)
    {

        printf("%c",a[i]);
         i++;
     }
     gotoxy(1,1);
     t1=time(NULL);
     for(i=0;i<500;i++)
        {
            b[i]=getch();
            if(b[i]==Key_Esc)return 0;
            if(a[i]==b[i])
                {
                    textcolor(1);
                    cprintf("%c",b[i]);
                }
            else
            {
                textcolor(4);
                cprintf("%c",a[i]);
            }
         }
     fclose(fp);
     t2=time(NULL);
     printf("mei fen zhong da zi%d",60*n/((int) (t2-t1)));
}

int c3()
{
    FILE *fp;
    int a[300],b[300],i=0;
    fp=fopen("big head.txt","r");
    while((a[i]=fgetc(fp))!=EOF)
    {

        printf("%c",a[i]);
         i++;
     }
     gotoxy(1,1);
     t1=time(NULL);
     for(i=0;i<300;i++)
        {
            b[i]=getch();
             if(b[i]==Key_Esc)return 0;
            if(a[i]==b[i])
                {
                    textcolor(1);
                    cprintf("%c",b[i]);
                }
            else
            {
                textcolor(4);
                cprintf("%c",a[i]);
            }
         }
     fclose(fp);
     t2=time(NULL);
     printf("mei fen zhong da zi%d",60*n/((int) (t2-t1)));
}
貌似实现了按ESC退出,就是输入后先扫描下键值,是ESC就退出

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-02 21:11
晴娣
Rank: 2
等 级:论坛游民
帖 子:21
专家分:38
注 册:2010-12-29
收藏
得分:0 
进来学了不少东西啊
同时也发现自己的无知
2013-01-02 21:14
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
程序代码:
int get_key()  
{  
    union REGS rg;  
    rg.h.ah=0;  
    int86(0x16,&rg,&rg);  
    return rg.h.ah;  
}  
其实我以前是用中断做的ESC退出,像上面这样。
但是这样会面临许多问题,所以改成了代码中那样,我只是测试了两次,不知道会不会出现别的情况,楼主多试试。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-02 21:14
zcfyxw
Rank: 1
等 级:新手上路
帖 子:68
专家分:7
注 册:2012-12-26
收藏
得分:0 
回复 86楼 yaobao
不大是我想像中的啊,我想的是可以直接停止,然后得到结果,就像跳出循环一样,或者在子菜单中返回,在主菜单中退出
2013-01-02 23:04
zcfyxw
Rank: 1
等 级:新手上路
帖 子:68
专家分:7
注 册:2012-12-26
收藏
得分:0 
回复 85楼 晴娣
不要这样说嘛,我本来也是什么都不知道,还是在两位大神的帮助下学了很多
2013-01-02 23:05
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
那就用goto

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-02 23:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
Esc是普通的按键,键值是0x1B。

授人以渔,不授人以鱼。
2013-01-02 23:11
快速回复:刚学c语言,老师让编打字游戏,无奈啊。。。。。。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.123671 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved