Chapter5记忆力训练

//5-1单纯记忆训练,记忆4位数
#include<time.h>
#include<stdio.h>
#include<stdlib.h>

#define MAX_STAGE 10    //关卡数

int sleep(unsigned long x){
    clock_t c1 = clock(), c2;
    do{
        if((c2 = clock()) == (clock_t)-1)
            return 0;
    }while(1000.0 * (c2 - c1) / CLOCKS_PER_SEC < x);
    return 1;
}
int main(){
    int stage;
    int success = 0;
    clock_t start, end;
    printf("来记忆一个4位数吧。\n");

    start = clock();
    for(stage = 0; stage < MAX_STAGE; stage++){
        int x;        //已读取的值
        int no = rand() % 9000 + 1000;     //需要记忆的数

        printf("%d", no);
        fflush(stdout);
        sleep(500);    //问题只提示0.5秒

        printf("\r请输入:");
        fflush(stdout);
        scanf("%d", &x);

        if(x != no)
            printf("\a回答错误。\n");
        else{
            printf("回答正确。\n");
            success++;
        }
    }
    end = clock();

    printf("%d次中答对了%d次。\n", MAX_STAGE, success);
    printf("用时%.1f秒。\n", (double)(end - start) / CLOCKS_PER_SEC);
    return 0;
}
//5-2单纯记忆训练,玩家自定义数值位数
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_STAGE 10    //关卡数
#define LEVEL_MIN 3        //最低等级(位数)
#define LEVEL_MAX 20    //最高等级(位数)

int sleep(unsigned long x){
    clock_t c1 = clock(), c2;
    do{
        if((c2 = clock()) == (clock_t)-1)
            return 0;
    }while(1000.0 * (c2 - c1) / CLOCKS_PER_SEC < x);
    return 1;
}
int main(){
    int i, stage;
    int level;
    int success = 0;
    clock_t start, end;

    srand(time(NULL));
    printf("数值记忆训练\n");
    do{
        printf("要挑战的等级(%d~%d):", LEVEL_MIN, LEVEL_MAX);
        scanf("%d", &level);
    }while(level < LEVEL_MIN || level > LEVEL_MAX);

    printf("来记忆一个%d位数吧。\n", level);
    start = clock();
    for(stage = 0; stage < MAX_STAGE; stage++){
        char no[LEVEL_MAX + 1];    //需要记忆的数字串
        char x[LEVEL_MIN * 2];    //已读取的数字串

        //因为rand()生成的随机数不会超过5位及以上,所以用字符串来处理
        no[0] = ‘1‘ + rand() % 9;        //开头是1-9
        for(i = 1; i < level; i++)
            no[i] = ‘0‘ + rand() % 10;    //之后是0-9
        no[level] = ‘\0‘;

        printf("%s", no);
        fflush(stdout);
        sleep(125 * level);        //问题只提示125 * level 毫秒

        printf("\r%*s\r请输入:", level, "");
        scanf("%s", x);

        if(strcmp(no, x) != 0)
            printf("\a回答错误。\n");
        else{
            printf("回答正确。\n");
            success++;
        }
    }
    end = clock();

    printf("%d次中答对了%d次。\n", MAX_STAGE, success);
    printf("用时%.1f秒。\n", (double)(end - start) / CLOCKS_PER_SEC);
    return 0;
}
//5-3单纯记忆训练,大写字母
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_STAGE 10    //关卡数
#define LEVEL_MIN 3        //最低等级(位数)
#define LEVEL_MAX 20    //最高等级(位数)

