您的位置:首页 > 其它

自动生成四则运算题目

2016-03-16 09:09 148 查看
#include<stdio.h>
#include<Windows.h>
#include<time.h>
void main()
{
int a, b, c, d,i,m,n;
float p, q;
srand(unsigned( time(NULL)));//这个函数调用中使用(time(NULL));这个函数调用中使用time(NULL)函数返回值(当前时间)作实参。初始化随机数发生器。
for (i = 0; i < 30; i++)
{
a = rand() % 100;//rand()返回一个随机数,但是每次调用时,随机数发生器返回的随机数序列都是一样的,所以,用当前时间(time(NULL))返回值作为种子对随机数发生器进行初始化,由于每次当前时间不一样,所以随机数发生器产生的随机数序列不一样,即rand()函数调用的返回值不一样,就达到了得真随机数而不是伪随机数的目的。
b = rand() % 100;
c = rand() % 5;
switch (c)
{
case 0: printf("%d + %d =\n", a, b);
break;
case 1:if (a < b)
{
d = a;
a = b;
b = d;
}
printf("%d - %d =\n", a, b);
break;
case 2:printf("%d * %d =\n", a, b);
break;
case 3:
while (b == 0)
{
b = rand() % 100;
}
printf("%d / %d =\n", a, b);
break;
case 4:
a = rand() % 100;
b = rand() % 100;
m = rand() % 100;
n = rand() % 100;
c = rand() %4 ;
while (b == 0)
{
b = rand() % 100;
}
while (n == 0)
{
n = rand() % 100;
}
if (a > b)
{
d = a;
a = b;
b = d;
}
if (m > n)
{
d = m;
m = n;
n = d;
}
switch (c)
{
case 0:printf("%d/%d + %d/%d =\n", a, b, m, n);
break;
case 1:
p = (float)a / (float)b;
q = (float)m / (float)n;
if (p < q)
{
d = a;
a = m;
m = d;
d = b;
b = n;
n = d;
}
printf("%d/%d - %d/%d =\n", a,b,m,n);
break;
case 2:printf("%d/%d * %d/%d =\n", a, b, m, n);
break;
case 3:
a = rand() % 100;
b = rand() % 100;
m = rand() % 100;
n = rand() % 100;
c = rand() % 4;
while (m == 0)
{
m = rand() % 100;
}
printf("%d/%d / %d/%d =\n", a, b, m, n);
break;
}
}
}
system("pause");
}


主要功能:

能自动生成小学四则运算题目(注意是给小学生用的,不能出现负数)

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

题目分析设计思想:1.由于是给小学生用的,所以要求运算的时候不能有负数,因此,减法运算时,前面的数一定要大于后面的数。

2.除法运算的规则,分母不能为0。

3.题目要求支持真分数,由真分数的概念知,分子不能大于分母的数。

4.因为题目要求是随机30道题,所以运用随机生成数函数srand()和rand()。

程序运行截图:



总结:

本次作业我采用C语言来完成的,虽然途中有所困难,但还是通过看书以及跟同学交流解决了问题成功运行了程序。还需要看书、学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: