基于http://www.cnblogs.com/HAOZHE/p/5276763.html改编写的关于随机生成四则运算的小程序

github源码和工程文件地址:https://github.com/HuChengLing/-

基本要求:

除了整数以外,还能支持真分数的四则运算。

对实现的功能进行描述,并且对实现结果要求截图。

主要功能:运算小学四则运算,可以选择加减乘除以及混合运算。

设计思想:首先思考运算数字范围,考虑小学生的运算能力,然后分类运算方法,分为加减乘除混合运算,

然后可以选择是继续做题还是退出程序,可以总结做对或者做错的题数,方便计算正确以及错误的题数。

二 程序代码:2017-09-16

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<conio.h>
#include<string.h> int right = ;
int wrong = ;
char getSignal();
int calculateIntegerResult(int num1, int num2, char signal);
//int getNumber();
void doIntegerSubject();
void falsePrint(int);
void correctPrint(int); /*char getSignal() { char signal[4] = { '+','-','*','/' }; srand((unsigned)time(NULL)); return signal[rand() % 4]; }*/
char getSignal()
{
srand((unsigned)time(NULL));
int a;
a = rand() % + ;
switch (a)
{
case :
return '+';
break;
case :
return'-';
break;
case :
return '*';
break;
case :
return '/';
break;
default:
break;
}
}
/*int getNumber()
{
srand((unsigned)time(NULL));
int a, b;
a = rand() % 100 + 1;
b = rand() % 100 + 1;
return 0;
}*/ int calculateIntegerResult(int num1, int num2, char signal)
{
int t;
switch (signal)
{
case '+':
t = num1 + num2;
break;
case'-':
t = num1 - num2;
break;
case'*':
t = num1*num2;
break;
case'/':
t = num1 / num2;
break;
default:
t = ;
printf("运算符不符合规则\n");
break;
}
return t;
} void calculateMarkResult(int num1, int num2, int num3, int num4, char signal, int mark[])
{ switch (signal)
{
case '+':
if (num2 == num4)
{
mark[] = num1 + num3;
mark[] = num1;
}
else
{
mark[] = num1*num4 + num2*num3;
mark[] = num2*num4;
}
break;
case'-':
if (num2 == num4)
{
mark[] = num1 - num3;
mark[] = num1;
}
else
{
mark[] = num1*num4 - num2*num3;
mark[] = num2*num4;
}
break;
case'*':
mark[] = num1*num3;
mark[] = num2*num4;
break;
case'/':
mark[] = num1*num4;
mark[] = num2*num3;
break;
default:
printf("运算符不符合规则\n");
break;
} } void doIntegerSubject()
{
int a, b, giverAnswer, printFlag; char signal;
srand((unsigned)time(NULL));
a = rand() % + ;
b = rand() % + ;
signal = getSignal();
if (signal == '/')
{
if (b == )
{
int temp;
temp = b;
b = a;
a = temp;
}
}
printf("please do blew problem:\n");
printf("%d %c %d=", a, signal, b);
//giverAnswer = _getch();
scanf_s("%d", &giverAnswer);
fflush(stdin);
if (calculateIntegerResult(a, b, signal) == giverAnswer) {
right++;
srand((unsigned)time(NULL));
printFlag = rand() % + ;
correctPrint(printFlag); } else {
wrong++;
srand((unsigned)time(NULL));
printFlag = rand() % + ;;
falsePrint(printFlag);
printf("\n正确答案:%d\n", calculateIntegerResult(a, b, signal));
} } void doMarkSubject()
{
int a, b, c, d, i = , printFlag;
int result[];
char giverNumber[];
char signal;
int x, y, j;
signal = getSignal();
srand((unsigned)time(NULL));
while ()
{
a = rand() % ;
while ()
{
b = rand() % ;
if (b)
break;
}
if (a < b)
break;
} while ()
{
c = rand() % ;
while ()
{
d = rand() % ;
if (d)
break;
}
if (c < d)
break;
}
/*a = rand() % 100 + 1;
b = rand() % 100 + 1;
c = rand() % 100 + 1;
d = rand() % 100 + 1;
signal = getSignal();
if (b == 0 || a>b)
{
int temp;
temp = b;
b = a;
a = temp;
}
if (d == 0 || c>d)
{
int f;
f = b;
b = a;
a = f;
}*/
printf("please do blew problem:\n");
printf("%d/%d %c %d/%d=", a, b, signal, c, d);
//giverAnswer = _getch();
i = ;
while ()
{
giverNumber[i] = _getche();
if (giverNumber[i] == '/')
break;
i++; }
x = ;
for (j = ; j < i; j++)
{
x = x + pow(, (i - - j))*(giverNumber[j] - '');
}
scanf_s("%d", &y);
calculateMarkResult(a, b, c, d, signal, result);
//scanf_s("%d", &giverNumber[i]);
fflush(stdin);
if (x == result[] && y == result[]) {
right++;
srand((unsigned)time(NULL));
printFlag = rand() % + ;
correctPrint(printFlag); } else {
wrong++;
srand((unsigned)time(NULL));
printFlag = rand() % + ;;
falsePrint(printFlag);
int *dd;
printf("\n正确答案:%d/%d\n", result[], result[]);
//printf("\n正确答案:%d\n", calculateMarkResult(a, b, signal, c, d));
} } //回答正确打印信息
void correctPrint(int num)
{
switch (num) {
case :
printf("You're right!\n"); break;
case :
printf("It's OK!\n"); break;
case :
printf("Correct!\n"); break;
case :
printf("Perfect!\n"); break;
case :
printf("Oh my gag!\n"); break;
default:
printf("Powerful!\n"); break;
} } //回答错误打印信息 void falsePrint(int num)
{
switch (num)
{
case :
printf("You're lost!"); break;
case :
printf("Failure!"); break;
case :
printf("Come on!"); break;
case :
printf("It's wrong!"); break;
default:
printf("Incorrect!"); break;
}
} void main()
{
int total;
int con= , choice,choice1;
printf("welcome to math world!:");
system("cls"); if (con = )
{
printf("\t\t\t 1.整数运算\n");
printf("\t\t\t 2.分数运算\n");
printf("请选择:\n");
scanf_s("%d", &choice);
system("cls");
switch (choice)
{
case :
while (right >= wrong)
{
doIntegerSubject(); }
total = right + wrong;
printf("你一共答了:%d道题其中答对了%d 道答错了%d道\n", total, right, wrong);
break;
case :
while (right >= wrong)
{
doMarkSubject();
}
total = right + wrong;
printf("你一共答了:%d道题其中答对了%d 道答错了%d道\n", total, right, wrong);
break;
}
system("pause");
} printf("\n\t\t\t1.重新选择?\n");
printf("\n\t\t\t2.退出运算?\n");
scanf_s("%d", &choice1);
if (choice1 == )
{
system("cls");
con = ;
}
else if (choice1 == )
{
exit;
}
else
printf("抱歉!,你输入的指令有误!请重新输入!\n");
system("pause"); }

