事情是这样的:

鄙人的学校开展了一个校内的知识竞赛,赛事主办方提供给了我们一个题库进行练习(但是是Word版本的),题目量不多(单选题 “ 也就 ” 140多道题目)。

当然,我们完全可以对着那个枯燥无味的Word文档进行死记硬背,但是,身为一名计算机专业的学生,这样做显然不符合我们 “ 专 业 风 格 ”,特别是对于我这种一面对长篇文字就倍感倦意的人来说,能有一个 刷题程序 来帮助我提高记忆的效果是再好不过的了。

激动过后冷静想了想,作为一名大一的学生,觉得以我目前所学的知识,是完全有可能驾驭得住我的想法的!!!!


具体的实现: 

       需求分析:

由于我的需求非常的简单呐,仅仅是需要创建一个单项选择题库,实现类似于背英文单词的APP那样的一个小程序,程序给我提供问题,我提供选项,程序判断我的对错即可

        二、题目分析:

        题 目 例 子:

       从图中我们不难看出,一道题目大刀阔斧的可以分成三个部分:题干、选项、答案;

那么,事情变简单了,我们把一道题目概括为一个结构体,结构体内部包含以上三种内容,分别用字符串、字符串、字符进行概括;  如下: 

struct ques{char question[300];       //保存问题char select[5][100];      //二维数组用来保存选项char temp[20];            //临时读取 “答案:A” 这样的字符串char answer;              //获取临时读取的字符串中的答案“A”
}a[150];

解 释 一 下:        

Q1:为什么数组要开这么大?

因为据我所知,中文字符需要占据两个字符的位置,因此如果有15个汉字,就必须至少开辟一个str[30]这样一个空间;

Q1:a[150]是什么意思?

如上所述,结构体数组a中每一个元素代表了一个问题的全部概括。

        三、具体的实现:

有了以上的分析,程序设计起来就十分的方便了。

第一步、把Word文档中的题库复制到一个txt文件中

   

第二步、读取txt文件中的内容存储到事先定义好的结构体数组中

第三步、将结构体数组中的问题一个一个输出并根据我们的输入进行判断我们的回答是                        否正确;

以下是完整的代码以及效果

(别走开后面还有总结部分:精华!!!):

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
struct ques{char question[300];char select[5][100];char temp[20];char answer;
}a[150];
int main(){int randnum,count=0;int pan[150]={0};srand((unsigned)time(NULL));randnum=rand()%138+1;FILE *fp = NULL;fp=fopen("C:\\Users\\ryq\\Desktop\\shuati\\test22.txt","r+");if(fp==NULL){printf("WRONG!!!!!!!");return 0;}for(int i=1;i<=138;i++){     //第二步、读取txt文件中的内容存储到事先定义好的结构体数组中fscanf(fp,"%s",a[i].question);for(int j=1;j<=4;j++){fscanf(fp,"%s",a[i].select[j]);}fscanf(fp,"%s",a[i].temp);a[i].answer=a[i].temp[6];}while(1){                    //第三步、循环输出问题并进行判断char an,flag;randnum=rand()%138+1;if(pan[randnum]==1)       //这里的判断条件是记录每道题目出现的次数,//博主是设置一道题目只出现一次,如果想出现两次//更改为pan[randnum]>=2即可continue;pan[randnum]++;printf("\n\t%s\n\n",a[randnum].question);for(int j=1;j<=4;j++){printf("\t%s\n\n",a[randnum].select[j]);}scanf("%c",&an);if(an==a[randnum].answer)printf("Y E S\n");else{printf("W R O N G\n");printf("正确答案是:%C\n",a[randnum].answer); }count++;                               //count的作用是记录已经做了道题目printf("你已经做了 %d 道题,还要继续吗?/Enter\n",count);getchar();scanf("%c",&flag);if(flag!='\n')break;}return 0;
}

运行截图:

总结部分 :     

        1、代码中用了随机数进行题目的随机输出题目;

        2、增加了一些细节:比如题目出现的次数、已经做的题目数量等等;

        3、使用\t\n等转义字符进行了简单的排版

个人感触:这次敲代码的感觉明显就和以往不一样了,以前是为了做题目而敲代码,但这次                    感觉到的是所学到的知识真真切切得方便了我的生活。

[C语言]如何使用C语言创建题库,进行高效刷题?相关推荐

  1. 免费刷大学粗c语言题库的软件,51CTO题库-可以免费刷题的小程序

    51CTO题库介绍 是14年IT学习网站51CTO旗下的免费刷题小程序,是一款致力于让你快速通过考试.获取证书的免费刷题工具. 微信小程序刷题:让你利用碎片化时间学习,随时随地想刷就刷,时刻为你通过考 ...

  2. 洛谷c语言题库,洛谷刷题总结

    今天下午在洛谷刷了一下午的题,话说这个题目确实有意思,做起来思路也挺清晰,但是就是提交的时候总是出问题,这个就很难受. 虽然提交不能AC,但是在刷题的时候也能从中学到很多东西,今下午了解了几个重要的点 ...

  3. 算法题库与在线刷题网站推荐

    1.http://www.lintcode.com/zh-cn/problem/ 有面试真题,阶梯训练,比赛等模块 2.https://leetcode.com/ 很火的算法题库,在线答题,讨论 知乎 ...

  4. 软件测试面试题及答案 这个在线题库的多种刷题模式能帮你快速通关

    随着企业对软件测试岗位的重视,越来越多的人都开始进入到软件测试的行业,但由于进入到软件测试岗位的最后一道门槛是"面试",很多人都担心回答不出来面试官的问题,而错过步入这个企业的机会 ...

  5. 牛客网数据开发题库_数据库刷题—牛客网(21-30)

    21.查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序 CREATE TABLE `employees` ( `emp_no` ...

  6. 中国电信开发者星球c语言题库,中国电信笔试真题

    [实例简介] 该资源适用于电信行业校园招聘考试的学生做的参考题目 [实例截图] [核心代码] 2bc5b787-578a-4154-bb74-406bc3e17881 └── 017-中国电信笔试资料 ...

  7. 【数据结构 C语言版】第五篇 队列(看完刷题无敌)

    [数据结构 C语言版]第五篇 队列(看完刷题无敌) 写在前面 更新情况记录: 最近更新时间 更新次数 2022/10/19 1 参考博客与书籍以及链接: (非常感谢这些博主们的文章,将我的一些疑问得到 ...

  8. c语言作业十全十美,计算机二级c语言题库 魅力汉语言大赛题库.doc

    计算机二级c语言题库 魅力汉语言大赛题库 一快速判断 1) 2) 3) 4) 5) 6) 7) 8) 9) 1秦始皇统一中国之初,命李斯将"史籀大篆"略加省改,作为规范文字.这种规 ...

  9. 微型计算机是一种将CPU,Bwnhlq计算机一级考试选择题题库之微型计算机基础题及答案(XX年最新版)1.doc...

    Bwnhlq计算机一级考试选择题题库之微型计算机基础题及答案(XX年最新版)1 生活需要游戏,但不能游戏人生:生活需要歌舞,但不需醉生梦死:生活需要艺术,但不能投机取巧:生活需要勇气,但不能鲁莽蛮干: ...

  10. 计算机应用基础职业教育题库,《职业教育题库大全.doc

    <职业教育题库大全 职业教育题库大全 内容包括:机械,电子,电工,医药,护理,财经,法规,会计,计算机等等,资料十分全面,是教师出题的好帮手. 使用时只需要左手按住CTRL键,右手点击鼠标既可. ...

最新文章

  1. 拷贝构造函数的参数类型必须是引用
  2. wxWidgets的一些资源
  3. 一起学nRF51xx 8 -  Time
  4. DCMTK:DSRTree和DSRTreeNodeCursor类的测试程序
  5. jcg q8 固件_JCG学院开设了Java设计模式课程!
  6. 半年时间能学会php吗_4个月真的能学会PHP吗
  7. win10易升_微软Win10版本20H2正式版官方ISO镜像下载大全_windows10_Windows系列_操作系统...
  8. 基于cxf框架javaweb服务说明
  9. 布丰投针java实现,MATLAB模拟布丰投针实验
  10. python工作目录_python获取当前工作目录
  11. Android 六大布局之 LinearLayout( 线性布局)
  12. 相关性分析和假设检验
  13. 2020全球C++及系统软件技术大会议程
  14. mysql administrator教程_MYSQL administrator 使用
  15. 华为的芯片战略:别忘记,代号—SD502!
  16. 为任意屏幕尺寸构建 Android 界面
  17. 浏览淘宝网页背后所发生的事情
  18. python脚本名_python获取类名函数名、脚本路径
  19. [日推荐]『拉了吗』出门必备
  20. 漫谈机器学习经典算法—增强学习与马尔科夫决策过程

热门文章

  1. 掘金、聚宽和米筐各量化平台优缺点
  2. B-树----(多插平衡树)
  3. Linux系统VCS相关小白操作--lab0
  4. matlab中surf怎么改变颜色_美术绘画中怎么让颜色更好看?规避上色大坑技巧
  5. 一个汉字几个字符?几个字节?字符与字节关系傻傻分不清
  6. 一个特别好的学习软件和学习方法推荐-Anki
  7. su自带模型库怎么打开_解决SketchUp 2014无法打开3D模型库和插件商店的方法
  8. 理解移动语义(三)--万能引用
  9. 请基于Keil uVision5软件写出led流水灯代码
  10. 迪文T5L 串口4 crc-modbus实现