自动单选题批改程序C语言,标准单选题考试系统,又出问题了,求指教,怎么就串行了呢?...

2023-11-05

#include

#include//cls#include//toupper#include//time#include //malloctypedef struct

{

char question[200],A[100],B[100],C[100],D[100];

char key;

}Question;

void menu();

void remenu();

void answer();

void addquestion();

void readfile(Question* qs,int total);

void question1(Question* qs,int i);//输出问题(不输出答案);void question2(Question* qs,int i);//输出问题(带答案)int Total();

void menu()

{

int n;//记录序列号 system("cls");

printf("************************************************************************************************************************\n");

printf("* 单项选择题标准化考试系统 V2.4 *\n");

printf("* *\n");

printf("* ①抽取答题 *\n");

printf("* *\n");

printf("* ②试题录入 *\n");

printf("* *\n");

printf("* ③ 退出 *\n");

printf("************************************************************************************************************************\n");

do

{

printf("┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉\n");

printf("请输入正确的序列号:\n");

printf("┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉\n");

scanf("%d",&n);

printf("\n");

}

while(n<1||n>4);

switch(n)

{

case 1:

answer();

break;

case 2:

addquestion();

break;

case 3:

exit(0);

break;

dedault:

printf("错误\n");

}

}

void addquestion()

{

FILE* readf;

char ch;

system("cls");//清屏 printf("*****************************************************************************\n");

printf("试题录入 \n");

printf("*****************************************************************************\n") ;

readf=fopen("question.txt","a");//a为文件追加内容 if(!readf)

{

printf("无法打开文件,打开文件失败\n");

exit(1);

}

printf("请按照以下格式来录入问题、ABCD四个选项及正确答案,并以#结束\n");

printf("例;( )是当前所处历史方位的关键词。\n") ;

printf("新时代\n");

printf("新时期\n");

printf("新阶段\n");

printf("新征程\n");

printf("A\n");

ch=getchar();//读取第一个字符 while(ch!='#')

{

fputc(ch,readf);

ch=getchar();

}

fclose(readf);

remenu();

}

void answer()

{

int i,j,total,n;//i用于索引,j也用于索引同i一起实现生产不重复的随机数组的功能。total用来存储总题目数。n用来存储用户输入的抽取题目数目。 int *a;//生产整型指针,用于建立动态数组 Question *qs;//生成Question型指针,用于建立动态结构数组 int score=0;//用于记分 char an;//存储用户输入的答案

total=Total();//利用Total()函数将总题目数返回给total qs=(Question*)malloc(total*sizeof(Question));

readfile(qs,total);//读取题目

system("cls");

printf("************************************************************************************************************************\n");//美化界面 printf("抽取答题 \n");

printf("************************************************************************************************************************\n");

printf("当前题库题目总数:%d\n",total);

loop1:printf("请输入抽查的题目数量:"); //loop1充当前哨,防止用户输入的n>total scanf("%d",&n);

printf("正在加载...\n");

printf("………………………………………………………………………………………………………………………………………………………………\n");

if(n<=total)

{

//开始生成不重复的随机数组 a=(int*)malloc(n*sizeof(int));//分配空间生成动态数组 for(i=0;i

{

loop2:srand(time(NULL));//srand和rand一起使用,这条语句大家把它看作用rand之前的一个习惯用法(rand为随机数) a[i]=rand()%total; //保证随机数在total内(小于total)(total为总题数) for(j=i-1;j>=0;j--)

{

if(a[i]==a[j])

goto loop2;//如果新抽出的题目(a[i])与已抽出的题目(a[j])一样,跳到loop:后的语句重新抽取a[i]

}

}

}

else

{

printf("超过最大题数,最大题数为%d\n",total);//保证抽出的题目不重复且在系统支持范围内(题目数量不超出总题数) goto loop1;

}

for(i=0;i

question1(&qs[a[i]],i+1);

fflush(stdin);//清空键盘缓冲区 an=getchar();//读取用户输入的答案 while((int)an<65||((int)an>68&&(int)an<97)||(int)an>100)//用强制转换判断用户输入的是否为选项 {

printf("请输入A,B,C,D其中之一作为你的答案\n");

fflush(stdin);

an=getchar();//读取用户输入的答案

}

if((int)an>96&&(int)an<101)//若用户输入的是小写字母,让其转换为大写字母 an=toupper(an);//大小写转换 if(qs[a[i]].key==an)//批改

score+=1;//正确+1分 printf("正确\n\n");

if(an!=qs[a[i]].key)

printf("错误\n正确答案为%c\n",qs[a[i]].key);

}

printf("¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤\n");

printf("共%d题,您答对了%d道题\n",n,score);

printf("得分:%f\n",((float)score/n)*100);//评分 printf("¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤\n");

free(qs);//释放分配的内存空间 free(a);//同上 remenu();//返回菜单或退出//试题删除函数():用于删除题目。包含Total(),Readfile(),Putques2(),Remenu()函数}

void remenu()

{

int n;

do

{

printf("§返回主菜单§请输入①\n");

printf("§ 退出 §请输入②\n");

scanf("%d",&n);

}while(n<1||n>2);

if(n==1)

menu();

else

exit(0);

}

void readfile(Question* qs,int total)

{

int i=0;

char o;//用于读取回车符,防止题目信息读取错位 FILE* readf;

readf=fopen("question.txt","r");//仅打开 if(!readf)

{

printf("打开文件失败\n");

exit(1);

}

for(i=0;i

fscanf(readf,"%s%s%s%s%s%c%c",qs[i].question,qs[i].A,qs[i].B,qs[i].C,qs[i].D,&o,&qs[i].key);

fclose(readf);

}

//计算总题目数函数():功能入其名,利用几个空字符串读取文件内所有题目,读完一题total加一次1。int Total()

{

int total;//total用于存储总题目数 char question[200],A[100],B[100],C[100],D[100];//建立空字符串用于存储读的题目 char key;

char o;

FILE* readf;

readf=fopen("question.txt","r");

if(!readf)

{

printf("打开文件失败\n");

exit(1);

}

for(total=0;!feof(readf);total++)//每读完一个题目,总题目数+1 {

fscanf(readf,"%s%s%s%s%s%c%c",question,A,B,C,D,&o,&key);}

total-=1;

fclose(readf);//关闭文件 return total;//返回total的值并退出该函数}

//输出题目函数():用于题目的打印。一个打印出来无答案,一个有答案。分别用于抽取答题函数和试题删除函数。void question1(Question* qs,int i)//导入Question型指针,以及当前题目序号i{printf("(%d)",i);

printf("%s",qs->question);

printf("A%s\n",qs->A);

printf("B%s\n",qs->B);

printf("C%s\n",qs->C);

printf("D%s\n",qs->D);

}

void question2(Question* qs,int i)

{

printf("(%d)",i);

printf("%s",qs->question);

printf("A%s\n",qs->A);

printf("B%s\n",qs->B);

printf("C%s\n",qs->C);

printf("D%s\n",qs->D);

printf("答案:%s\n",qs->key);}

int main(void)

{

menu();

}

