思路:这是一个有35道运算题的学习系统,先设计系统的界面,然后再编写出题的代码,之后再依次编写训练、评分的代码。这是一个很有挑战性的程序,一开始很苦恼,借鉴了一些网络上的代码,得到了同学的帮助,最终我们编好了这个代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
#include <stdio.h> #include <time.h> #include <stdlib.h> #include <conio.h> #define N 35 typedef struct _ti { int a, b; int op; int result; int input; int rw; }ti; ti timu[N]; int fen; int flag; int mulu() { int z; while (1) { printf( " 三相之力之四则运算系统
" ); printf( "1随机出题 " ); printf( "2开始训练
" ); printf( "3训练评分 " ); printf( "4显示批改的试卷
" ); printf( "5退出系统
" ); printf( "请选择:" ); scanf( "%d" , &z); while (getchar() != '
' ); if (z< 1 || z > 5) printf( "选择有误!请重新输入.
" ); else break ; } return z; } void chuti() { int i, f; printf( "确认随机出%d道题吗?(y确认):" , N); if (getchar() != 'y' ) return ; for (i = 0, f = 1; i < N; f ? i++ : 0) { timu[i].a = rand() % 100+1; timu[i].b = rand() % 100+1; timu[i].op = rand() % 4; if (timu[i].b == 0 && timu[i].op == 3) { f = 0; continue ; } else f = 1; switch (timu[i].op) { case 0: timu[i].result = timu[i].a + timu[i].b; continue ; case 1: timu[i].result = timu[i].a - timu[i].b; continue ; case 2: timu[i].result = timu[i].a * timu[i].b; continue ; case 3: timu[i].result = timu[i].a / timu[i].b; continue ; } } printf( "出题完毕!
" ); flag = 1; } void xunlian() { int i, f, n; char op[] = "+-*/" ; if (!flag) { printf( "还未出题!
" ); return ; } printf( "确认开始练习吗?(y确认):" ); if (getchar() != 'y' ) return ; fen = 0; for (i = 0, f = 1; i < N; f ? ++i : 0) { printf( "题目%d: %d %c %d = " , i+1, timu[i].a, op[timu[i].op], timu[i].b); if (!scanf( "%d" , &n)) { printf( "输入有误!请重试.
" ); f = 0; } else { timu[i].input = n; timu[i].rw = (n == timu[i].result ? (fen += 10, 1) : 0); f = 1; } } printf( "练习完毕!
" ); } void pingfen() { char * a[] = { "棒棒哒" , "很棒" , "不错呀" , "还需努力偶" }; char ** p; int n; p = a + 3; n = fen / 10; if (n >= 6)p--; if (n >= 8)p--; if (n == 10)p--; printf( "您测试的总分为 %s:%d分
" , *p, fen); } void shijuan() { int i; char op[] = "+-*/" ; for (i = 0; i < N; ++i){ printf( "%d %c %d = %d %s" , timu[i].a, op[timu[i].op], timu[i].b, timu[i].input, timu[i].rw ? "√" : "×" ); if (!timu[i].rw) printf( " 正确答案: %d" , timu[i].result); putchar( '
' ); } } int main() { int i; srand(time(0)); void (*f[])() = {chuti,xunlian, pingfen, shijuan}; while ((i = mulu()) != 5) { f[i-1](); printf( "按任意键继续..." ); getch(); } printf( "欢迎下一次使用" ); return 0; } 运行结果
总结:这是我们小组成员共同努力的结果,我们团结一致完成了这个小程序
|