要求:
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= ", 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("正确 "); else printf("错误 "); } 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= ", 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("正确 "); } else{ printf("错误 "); } } return 0; }