关于30道题目问题

要求:

1.30道题 随机

2.包含真分数加减乘除

3.不重复

4.判断是否正确

#include "stdafx.h"


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

int i, j, k;
int a, b, c, d, e, f, g, h, x, y, z;
int yuefen(int, int){
int min;
if (x>y){
min = y;
}
else{
min = x;
}
for (k = min - 1; k > 1; k--)
{
if (x%k == 0 && y%k == 0){
z = (x / k) / (y / k);
}
else{
z = x / y;
}
}
return z;
}
int main(){
int num = 0;
printf("请输入需要几道题:");
scanf("%d", &num);
int aa[100] = { 0 * 100 };
int bb[100] = { 0 * 100 };
int cc[100] = { 0 * 100 };
int dd[100] = { 0 * 100 };
int ee[100] = { 0 * 100 };
int ff[100] = { 0 * 100 };
int gg[100] = { 0 * 100 };
int hh[100] = { 0 * 100 };
int zong[100] = { 0 * 100 };
int daan[100] = { 0 * 100 };
for (i = 1; i <= num; i++)
{
e = 0;
while (e % 10 == 0)
{
e = rand() % 10 + 10;
}
ee[i] = e;
f = 0;
while (f % 10 == 0)
{
f = rand() % 10 + 10;
}
ff[i] = f;
g = 0;
while (g % 10 == 0)
{
g = rand() % 100 + 10;
}
gg[i] = g;
h = 0;
while (h % 10 == 0)
{
h = rand() % 10 + 10;
}
hh[i] = h;
a = rand();
while (a > e)
{
a = rand();
}
aa[i] = a;
b = rand();
while (b > f)
{
b = rand();
}
bb[i] = b;
c = rand();
while (c > g)
{
c = rand();
}
cc[i] = c;
d = rand();
while (d > h)
{
d = rand();
}
dd[i] = d;
x = h*(a*f*g + e*b*c);
y = d*e*f*g;
yuefen(x, y);
int q;
for (q = 0; q<i; q++)
if (z == zong[q]){
if (aa[q] == a&&bb[q] == b&&cc[q] == c&&dd[q] == d&&ee[q] == e&&ff[q] == f&&gg[q] == g&&hh[q] == h)
{
i == i - 1;
}
else{
zong[i] = z;
}
}
else{
zong[i] = z;
}
printf("%d/%d+%d/%d×%d/%d)÷%d/%d=\n", a, e, b, f, c, g, d, h);
}
for (j = 0; j < num; j++)
{
double s;
printf("请输入正确答案:");
scanf("%d", &s);
daan[j] = s;
if (daan[j] = zong[i])
printf("正确\n");
else
printf("错误\n");
}
return 0;
}

  

 

非完全正确,包括答案精确性,加减乘除随机性,数的固定随机没有解决......

 

 

 

//

 

 

改:

#include "stdafx.h"


#include <stdio.h> 
#include<stdlib.h>
int i, j, k;
int a, b, c, d, e, f, g, h, x, y, z;
int yuefen(int, int){
int min;
if (x>y){
min = y;
}
else{
min = x;
}
for (k = min - 1; k > 1; k--)
{
if (x%k == 0 && y%k == 0){
x = x / k;
y = y / k;
}
}
return x, y;
}
int main(){
int num;
printf("请输入需要几道题:");
scanf("%d", &num);
int aa[100] = { 0 * 100 };
int bb[100] = { 0 * 100 };
int cc[100] = { 0 * 100 };
int dd[100] = { 0 * 100 };
int ee[100] = { 0 * 100 };
int ff[100] = { 0 * 100 };
int gg[100] = { 0 * 100 };
int hh[100] = { 0 * 100 };
int xx[100] = { 0 * 100 };
int yy[100] = { 0 * 100 };
int zong[100] = { 0 * 100 };
int daan[100] = { 0 * 100 };
for (i = 0; i<num; i++)
{
e = 0;
while (e % 10 == 0)
{
e = rand() % 10 + 10;
}
ee[i] = e;
f = 0;
while (f % 10 == 0)
{
f = rand() % 10 + 10;
}
ff[i] = f;
g = 0;
while (g % 10 == 0)
{
g = rand() % 10 + 10;
}
gg[i] = g;
h = 0;
while (h % 10 == 0)
{
h = rand() % 10 + 10;
}
hh[i] = h;
a = rand();
while (a > e)
{
a = rand();
}
aa[i] = a;
b = rand();
while (b > f)
{
b = rand();
}
bb[i] = b;
c = rand();
while (c > g)
{
c = rand();
}
cc[i] = c;
d = rand();
while (d > h)
{
d = rand();
}
dd[i] = d;
x = h*(a*f*g + e*b*c);
y = d*e*f*g;
yuefen(x, y);
//printf("%d,%d", x, y);//
int q;
for (q = 0; q <= i; q++){

if (x == xx[q] && y == yy[q]){
if (aa[q] == a&&bb[q] == b&&cc[q] == c&&dd[q] == d&&ee[q] == e&&ff[q] == f&&gg[q] == g&&hh[q] == h)
{
i == i - 1;
}
else{
xx[i] = x;
yy[i] = y;
}
}
else{
xx[i] = x;
yy[i] = y;
}
}
printf("(%d/%d+%d/%d×%d/%d)÷%d/%d=\n", a, e, b, f, c, g, d, h);

}
for (j = 0; j < num; j++)
{
int s, t;
printf("请输入正确答案:");
scanf("%d", &s);	
scanf("/%d", &t);
if (s == xx[j] && t == yy[j]){

printf("正确\n");

}
else{

printf("错误\n");

}
}
return 0;
}

  

posted @ 2018-10-07 21:29  logo132  阅读(187)  评论(0编辑  收藏  举报