二柱子四则运算在线答题系统

一:要求:

  1.实现在线答题。

  2.答题结束后,可以判断对错。

  3.并将错题的结果保存起来。

二:设计思路:

1.利用第一次实习的随机出题代码进行出题,然后我们设计让用户进行答题,把用户的答案与题目的正确答案进行比较,然后与正确的答案不一样,我们则显示回答错误,假如和正确答案一致我们则显示回答正确,然后利用i对回答正确的题目进行统计,在最后进行显示,这样我们就编写出一个完整的在线答题判卷系统。

三:程序代码:

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

#include <conio.h>

#define N 10

typedef struct _ti {

int a, b;

int op;

int result;

int input;

int rw;

}ti;

ti timu[N];

int fen;

int flag;

int mulu()

{

int s;

while(1) {

printf("\t\t欢迎进入二柱子快乐答题系统\n\n");

printf("1)开始出题\t\t\t\t");

printf("2)我想答题\n");

printf("3)批改试卷\t\t\t\t");

printf("4)查阅试卷\n");

printf("请做出选择:");

scanf("%d", &s);

while(getchar() != ‘\n‘);

if(s < 1 || s > 5)

printf("选择有误!请重新输入.\n");

else

break;

}

return s;

}

void chuti()

{

int i, f;

printf("确认随机出%d道题吗?(y确认):", N);

if(getchar() != ‘y‘)

return;

for(i = 0, f = 1; i < N; f ? i++ : 0) {

timu[i].a = rand() % 100+1;

timu[i].b = rand() % 100+1;

timu[i].op = rand() % 4;

if(timu[i].b == 0 && timu[i].op == 3) {

f = 0;

continue;

}

else

f = 1;

switch(timu[i].op) {

case 0: timu[i].result = timu[i].a + timu[i].b;break;

case 1: timu[i].result = timu[i].a - timu[i].b;break;

case 2: timu[i].result = timu[i].a * timu[i].b;break;

case 3: timu[i].result = timu[i].a / timu[i].b;break;

}

}

printf("出题完毕!\n");

flag = 1;

}

void kaoshi()

{

int i, f, n;

char op[] = "+-*/";

if(!flag) {

printf("还未出题!\n");

return;

}

printf("确认开始练习最后一次出的题吗?(y确认):");

if(getchar() != ‘y‘)

return;

fen = 0;

for(i = 0, f = 1; i < N; f ? ++i : 0) {

printf("题目%d: %d %c %d = ", i+1, timu[i].a, op[timu[i].op], timu[i].b);

if(!scanf("%d", &n)) {

printf("输入有误!请重试.\n");

f = 0;

} else {

timu[i].input = n;

timu[i].rw = (n == timu[i].result ? (fen += 10, 1) : 0);

f = 1;

}

}

printf("练习完毕!\n");

}

void pinfen()

{

char* a[] = {"你真棒", "好样的", "加油啊", "还需努力"};

char** p;

int n;

p = a + 3;

n = fen / 10;

if(n >= 6)p--;

if(n >= 8)p--;

if(n == 10)p--;

printf("你上次测试的总分为 %s:%d分\n", *p, fen);

}

void shijuan()

{

int i;

char op[] = "+-*/";

for(i = 0; i < N; ++i){

printf("%d %c %d = %d\t%s", timu[i].a, op[timu[i].op],

timu[i].b, timu[i].input, timu[i].rw ? "√": "×");

if(!timu[i].rw)

printf(" 正确答案: %d", timu[i].result);

putchar(‘\n‘);

}

}

int main()

{

int i;

srand(time(0));

void (*f[])() = {chuti, kaoshi, pinfen, shijuan};

while((i = mulu()) != 5) {

f[i-1]();

printf("按任意键继续...");

getch();

}

printf("欢迎下次再来练习");

return 0;

}

四:结果截图:

五:实验总结:

通过这次实验我学会了对问题进行降维,把比较难的题目分解成一个个简单的题目,这样许多难的题目就迎刃而解,给我们的工作带来很大的方便,通过这次实验我学习到了很多,希望以后的实验我能够更上一层楼。

原文地址:https://www.cnblogs.com/sunyangkai/p/9925729.html

时间: 2024-10-12 14:25:33

二柱子四则运算在线答题系统的相关文章

二柱子四则运算3

二柱子四则运算3 可怜的二柱子……又一次被坑了…… 老师又在上次的“二柱子四则运算2”的基础上增添了要求,如下: 1.学生写的程序必须能判定用户的输入答案是否正确.直到题目结束,告诉用户做对了几道题. 2.程序必须能处理四种运算的混合模式. 注意:连续的减法和除法,应该遵守左结合的规定. 连续除法要打括号,否则会引起歧义. 一.实验思路 二.实验源代码 三.实验总结和反思 最后,附上我和我的小伙伴的工作照……没有正脸.老师们不要介意啦啦啦~~~~ 小伙伴博客内容页:http://www.cnbl

二柱子四则运算定制版+升级版

题目:在上次程序的基础上,实现对连除的判断,并且实现多个数的混合运算,要求可以输入结果,并进行判断. 思路:基于上次程序,首先思考混合运算,这里运用两个数组,分别记录随机产生的运算数和运算符号.然后对连除进行判断,,检查运算符号数组里是否有连续的除号,有的话加上括号,避免歧义.最后对运算结果进行计算,并对用户输入的结果进行比较,给出相应提示,回答,计算方面,要优先对括号,乘除进行运算,然后再进行加减运算,每次运算完后都要记录下运算的结果. 代码: //吕广浩 3/19 #include<iost

RIGHT-BICEP单元测试——“二柱子四则运算升级版”

RIGHT-BICEP单元测试 ——“二柱子四则运算升级版” ”单元测试“这对于我们来说是一个全新的专业含义,在上了软件工程这门课,并当堂编写了简单的"求一组数中的最大值"函数的单元测试之后,我们对它有了全新的认识. 单元测试:即为, 老师让我们回去之后将“二柱子四则运算升级版”的程序进行单元测试(二柱子程序的源码我已经上传,这里不再重复,只列举单元测试的部分和分析),如下: PS.这里附上老师上课讲的关于RIGHT-BICEP测试的方法: 6个值得测试的具体部位,他们能够提高我们的测

二柱子-四则运算2

一.设计思想 1.避免重复:输出时,确定了运算符号,两个运算数都相同时,重新随机产生操作数,再循环重新产生式子. 2.可定制:设计菜单,可选择数目,也可进行下列各项的选择. 3.是否有乘除法:菜单中选择了有乘除法,则无需修改:无乘除法,则随机产生的运算符号中就去除产生乘除的数字的可能. 4.是否有括号:如果选择了有括号的,可像运算符号那样,产生1-2随机数,根据随机数产生左右括号. 5.数值范围:在菜单中可选择是50以内.100以内等的选项,可在产生随机数中确定两个运算数的范围. 6.加减有无负

二柱子—四则运算1

设计思路: 1.用rand函数随机生成这两个运算数: 2.随机生成这两个数并通过取余数的方式把它们控制在100以内.其中,考虑到除数不能为零,第二个运算数随机产生时+1: 3.随机产生运算符号,运算符号一共有4种,也可以随机产生1-4的数,分情况进行四则运算. 二.程序代码 #include "stdafx.h"#include "stdlib.h" void randout()     //产生随机数并产生随机运算函数{    int x1,x2;   //两个运

二柱子四则运算2.0版本

支持真分数的四则运算 可以自定义题目数量 源代码: 1 #include<stdio.h> 2 #include<iostream> 3 #include<time.h> 4 #include<string> 5 using namespace std; 6 int main() 7 {srand( (unsigned)time( NULL ) ); 8 int i,k,p,v,a,b; 9 int *s1,*s2,*s3; 10 char n; 11 st

二柱子升级版在线答题

题目要求:1.实现在线答题 2.答题结束后可以判断对错 3.可以将错题结果保存起来 #include<iostream.h>#include<stdlib.h>#include<time.h>void boom(){float x,y;int z,t; int first_num,second_num,third_num,fourth_num;srand(time(NULL));int n;float k;float d;float daan[100];int zq=0

个人项目:二柱子加强版

要求: 1.实现在线答题: 2.答题结束后,可以判断对错: 3.将错的题保存起来: #include<iostream> #include<stdarg.h> #include<stdlib.h> #include<time.h> #include<math.h> using namespace std; int main() { cout<<endl; cout<<"欢迎来到小学生四则运算在线答题系统"

苦逼的二柱子的四则运算问题

问题:二柱子将做好的项目交给了老师,几天后又得到新的需求:   1.实现在线答题:   2.答题结束后,可以判断对错:   3.并将错题的结果保存起来 #include<iostream>#include<stdarg.h>#include<stdlib.h>#include<time.h>#include<math.h>using namespace std;int main(){cout<<endl;cout<<&qu