[local]1[/local]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动单选题批改程序C语言,标准单选题考试系统,又出问题了,求指教,怎么就串行了呢?... 的相关文章

  • LaWGPT基于中文法律知识的大语言模型_初步安装

    准备代码 创建环境 下载代码 git clone git github com pengxiao song LaWGPT git cd LaWGPT 创建环境 conda create n lawgpt python 3 10 y cond
  • 【高效办公】程序员专用云笔记推荐

    一 参考资料 推荐几款好用的云笔记软件 云 社区 腾讯云 Markdown基本语法 简书 Markdown菜鸟教程
  • webpack-serve 的使用

    webpack serve 官方已经不维护了 还请继续食用webpack dev server 基本情况 仓库地址 配合webpack4食用最佳 在webpack3及以前的版本会有帮助信息提示 因为热加载使用的是WebSockets 所以在
  • 基于Arduino的循迹小车搭建

    材料准备 我做的是双层的循迹小车 这个网上有套件可以直接购买 到了之后组装是比较简单的 如果有不会组装的去bilbil上找一下教程也是很方便的 https www bilibili com video BV1Pe4y197DN spm id
  • 工作流Activiti7整合SpringBoot使用

    前言 一个软件系统中具有工作流的功能 我们把它称为工作流系统 一个系统中工作流的功能是什么 就是对系统的业务流程进行自动化管理 所以工作流是建立在业务流程的基础上 所以一个软件的系统核心根本上还是系统的业务流程 工作流只是协助进行业务流程管
  • 8086的写总线周期

    http www2 zzu edu cn qwfw wjylcai list asp id 127 写总线周期用来完成对存储器或I O端口的一次写操作 1 T1状态 总线周期的第一个时钟周期主要用于输出存储器地址或I O地址 如果M IO
  • android 右边充满 左边自适应,RelativeLayout中的格局,自适应宽度布局

    RelativeLayout中的布局 自适应宽度布局 该图片中为android布局 总布局为 RelativeLayout AtLeft 为居左 android layout height wrap content android layo
  • mf253s移动版变全网通_中国电信发布5G全网通终端需求白皮书v2.0

    2019 11 07 10 56 2019年10月31日 中国5G正式商用 标志着5G发展已进入快车道 整个社会各行各业对5G热情高涨 业界纷纷增加5G投入 5G终端的发展进程必将加快 市场空间巨大 潜力无限 为更好地引导产业链 推动5G加
  • nuxt.js服务端渲染使用flexible.js和postcss-px2rem实现移动端自适应—淘宝弹性布局方案(750px设计稿)

    在用vue做服务端渲染的时候需要对移动端做适配所以要用到postcss 2rem插件 第一步 首先下载flexible js 可加载阿里的cdn文件 http g tbcdn cn mtb lib flexible 0 3 4 flexib
  • Error: Package: mysql-community-server-5.6.41-2.el7.x86_64 (mysql56-community) Requires:

    http www cnblogs com xiaoluo501395377 archive 2013 04 07 3003278 html MySQL登陆失败 ERROR 2002 HY000 Can t connect to local
  • JDK与Tomcat的安装及配置教程

    code ran 超级详细的JDK与Tomcat的安装及配置教程 1 JDK的安装与环境配置 首先我们需要去官网上下载JDK对应的版本 以我现在要下载的1 8为例 1 官网 JDK官网地址 具体操作如下 然后下载之后去下载路径下去安装即可
  • k8s v1.2 web界面——kubernetes-dashboard详解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 Kube dashboard介绍 dashboard功能 Kube dashboard是kube 1 2版本中新增的 具备与kubelet commandline类似的
  • LeetCode——049

    49 Group Anagrams My Submissions QuestionEditorial Solution Total Accepted 73397 Total Submissions 267525 Difficulty Med
  • 一些VR延迟优化方法

    VR中的 延迟 特指 Motion To Photon Latency 指的是从用户运动开始到相应画面显示到屏幕上所花的时间 这中间经过了大概这么几个步骤 传感器采集运动输入数据 采集到的数据进行过滤并通过线缆传输到主机 游戏引擎根据获取的
  • 红黑树学习

    红黑树的是一种特殊的二叉搜索树 有如下性质 性质1 节点是红色或黑色 性质2 根是黑色 性质3 每个叶节点是黑色的 性质4 每个红色节点的两个子节点都是黑色 从每个叶子到根的所有路径上不能有两个连续的红色节点 性质5 从任一节点到其每个叶子
  • 项目同时使用两个mysql驱动_SpringBoot配置双数据源(一个项目同时连接操作两台数据库)...

    本文章使用的是持久化框架为JPA 所以数据源也是基于JPA 采用的是SpringBoot2 SpringDataJPA MySQL 双数据源 一 双数据源的适用场景 1 主从库分离 数据库读写分离 2 数据迁移 3 系统版本升级 数据库升级
  • session失效时间设置

    session失效时间设置 一 java代码 request getSession setMaxInactiveInterval 1800 秒为单位 二 web xml
  • 璀璨光滑【牛客】【题意解析+BFS+贪心】

    题目链接 中文题意 表面平静 实则暗藏玄机 而打开本题的突破口 也确确实实就在于题目的描述 也就是说 这张图的边的数目是确定的 并且这是一张连通图 而且图上的个点每个点连接出去的边的数目都是条 因为每个数都刚好只与个数在二进制位上差1 那么
  • 算力单位详解

    TOPS TOPS是Tera Operations Per Second的缩写 1TOPS代表处理器每秒钟可进行一万亿次 10 12 操作 与此对应的还有GOPS Giga Operations Per Second MOPS Millio

随机推荐

  • YOLOv5发布第六个版本,支持一键适配OpenVINO/OpenCV DNN部署

    YOLOv5发布了第六个版本 其它我不说 什么是开源精神 不是写个程序扔github就叫开源 而是持续不断改进 精益求精 不断演化版本 增加最有商业价值的功能 YOLOv5做到了 看看最新版本都有哪些新功能让开发者心动 新特性 首次发布支持
  • 基于升序链表的定时器及其简单应用

    Linux网络编程笔记 定时器 基于升序链表的定时器 这其实就是一个结点为 class util timer public util timer prev NULL next NULL 构造函数 public time t expire 任
  • 红队隧道应用篇之Burpsuite设置上游代理访问内网(五)

    为何要设置上层代理 Burp Suite设置上游代理的主要原因是为了拦截和修改来自浏览器的请求 当您在使用Burp Suite进行Web应用程序安全测试时 您可能希望模拟攻击者发送恶意请求 以测试应用程序是否能够防御这些攻击 使用上游代理可
  • C++中erase的用法

    erase一共三种用法 1 erase pos n 删除从下标pos开始的n个字符 比如erase 0 1 就是删除第一个字符 2 erase position 删除postion处的一个字符 position是一个string类型的迭代器
  • 面经-hangzhou

    目录 上篇 一 基础篇 网络基础 TCP三次握手 HTTP协议 浏览器输入URL过程 操作系统基础 进程和线程的区别 操作系统内存管理 Java基础 面向对象三大特性 数据结构 设计模式与原则 面试题 构造方法 初始化块 This 重写和重
  • C# 获取FormData数据

    通常的方法是你创建一个 FormData 对象 然后你使用append方法来加入任何额外的key和他们的值 就像这样 var form new FormData form append myName Robert 然后你只需使用XMLHtt
  • dataframe 判断是否为空的解决方式,即判断是否为NAN

    利用pd read table 读出来的数据 如果存在空值的 补充为 1 若x是dataframe中emp length列里面的其中一个值 判断其是否为空用什么 x is None 没起作用 len x 0 提示float 没有len np
  • IPSec的配置实现实验报告

    IPSec的配置实现 一 实验目的 二 实验环境 三 实验原理 四 实验步骤及结果 五 实验总结 一 实验目的 1 在Windows中配置 内置或者专有 IPSec 2 通过抓包工具抓取建立IPSec的协商密钥过程 和建立之后的加密通信数据
  • 浏览器禁用ajax,禁用浏览器缓存Ajax请求

    java period lang period OutOfMemoryError colon Java heap space解决办法 进入到tomcat bin目录下 编辑catalina bat 在这个文件最前面加入一句 set JAVA
  • ue4场景没阴影_UE4建筑室内可视化解决漏光和提高阴影质量的方法

    https zhuanlan zhihu com p 114539616 把建筑室内模型导入到UE4场景中 默认的情况如图01 在这个场景中只使用了定向光源 Light Source 来照明 墙壁与地板之间有明显的漏光 阴影生硬不真实 我们
  • Qt的下载与安装说明(超全!)

    Qt的下载与安装说明 下载说明 一打开浏览器输入https www qt io 来到Qt的官网 点击Developers Get Started 下滑到这这里 点击here 选择我们的需要的版本点击 in the archive 这个网页打
  • ISBN码书籍信息查询

    小程序 有书乐享 第一版已正式上线 在做这个小程序的过程中 有个扫一扫功能 通过书籍的ISBN码扫描后进行书籍分享 而网上找到的方式 要不提供的接口很久 无法请求 要不就是收费 总之让人折腾 因此基于这种情况 基于现有的小程序实现功能提供接
  • 重磅报告

    过去5年 是中国互联网创新飞跃的五年 中国从具有先天人口优势的网络大国逐步迈向技术创新驱动的网络强国 我国互联网产业在5年里究竟发生了哪些变化 阿里研究院发布报告 创新飞跃的五年 10大关键词解读中国互联网 报告基于丰富的数据 以及鲜活的案
  • ArcGis10.2详细安装步骤

    目录 1 安装License Manager10 2 2 复制试用文件 3 安装ArcGis Desktop10 2中文版 4 更新本地许可 提供arcgis下载地址 暂时评论区留邮箱吧 下载之后会得到以下3个目录 按顺序进行操作或者安装
  • QT笔记- 队列信号槽绑定与自定义类型

    说明 使用Qt QueuedConnection队列绑定时 某些默认非队列绑定时可用的自定义类型此时会不可用 如自定义枚举类型 此错误Qt不会报错和提示 解决 在绑定前使用qRegisterMetaType
  • http、websocket、长连接、短连接(一)

    http websocket 长连接 短连接 一 http websocket 长连接 短连接 二 这一篇先讲一下http的长短连接的问题 1 HTTP协议与TCP IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接 HT
  • NetMonitor抓不到网卡

    在powershell 或Dos下输入命令 bcdedit set testsigning on 操作目的 打开系统的testSigning模式 使得非权威CA发放的签名可以使用
  • Type string trivially inferred from a string literal, remove type annotation (no-inferrable-types)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt TypeScript代码 private goY string www baidu com 会导致tslint报错 Type string trivially inferr
  • 华为OD机试 - 观看文艺汇演问题(Java)

    题目描述 为了庆祝中国共产党成立100周年 某公园将举行多场文艺表演 很多演出都是同时进行 一个人只能同时观看一场演出 且不能迟到早退 由于演出分布在不同的演出场地 所以连续观看的演出最少有15分钟的时间间隔 小明是一个狂热的文艺迷 想观看
  • 自动单选题批改程序C语言,标准单选题考试系统,又出问题了,求指教,怎么就串行了呢?...

    include include cls include toupper include time include malloctypedef struct char question 200 A 100 B 100 C 100 D 100