/
作业.cpp
134 lines (131 loc) · 2.57 KB
/
作业.cpp
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
128
129
130
131
132
133
134
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int getchoice();
void menu();
void doExercise(int);
int test(int);
int exnum=0; //题目数量
int main(void)
{
int choice=0;
do
{
menu();
while(1)
{
choice=getchoice();
if(choice<0||choice>4)
printf("输入有误,");
else break;
}
if(choice==0)
{
break;//用户选择0,推出循环(推出系统)
}
doExercise(choice);//测试系统
}while(choice!=0);
printf("欢迎使用本软件,再见!\n");
return 0;
}
int getchoice()
{
printf("请输入你的选择(0--4):");
int choice;
scanf("%d",&choice);
return choice;
}
void menu()
{
printf("****************************************\n");
printf("** 欢迎使用小学生四则运算练习软件 **\n");
printf("* 1.加法练习 *\n");
printf("* 2.减法练习 *\n");
printf("* 3.乘法练习 *\n");
printf("* 4.除法练习 *\n");
printf("* 0.退出 *\n");
printf("****************************************\n");
}
void doExercise(int n)
{
int score=0; //练习得分,初始化为0
int i=0; //练习题数的计数器
printf("你想做多少道题?");
scanf("%d",&exnum);
for(i=0;i<exnum;i++)
{
score=score+test(n);
}
printf("\n正确率:%d/%d\n\n\n",score,exnum);
}
int test(int n)
{
int rightanswer=0; //正确答案
int useranswer=0; //用户输入的答案
int t=0; //临时变量
char operation; //运算类别
int num1=0; //操作数1
int num2=0; //操作数2
srand(time(NULL));
num1=rand()%10; //取0-9之间的随机数
num2=rand()%10;
switch(n)
{
case 1:operation='+';break;
case 2:operation='-';break;
case 3:operation='*';break;
case 4:operation='/';break;
}
if((operation=='-')&&(num1<num2))
{
t=num1;
num1=num2;
num2=t;
}
if((operation=='/')&&(num2==0))
{
t=num1;
num1=num2;
num2=t;
}
switch(operation)
{
case '+':rightanswer=num1+num2;break;
case '-':rightanswer=num1-num2;break;
case '*':rightanswer=num1*num2;break;
case '/':rightanswer=num1/num2;break;
}
//判断证误
int errornum=0;
printf("%d%c%d=",num1,operation,num2);
while(1)
{
scanf("%d",&useranswer);
if(useranswer==rightanswer)
{
if(errornum>0)
{
printf("做对了!\n\n");
return 0;
}
else
{
printf("做对了!\n\n");
return 1;
}
}
else
{
errornum++;
if(errornum==3)
{
printf("错误3次,正确答案为:%d\n\n",rightanswer);
return 0;
}
else
{
printf("做错了!请重新输入答案:");
}
}
}
}