int sleep(unsigned long x){
    clock_t c1 = clock(), c2;
    do{
        if((c2 = clock()) == (clock_t)-1)
            return 0;
    }while(1000.0 * (c2 - c1) / CLOCKS_PER_SEC < x);
    return 1;
}
int main(){
    int i, stage;
    int level;
    int success = 0;
    clock_t start, end;
    const char ltr[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    srand(time(NULL));
    printf("英文字母记忆训练\n");
    do{
        printf("要挑战的等级(%d~%d):", LEVEL_MIN, LEVEL_MAX);
        scanf("%d", &level);
    }while(level < LEVEL_MIN || level > LEVEL_MAX);

    printf("来记忆%d个英文字母吧。\n", level);

    start = clock();
    for(stage = 0; stage < MAX_STAGE; stage++){
        char mstr[LEVEL_MAX + 1];        //需要记忆的一串英文字母
        char x[LEVEL_MAX * 2];            //读取到的英文字母

        for(i = 0; i < level; i++)        //生成作为题目的字符串
            mstr[i] = ltr[rand() % strlen(ltr)];
        mstr[level] = ‘\0‘;

        printf("%s", mstr);
        fflush(stdout);
        sleep(125 * level);

        printf("\r%*s\r请输入:", level, "");
        fflush(stdout);
        scanf("%s", x);

        if(strcmp(x, mstr) != 0)
            printf("\a回答错误。\n");
        else{
            printf("回答正确。\n");
            success++;
        }
    }
    end = clock();

    printf("%d次中答对了%d次。\n", MAX_STAGE, success);
    printf("用时%.1f秒。\n", (double)(end - start) / CLOCKS_PER_SEC);
    return 0;
}
//5-4单纯记忆训练,大写和小写字母
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_STAGE 10    //关卡数
#define LEVEL_MIN 3        //最低等级(位数)
#define LEVEL_MAX 20    //最高等级(位数)

int sleep(unsigned long x){
    clock_t c1 = clock(), c2;
    do{
        if((c2 = clock()) == (clock_t)-1)
            return 0;
    }while(1000.0 * (c2 - c1) / CLOCKS_PER_SEC < x);
    return 1;
}
int main(){
    int i, stage;
    int level;
    int success = 0;
    clock_t start, end;
    const char ltr[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                       "abcdefghijklmnopqrstuvwxyz";    //仅仅此处和5-3不同

    srand(time(NULL));
    printf("英文字母记忆训练\n");
    do{
        printf("要挑战的等级(%d~%d):", LEVEL_MIN, LEVEL_MAX);
        scanf("%d", &level);
    }while(level < LEVEL_MIN || level > LEVEL_MAX);

    printf("来记忆%d个英文字母吧。\n", level);

    start = clock();
    for(stage = 0; stage < MAX_STAGE; stage++){
        char mstr[LEVEL_MAX + 1];        //需要记忆的一串英文字母
        char x[LEVEL_MAX * 2];            //读取到的英文字母

        for(i = 0; i < level; i++)        //生成作为题目的字符串
            mstr[i] = ltr[rand() % strlen(ltr)];
        mstr[level] = ‘\0‘;

        printf("%s", mstr);
        fflush(stdout);
        sleep(125 * level);

        printf("\r%*s\r请输入:", level, "");
        fflush(stdout);
        scanf("%s", x);

        if(strcmp(x, mstr) != 0)
            printf("\a回答错误。\n");
        else{
            printf("回答正确。\n");
            success++;
        }
    }
    end = clock();

    printf("%d次中答对了%d次。\n", MAX_STAGE, success);
    printf("用时%.1f秒。\n", (double)(end - start) / CLOCKS_PER_SEC);
    return 0;
}
//5-5加一训练,记忆多个数值并输入这些数值加1后的值
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_STAGE 10    //关卡数
#define LEVEL_MIN 2        //最低等级(位数)
#define LEVEL_MAX 6    //最高等级(位数)

int sleep(unsigned long x){
    clock_t c1 = clock(), c2;
    do{
        if((c2 = clock()) == (clock_t)-1)
            return 0;
    }while(1000.0 * (c2 - c1) / CLOCKS_PER_SEC < x);
    return 1;
}
int main(){
    int i, stage;
    int level;
    int success = 0;
    int score[MAX_STAGE];    //所有关卡的答对数量
    clock_t start, end;

    srand(time(NULL));
    printf("加一训练开始\n");
    printf("来记忆2位的数值\n");
    printf("请输入原数值加1后的数值\n");
    do{
        printf("要挑战的等级(%d~%d):", LEVEL_MIN, LEVEL_MAX);
        scanf("%d", &level);
    }while(level < LEVEL_MIN || level > LEVEL_MAX);

    start = clock();
    for(stage = 0; stage < MAX_STAGE; stage++){
        int no[LEVEL_MAX];    //要记忆的数
        int x[LEVEL_MAX];    //已读取的值
        int seikai = 0;        //本关卡的答对数量

        printf("\n第%d关卡开始!!\n", stage + 1);
        for(i = 0; i < level; i++){        //生成level个两位数
            no[i] = rand() % 90 + 10;
            printf("%d ", no[i]);
        }
        fflush(stdout);
        sleep(300 * level);
        printf("\r%*s\r", 3 * level, "");
        fflush(stdout);

        for(i = 0; i < level; i++){        //读取答案
            printf("第%d个数:", i + 1);
            scanf("%d", &x[i]);
        }
        for(i = 0; i < level; i++){        //判断对错并显示
            if(x[i] != no[i] + 1)
                printf("X ");
            else {
                printf("O ");
                seikai++;
            }
        }
        putchar(‘\n‘);

        for(i = 0; i < level; i++)        //显示正确答案
            printf("%2d", no[i]);
        printf(" ... 答对了%d个。\n", seikai);
        score[stage] = seikai;
        success += seikai;
    }
    end = clock();

    printf("%d次中答对了%d次。\n", MAX_STAGE, success);
    for(stage = 0; stage < MAX_STAGE; stage++)
        printf("第%2d关卡:%d\n", stage + 1, score[stage]);
    printf("用时%.1f秒。\n", (double)(end - start) / CLOCKS_PER_SEC);
    return 0;
}
//5-9读取想要的数,把最后10个存入元素个数为10的数组
#include<stdio.h>
#define MAX 10
int main(){
    int i;
    int a[MAX];
    int cnt = 0;    //读取到的个数
    int retry;
    printf("请输入整数。\n");
    do{
        if(cnt >= MAX){
            for(i = 0; i < MAX - 1; i++)    //把a[1]到a[MAX - 1]往前移动一个位置
                a[i] = a[i + 1];
        }
        printf("第%d个整数:", cnt + 1);
        scanf("%d", &a[cnt < MAX ? cnt : MAX - 1]);
        cnt++;

        printf("是否继续?(Yes...1/No...0): ");
        scanf("%d", &retry);
    }while(retry == 1);

    if(cnt <= MAX)
        for(i = 0; i < cnt; i++)
            printf("第%2d个:%d\n", i + 1, a[i]);
    else
        for(i = 0; i < MAX; i++)
            printf("第%2d个:%d\n", cnt - MAX + 1 + i, a[i]);
    return 0;
}
//5-10读取想要的数,把最后10个存入元素个数为10的数组,不移动元素
#include<stdio.h>
#define MAX 10
int main(){
    int i;
    int a[MAX];
    int cnt = 0;
    int retry;
    printf("请输入整数。\n");
    do{
        printf("第%d个整数:", cnt + 1);
        scanf("%d", &a[cnt++ % MAX]);

        printf("是否继续?(Yes...1/No...0): ");
        scanf("%d", &retry);
    }while(retry == 1);
    i = cnt - MAX;
    if(i < 0) i = 0;

    for(; i < cnt; i++)
        printf("第%2d个:%d\n", i + 1, a[i % MAX]);
    return 0;
}

原文地址:https://www.cnblogs.com/leosirius/p/8361879.html

时间: 2024-08-07 13:47:17

Chapter5记忆力训练的相关文章

记忆力训练

1. 在桌上摆三四件小物品,如瓶子.手机.书等,对每件物品进行追踪思考各两分钟,即在两分钟内思考某件物品的一系列有关内容. 例如思考瓶子时,想到各种各样的瓶子,想到各种瓶子的用途,想到瓶子时,想到各种各样的制造,造玻璃的矿石来源等.这时,控制自己不想别的物品.两分钟后,立即把注意力转移到第二件物品上.开始时,较难做到两分钟后的迅速转移,但如果每天练习10分钟,两周后情况就大有好转了. 例如思考手机时,想到手机是什么品牌的,目前市场上就有哪些类型的手机,他们为什么受到青睐,好处是什么? 然后手机里

提高记忆力

一.交替记忆 这是把不同性质的识记材料按时间分配.交替进行记忆的方法.长时间单纯识记一门学科知识的效果不好,因为具有相同性质的材料对脑神经的刺激过于单调,时间一长,大脑的相应区域负担过重,容易疲劳,将会由兴奋状态转为保护性抑制状态,表现为头晕脑胀,注意力不集中,这就不利于记忆.长时间单纯识记一门学科知识的效果不好,因为具有相同性质的材料对脑神经的刺激过于单调,时间一长,大脑的相应区域负担过重,容易疲劳,将会由兴奋状态转为保护性抑制状态,表现为头晕脑胀,注意力不集中,这就不利于记忆. 二.自测记忆

【培训版】《最强大脑记忆力训练教程》

备注: 该教程以培训为目的,适用于20~49岁人群观看, 内容讲解通俗易懂,快速带领大家认识到记忆法的奥妙之处. 每周一更新  教程以及资料下载地址: 链接: 在线视频<最强大脑记忆力训练教程> 课程内容 01.开启你过目不忘的能力,右脑图像脑 02.罗马记忆宫殿 03.数字代码表 04.记忆力训练,看两遍记住<太极拳七十五式> 05.SEM3 三维记忆矩阵   06.如何打造100万存储量的记忆宫殿? <最强大脑记忆力训练教程>教程简介: 很多人会很感兴趣作者的记忆力

读书笔记:《与爱因斯坦月球漫步》

读书笔记:<与爱因斯坦月球漫步> 买<与爱因斯坦月球漫步>这本书已经忘记了是谁的推荐了,已经记不住是什么时候加入到 我的GTD阅读清单的,在去北京出差时带上了这本书,前4章介绍了许多故事和记忆的原理,快速翻到第5章开始阅读,随着作者一起开始记忆的练习,相当神 奇,书中的15件风马牛不相及的物品,我竟然也能记下来,而且2周过后,这些东西仍然摆在我的记忆宫殿内,所以在北京自验收之后到书店又买了另外2本有关 记忆的书,我并不想成为疯狂的脑力运动员,只是想看看我是不是能够用这些方法记住一些

360资源 ---持续更新中

综合资源 创建时间: 2015-2-3 17:39 修改时间: 2015-2-16 21:17 来源: http://cnc.qzs.qq.com/qzone/newblog/v5/editor.html#bid=1413979545&opener=refererurl&refererurl=http%3A%2F%2Fb11.cnc.qzone.qq.com%2Fcgi-bin%2Fblognew%2Fblog_output_data%3Fuin%3D1218338644%26blogid

最后一周作业

1.当初你是如何做出选择计算机专业的决定的?经过一个学期,你的看法改变了么,为什么? 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 为什么? 当初选择计算机专业是由于个人喜欢物理,打算考研是跨考物理系.而计算机科学与技术这个专业的课程符合我对思维的锻炼.在报考前我查了一下这个专业的课程.物理系需要不错的数学思想,可以通过计算机算法等等诸多方式来培养.同时这个专业还有物理课程,其实物理只要打个基础,其他的主要是靠自学,这就相当于打开了物理世界的大门.也就是说,物理数学计算机三者结合的话,可以

学习漫谈

学习这个话题,似乎是亘古不变的.从我们呱呱坠地到长大成人似乎都处在学习的环境下.第一次用筷子,第一次骑自行车等等.这样一来,有些人必然认为这个话题似乎有点大了,因为我从来不认为学习仅仅是指学习科学文化知识.中国自古不是有一句老话吗?活到老学到老.这句话就很好的诠释了学习的含义.就连法国当代教育家雅克·德洛尔也认为当代人的终身教育应建立在学会认知.学会做事.学会生活.学会生存等四大基础上.由此可见学习在我们人生中的重要性.学习是重要的,那么在当下的互联网信息时代下,我们又该如何提高我们的学习效率和

编程开发必读书籍:每个Web开发人员都应该阅读的10本书[图]

编程开发必读书籍:每个Web开发人员都应该阅读的10本书[图]:当开发人员问我他们应该阅读哪些书籍的时候,我通常都是告诉他们:让你读的下去的书.许多开发人员会阅读其他人的代码,实际上你提升自己最好的途径就是阅读,你的读书效率越高,那么你在日常工作中的效率也会越高.本文我们将来讨论:每个Web开发人员都应该阅读的10本书:1.<与爱因斯坦月球漫步>为什么推荐一本记忆力训练相关的书籍呢?因为现在的绝大多数开发人员都没有想过要提高自己的记忆能力,结果全部依赖于移动设备,实际上,现如今的程序员很难在脱

一九计划

希望自己能尽力去做,争取完成其中的百分之九十以上,完成内容用删除线处理. 目前做到的用绿色处理,未做到用红色. 以下排序不分先后 认真读30篇感兴趣的paper,并作整理及适量批注. 写一个linux端备忘录(带计数器功能)并发布在github. 开创youtube频道并进行(转发|创作). 交一个好朋友. 去香港. 找实习. 实现博客的迁移,检测其安全性. 积极创作分享,包括一篇开源系统扫盲文,使csdn或博客园点击数翻四倍(可在个人网站实现此类任务). 雅思总分7,小分6.5:7 6.5 8