四则运算生成器

小学生四则运算生成器

功能:随机生成加减乘除运算 只是功能还不算丰满  以后可以再加 

代码如下:

// test.cpp: 定义控制台应用程序的入口点。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//函数原型
int getChoice();
void showMenu();
void score(int);
int test(int);

/*
功能:用户选择功能
返回:用户的功能选择
1、加法 2、减法 3、乘法 4、除法 0、退出
*/
int getChoice()
{
int choice;
scanf("%d", &choice);
return choice;
}

/*
功能:显示功能的菜单
*/

void showMenu()
{
printf("*****************************************\n");
printf(" 四则运算练习\n");
printf("*****************************************\n");
printf("\t1、加法\t2、减法\n");
printf("\t3、乘法\t4、除法\n");
printf("\t5、综合\t0、退出\n");
printf("*****************************************\n");
printf("连续练习十道题 计分 祝使用愉快\n");
printf("请输入你的选择(0--5):\n");
printf("*****************************************\n");
}

/*
功能:计分器
*/
void score(int n)
{
int sco = 0; //练习得分,初始化为0
int i = 0; //练习题数的计数器

for (i = 1; i <= 10; i++)
{
sco = sco + test(n); //间接递归调用test(n)
}
printf("你做对了%d道,得%d分\n", sco, sco);
}

/*
功能:进行一道题的测试过程
*/
int test(int n)
{
int answer0 = 0; //正确答案
int answer1 = 0; //用户输入的答案
int t = 0; //临时变量
char operation; //运算类别
int num1 = 0; //操作数1
int num2 = 0; //操作数2

srand(time(0)); //初始化随机数种子
num1 = rand() % 100; //取0—100之间的随机数
num2 = rand() % 100;

//进入程序功能,如果选择5就随机产生1-4所代表的每一种运算方式
if (n == 5)
{
n = rand() % 4 + 1;
}

switch (n)
{
case 1:
operation = '+';
break;

case 2:
operation = '-';
break;

case 3:
operation = '*';
break;

case 4:
operation = '/';
break;
}

//加入一条防止“不够减”的语句,当选择减法且num1小于num2时不够减
//不够减的时候,用临时变量交换两个操作数
if ((operation == '-') && (num1<num2))
{
t = num1;
num1 = num2;
num2 = t;
}

//防止“除数为0”的程序漏洞
//当num2被随机取值到0时,就将num2强制置为1
//做除法时,将num1的值强制赋值给num1*num2,防止不能整除
if (operation == '/')
{
if (num2 == 0)
{
num2 = 1;
}
num1 = num1*num2; //防止num1不能被num2整除的语句
}

//输出测试题本身、提示用户输入
printf("%d%c%d= ", num1, operation, num2);
scanf("%d", &answer1);

//程序计算正确结果
switch (operation)
{
case '+':
answer0 = num1 + num2;
break;

case '-':
answer0 = num1 - num2;
break;

case '*':
answer0 = num1*num2;
break;

case '/':
answer0 = num1 / num2;
break;
}
//评判,做对返回1,做错返回0
if (answer0 == answer1)
{
printf("做对了!\n");
return 1;
}
else
{
printf("做错了!\n");
return 0;
}
}


//主函数
int main(void)
{
int choice = 0; //接收用户的选择

 

//循环开始功能,本次用do……while循环
do
{
showMenu(); //显示菜单
choice = getChoice();

//控制choice的范围
if (choice<0 || choice>5)
{
choice = 1; //强制做加法
}
if (choice == 0)
{
break; //用户选择0,退出循环(退出系统)
}

score(choice); //做什么练习,并启动评分
} while (choice != 0);

printf("欢迎使用,再见!\n");
return 0;
}

总结:本次代码并非原著 借鉴网上某位博客主的代码 然后自己改了些功能 showmenu() score() test() 函数都有改动 使得成为适合我看和使用的代码 不过本次代码并不复杂 本应该自己敲出来 只是功力并不深厚 所以 好好学习 天天向上 继续努力

posted @ 2017-09-21 21:33  千山鸟飞决  阅读(250)  评论(0编辑  收藏  举报