四则运算改进版
编译环境:Visual C++ 6.0(完整绿色版)
开发人员:Ives
开发时间:2015-04-02
实现功能:
1.基本的加减乘除
2.每次出20道题目,会显示答对的数目和得分
3.能出于分数相关的运算
4.能过输入真分数
5.回答错题目会显示正确的答案
6.答对题目的提示和打错题目提示都不相同,不会产生时间疲劳
缺点:
1.输入分数有时候会出错
2.输入其他字符也会出现错误
3.不能选择计算的最大数值
4.不能用户选择做什么运算
......
个人体会:
1.能力还是不足,一些思路还是想不到
2.要多参考其它同学的代码,多多少少都能学到一些东西
3.写代码一定要规范,不然他人看不懂你的代码
总结:
一定要多动脑子去思考,应该怎么设计,为什么要这样设计,一定要有一个清晰的思路再去写代码。因为编写代码其实是很简单的一个工作,如果你有了一个清晰的思路。其实在写程序的时候,测试也很重要的,在编码的同时一起测试,调试,到了完成整个程序的时候才不会出现一大堆BUG,这个花的时间去调试会更多,拖延了程序的完成时间。
下面这个图说明的是,理解问题的要求应该是第一位,再然后是设计数据结构和算法,因为这两步做好了,那么程序也差不多完成一半了,所以以后开发程序的时候,一定要弄清楚这个程序的架构,你要怎么样去设计它,,它用到的算法,用到的数据结构,一旦这些都清晰了,那么编码是在容易不过的事情了。
加油。
下图是运行的结果截图(共3张):
下面是源代码:
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 int amount = 0; 5 void inface() 6 { 7 printf(" -------------------------------------- "); 8 printf(" - - "); 9 printf(" - - "); 10 printf(" - 四则运算系统 - "); 11 printf(" - - "); 12 printf(" - - "); 13 printf(" - Ives 14.3.26 - "); 14 printf(" -------------------------------------- "); 15 16 } 17 int Random(int n,int m)//随机生成n~m的整数 18 { 19 int op; 20 srand(time(NULL)); 21 op = rand()%m+n; 22 return op; 23 } 24 25 int Rigth() 26 { 27 int n; 28 n = Random(1,4); 29 switch(n){ 30 case 1: 31 printf("恭喜你,你答对了! "); 32 break; 33 case 2: 34 printf("你真棒,你答对了! "); 35 break; 36 case 3: 37 printf("你真聪明,你答对了! "); 38 break; 39 case 4: 40 printf("。。。。。。。答对了! "); 41 break; 42 default: 43 break; 44 } 45 amount++; 46 return amount; 47 } 48 49 void Wrong() 50 { 51 int n; 52 n = Random(1,4); 53 switch(n){ 54 case 1: 55 printf("回答错误! "); 56 break; 57 case 2: 58 printf("错了,再接再厉 "); 59 break; 60 case 3: 61 printf("没关系,这次错了,下次加油! "); 62 break; 63 case 4: 64 printf("回答错了,揉揉眼睛继续努力! "); 65 break; 66 } 67 } 68 69 void operation() 70 { 71 int a; 72 int b; 73 int c; 74 int d; 75 int fz; 76 int fm; 77 int ou; 78 int answer; 79 int answer1; 80 int ture=0; 81 82 ou=Random(1,8); 83 a = Random(1,10); 84 b = Random(2,11); 85 c = Random(2,9); 86 d = Random(1,10); 87 88 switch(ou){ 89 case 1: 90 printf("%d+%d=",a,b); 91 scanf("%d",&answer); 92 if(answer == a+b) 93 Rigth(); 94 else 95 { 96 Wrong(); 97 printf("正确的答案是:%d ",a+b); 98 } 99 break; 100 case 2: 101 printf("%d-%d=",a,b); 102 scanf("%d",&answer); 103 if(answer == a-b) 104 Rigth(); 105 else 106 { 107 Wrong(); 108 printf("正确的答案是:%d ",a-b); 109 } 110 break; 111 case 3: 112 printf("%d*%d=",a,b); 113 scanf("%d",&answer); 114 if(answer == a*b) 115 Rigth(); 116 else 117 { 118 Wrong(); 119 printf("正确的答案是:%d ",a*b); 120 } 121 break; 122 case 4: 123 printf("%d/%d=",a,b); 124 if(a>b && a%b == 0) 125 { 126 scanf("%d",&answer); 127 if((float)answer == a/b) 128 Rigth(); 129 else 130 { 131 Wrong(); 132 printf("正确的答案是:%d ",a/b); 133 } 134 } 135 else{ 136 scanf("%d/%d",&answer,&answer1); 137 if(answer == a && answer1 == b) 138 Rigth(); 139 else 140 { 141 Wrong(); 142 printf("正确的答案是:%d ",a/b); 143 } 144 } 145 break; 146 case 5: 147 printf("%d/%d + %d/%d = ",a,b,c,d); 148 scanf("%d/%d",&answer,&answer1); 149 fz = (a*d)+(c*b); 150 fm = b*d; 151 if(answer/answer1 == fz/fm) 152 Rigth(); 153 else 154 { 155 Wrong(); 156 printf("正确的答案是:%d ",fz/fm); 157 } 158 break; 159 case 6: 160 printf("%d/%d - %d/%d = ",a,b,c,d); 161 scanf("%d/%d",&answer,&answer1); 162 fz = (a*d)-(c*b); 163 fm = b*d; 164 if(answer/answer1 == fz/fm) 165 Rigth(); 166 else 167 { 168 Wrong(); 169 printf("正确的答案是:%d ",fz/fm); 170 } 171 break; 172 case 7: 173 printf("%d/%d + %d/%d = ",a,b,c,d); 174 scanf("%d/%d",&answer,&answer1); 175 fz = a*c; 176 fm = b*d; 177 if(answer/answer1 == fz/fm) 178 Rigth(); 179 else 180 { 181 Wrong(); 182 printf("正确的答案是:%d ",fz/fm); 183 } 184 break; 185 case 8: 186 printf("%d/%d + %d/%d = ",a,b,c,d); 187 scanf("%d/%d",&answer,&answer1); 188 fz = a*d; 189 fm = b*c; 190 if(answer/answer1 == fz/fm) 191 Rigth(); 192 else 193 { 194 Wrong(); 195 printf("正确的答案是:%d ",fz/fm); 196 } 197 break; 198 default: 199 printf("系统出错了! "); 200 printf("%d",ou); 201 break; 202 } 203 } 204 205 int main() 206 { 207 int n=1; 208 inface(); 209 printf("本系统一共有20道题,请认真答题!"); 210 while(n<=20){ 211 printf(" 第%d道题: ",n); 212 operation(); 213 n++; 214 } 215 printf("你答对了%d道题,得分是:%d ",amount,amount*5); 216 217 return 0; 218 219 }
-----------------------------------------------------本次实验报告到此结束,谢谢老师审阅-------------------------------------------------------------------