一、题目
我在这次扩展中加入了实现让程序能接受用户输入答案,并判定对错,最后给出总共对/错的数量。
二、设计思想
接收用户输入的数,用if结构判断,对则继续,错则给出正解再继续。
有余数除法部分加入类型转换,以实现浮点型答案输出。
增加一个全局变量,对结果对错计数。
因要逐题输入答案,所以去掉分列显示。
三、代码
1 #include<iostream.h> 2 #include<stdlib.h> 3 #include<time.h> 4 5 static int i=0,j=0; 6 7 void jia(int n) //加法 8 { 9 int a,b,m; 10 a=rand()%n; 11 b=rand()%n; 12 cout<<a<<"+"<<b<<"="<<" "; 13 cout<<"请输入结果:"; 14 cin>>m; 15 cout<<endl; 16 if(m==a+b) 17 { 18 cout<<"答案正确!"<<endl; 19 i++; 20 } 21 else 22 { 23 cout<<"答案错误,正确答案是:"<<a+b<<endl<<endl;//给出正确答案 24 j++; 25 } 26 } 27 28 void jian(int n) //减法 29 { 30 int a,b,m; 31 a=rand()%n; 32 b=rand()%n; 33 cout<<a<<"-"<<b<<"="<<" "; 34 cout<<"请输入结果:"; 35 cin>>m; 36 cout<<endl; 37 if(m==a-b) 38 { 39 cout<<"答案正确!"<<endl; 40 i++; 41 } 42 else 43 { 44 cout<<"答案错误,正确答案是:"<<a-b<<endl<<endl;//给出正确答案 45 j++; 46 } 47 } 48 49 void jianfu(int n) //无负数减法 50 { 51 int a,b,t,m; 52 a=rand()%n; 53 b=rand()%n; 54 if(a<b) 55 {t=a;a=b;b=t;} 56 cout<<a<<"-"<<b<<"="<<" "; 57 cout<<"请输入结果:"; 58 cin>>m; 59 cout<<endl; 60 if(m==a-b) 61 { 62 cout<<"答案正确!"<<endl; 63 i++; 64 } 65 else 66 { 67 cout<<"答案错误,正确答案是:"<<a-b<<endl<<endl;//给出正确答案 68 j++; 69 } 70 } 71 72 void cheng(int n) //乘法 73 { 74 int a,b,m; 75 a=rand()%n; 76 b=rand()%n; 77 cout<<a<<"*"<<b<<"="<<" "; 78 cout<<"请输入结果:"; 79 cin>>m; 80 cout<<endl; 81 if(m==a*b) 82 { 83 cout<<"答案正确!"<<endl; 84 i++; 85 } 86 else 87 { 88 cout<<"答案错误,正确答案是:"<<a*b<<endl<<endl;//给出正确答案 89 j++; 90 } 91 } 92 93 void chu(int n) //除法 94 { 95 int a,b; 96 float m,f,g,h; 97 a=rand()%n; 98 b=rand()%n; 99 while(b==0) 100 { 101 b=rand()%n; 102 } 103 cout<<a<<"/"<<b<<"="<<" "; 104 cout<<"请输入结果:"; 105 cin>>m; 106 cout<<endl; 107 if(m==a/b) 108 { 109 cout<<"答案正确!"<<endl; 110 i++; 111 } 112 else 113 { 114 g=(float)a; 115 h=(float)b; 116 f=g/h; 117 cout<<"答案错误,正确答案是:"<<f<<endl<<endl;//给出正确答案 118 j++; 119 } 120 } 121 122 void chuyu(int n) //无余数除法 123 { 124 int a,b; 125 float m,f,g,h; 126 a=rand()%n; 127 b=rand()%n; 128 if(b==0) 129 { 130 b=rand()%n+1; 131 } 132 if(a%b!=0) 133 { 134 a=a-a%b; 135 } 136 cout<<a<<"/"<<b<<"="<<" "; 137 cout<<"请输入结果:"; 138 cin>>m; 139 cout<<endl; 140 if(m==a/b) 141 { 142 cout<<"答案正确!"<<endl; 143 i++; 144 } 145 else 146 { 147 cout<<"答案错误,正确答案是:"<<a/b<<endl<<endl;//给出正确答案 148 j++; 149 } 150 } 151 152 void main() 153 { 154 srand((unsigned)time(NULL)); 155 156 int i,m,n,p,q,r; 157 158 cout<<"请输入需要出题数目:"<<endl; 159 cin>>m; 160 161 cout<<"请输入数值范围(0—n):"<<endl; 162 cin>>n; 163 164 cout<<"请选择题目类型:"<<endl<<"0.加减法"<<endl<<"1.加减乘除法"<<endl; 165 cin>>p; 166 167 cout<<"请选择加减法有无负数:"<<endl<<"0.有"<<endl<<"1.无"<<endl; 168 cin>>r; 169 170 if(p==1) 171 { 172 cout<<"请选择除法有无余数:"<<endl<<"0.有"<<endl<<"1.无"<<endl; 173 cin>>q; 174 } 175 176 switch(p) 177 { 178 case 0: 179 for(i=0;i<m;i++) 180 { 181 int a; 182 a=rand()%2; 183 switch(a) 184 { 185 case 0: 186 jia(n); 187 break; 188 case 1: 189 if(r==1) 190 { 191 jianfu(n); 192 } 193 else 194 { 195 jian(n); 196 } 197 break; 198 } 199 } 200 break; 201 case 1: 202 for(i=0;i<m;i++) 203 { 204 int b; 205 b=rand()%4; 206 switch(b) 207 { 208 case 0: 209 jia(n); 210 break; 211 case 1: 212 if(r==1) 213 { 214 jianfu(n); 215 } 216 else 217 { 218 jian(n); 219 } 220 break; 221 case 2: 222 cheng(n); 223 break; 224 case 3: 225 if(q==1) 226 { 227 chuyu(n); 228 } 229 else 230 { 231 chu(n); 232 } 233 break; 234 } 235 } 236 } 237 cout<<"您回答正确的个数是:"<<i-j<<endl; //统计出回答正确的个数 238 cout<<"您回答错误的个数是:"<<j<<endl; //统计出回答错误的个数 239 }
四、截图
五、PSP0级记录