总结:一个简单的自动随机生成四则运算 之前百度的源码,它的功能主要是随机生成符号和随机数来达到随机的加、减、乘、除的算术表达数,他也没有让用户自己选择是否继续运算或者退出系统,也不支持正分数的运算。 在网络源码的基础上,我将原来的随机获取函数进行了修改,其次我增加分数运算和分数判断,以及统计正误数据的变量并输出来和用户可以自行选择是否继续运算的选项。

基于c编写的关于随机生成四则运算的小程序的更多相关文章

  1. 结对作业——随机生成四则运算(Core 第7组)

    结对作业 ——随机生成四则运算(core第7组) 吕佳玲 PB16060145 涂涵越 PB16060282 GITHUB地址 https://github.com/hytu99/homework_2 ...

  2. 用Java随机生成四则运算

    代码链接:https://github.com/devilwjy/Code.Demo 需求分析: 1.程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符 ...

  3. (幼儿园毕业)Javascript小学级随机生成四则运算

    软件工程第二次结对作业四则运算自动生成器网页版 一.题目要求 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题. ...

  4. 结对项目 实现自动生成四则运算题目的程序 (C++)

    本次作业由 陈余 与 郭奕材 结对完成 零.github地址: https://github.com/King-Authur/-Automatically-generate-four-arithmet ...

  5. 基于Taro与Typescript开发的网易云音乐小程序

    基于Taro与网易云音乐api开发,技术栈主要是:typescript+taro+taro-ui+redux,目前主要是着重小程序端的展示,主要也是借此项目强化下上述几个技术栈的使用,通过这个项目也可 ...

  6. 基于Taro与typescript开发的网易云音乐小程序(持续更新)

    基于Taro与网易云音乐api开发,技术栈主要是:typescript+taro+taro-ui+redux,目前主要是着重小程序端的展示,主要也是借此项目强化下上述几个技术栈的使用,通过这个项目也可 ...

  7. 基于wepy和云开发的动漫资讯小程序----233次元

    233次元小程序 # 233次元小程序 项目描述- 基于微信小程序的动漫咨询小程序,采用`wepy`框架开发:- 后台数据采用小程序的云开发存储: 线上体验 部分截图                 ...

  8. 基于uniapp自定义Navbar+Tabbar组件「兼容H5+小程序+App端Nvue」

    uni-app跨端自定义navbar+tabbar组件|沉浸式导航条|仿咸鱼凸起标签栏 在跨端项目开发中,uniapp是个不错的框架.采用vue.js和小程序语法结构,使得入门开发更容易.拥有非常丰富 ...

  9. mpvue 生成字节跳动小程序的问题!!

    初始化项目文件 $ vue init mpvue/mpvue-quickstart fuck $ cd fuck $ npm install 这个时候就初始化好了,接下来 $ npm run dev: ...

随机推荐

  1. 怎样查看Jdk是32位还是64位

    怎样查看Jdk是32位还是64位.. ------------- --------------- ------------- 其实还可以这样看哦.. --------------- --------- ...

  2. 重拾java中的 i++ 和 ++i

    java中的 i++ 和 ++i 首先记着要点: 1.i++是先取值再运算. 2.++i是先运算后取值. 举个栗子: int y,x=3;y=(++x)+(++x); 则y=? 分析:先运算后取值,先 ...

  3. 在Linux 环境下搭建 JDK 和 Tomcat

      在Linux 环境下搭建 JDK 和 Tomcat 参考地址:http://www.cnblogs.com/liulinghua90/p/4661424.html   [JDK安装] 1.首先下载 ...

  4. HK2使用详解

    HK2介绍 组件 生命周期 定义服务 注入服务 HK2介绍 HK2是一个轻量级动态依赖注入框架,它是JSR-330的实现. 组件 在HK2组件模型中,一个组件的功能是通过服务接口-服务实现的模式声明的 ...

  5. 图像处理:卷积模块FPGA 硬件加速

    本文记录了利用FPGA加速图像处理中的卷积计算的设计与实现.实现环境为Altera公司的Cyclone IV型芯片,NIOS II软核+FPGA架构. 由于这是第一次设计硬件加速模块,设计中的瑕疵以及 ...

  6. Java学习记录:降低耦合度

    耦合度定义 耦合度(Coupling)是对模块间关联程度的度量.耦合的强弱取决与模块间接口的复杂性.调用模块的方式以及通过界面传送数据的多少. 模块间的耦合度是指模块之间的依赖关系,包括控制关系.调用 ...

  7. JavaScript 的使用基础总结③

    JavaScript 中的对象 JavaScript 中的所有事物都是对象:字符串.数值.数组.函数... JavaScript 允许自定义对象. (一)数组 数组对象的作用是:使用单独的变量名来存储 ...

  8. 软件工程(GZSD2015)第二次作业小结

    第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...

  9. 英语学习app案列分析

    很多同学有误解,软件工程课是否就是理论课?或者是几个牛人拼命写代码,其他人打酱油的课?要不然就是学习一个程序语言,搞一个职业培训的课?都不对,软件工程有理论,有实践,更重要的是分析,思辨,总结.在课程 ...

  10. 团队作业8——Beta项目(冲刺计划)

    Beta阶段冲刺计划 经过几周的努力我们完成了Alpha的开发,进过一段时间的调整与重组我们继续向Beta版进发. 1. 新成员介绍 林乔桦(201421123074):掌握c语言,JavaScrip ...