题目:让程序能接受用户输入答案,并判定对错。最后给出总共对/错 的数量。
一、设计思想
1.存储用户输入答案,与正确答案比较得出总共对错数量。
二、源程序代码
1 #include<iostream.h> 2 #include<stdlib.h> 3 #include "time.h" 4 #include<stdio.h> 5 int main () 6 { 7 int a,b,c,f,j,i,t,num,l,jj,cc,fw;//i,j,t是计数变量,a,b是运算数。 8 int r=0;//正确数目。 9 int e=0;//错误数目。 10 char daan; 11 cout<<"-----------------四则运算题----------------------"<<endl; 12 cout<<endl; 13 srand( (unsigned)time( NULL ) );//随机数种子为当前计算机时间。 14 cout<<"*************请填写题目要求:********************"<<endl; 15 cout<<"* *"<<endl; 16 cout<<"* 1.请输入要生成题目数num: *"<<endl;//选择题目数量。 17 cout<<"* 2.请输入打印方式(列数l、行间距jj): *"<<endl;//选择打印方式。 18 cout<<"* 3.请选择有无乘除法cc(1代表有或0代表无): *"<<endl;//有无乘除法。 19 cout<<"* 4.请选择数的范围fw(fw是指该范围内最大的数): *"<<endl;//选择数的范围。 20 cout<<"* 5.请选择除法有无余数c(1代表有或0代表无): *"<<endl;//选择除法有无余数。 21 cout<<"* 6.请选择加减有无负数f(1代表有或0代表无): *"<<endl;//选择加减有无负数。 22 cout<<"* *"<<endl; 23 cout<<"*************************************************"<<endl; 24 cout<<"请输入要生成题目数num:"<<endl; 25 cin>>num; 26 int a1[100000];//存储用户输入答案。 27 int b1[100000];//正确答案。 28 if(num<0) 29 { 30 cout<<"错了! 亲! 题目数量不能小于0,请重输:"; 31 cin>>num; 32 } 33 cout<<"请输入打印方式 (列数l):"<<endl; 34 cin>>l; 35 if(l<=0) 36 { 37 cout<<"错了! 亲! 列数不能小于等于0,请重输:"; 38 cin>>l; 39 } 40 cout<<"请输入打印方式 (行间距jj):"<<endl; 41 cin>>jj; 42 if(jj<=0) 43 { 44 cout<<"错了! 亲! 行间距不能小于等于0,请重输:"; 45 cin>>jj; 46 } 47 cout<<"请选择有无乘除法cc(1代表有或0代表无): "<<endl; 48 cin>>cc; 49 if(cc!=0&&cc!=1) 50 { 51 cout<<"错了! 亲! 请重输:"; 52 cin>>cc; 53 } 54 cout<<"请选择数的范围fw(fw是指该范围内最大的数):"<<endl; 55 cin>>fw; 56 cout<<"请选择除法有无余数c(1代表有或0代表无):"<<endl; 57 cin>>c; 58 if(c!=0&&c!=1) 59 { 60 cout<<"错了! 亲! 请重输:"; 61 cin>>c; 62 } 63 cout<<"请选择加减有无负数f(1代表有或0代表无):"<<endl; 64 cin>>f; 65 if(f!=0&&f!=1) 66 { 67 cout<<"错了! 亲! 请重输:"; 68 cin>>f; 69 } 70 cout<<endl; 71 if(cc==1) 72 cc=cc+3; 73 else 74 cc=cc+2; 75 for(j=0;j<num;j++) 76 { 77 //产生随机数。 78 a=rand()%fw; 79 b=rand()%fw+1;//保证除数不为0。 80 i=rand()%cc; 81 cout<<"<"<<j+1<<">: "; 82 switch(i) 83 { 84 case 0: 85 cout<<a<<"+"<<b<<"="; 86 b1[j]=a+b; 87 break; 88 case 1: 89 if(f==0&&a<=b) 90 { 91 cout<<b<<"-"<<a<<"="; 92 b1[j]=b-a; 93 } 94 else 95 { 96 cout<<a<<"-"<<b<<"="; 97 b1[j]=a-b; 98 } 99 break; 100 case 2: 101 cout<<a<<"*"<<b<<"="; 102 b1[j]=a*b; 103 break; 104 case 3: 105 if(a%b!=0&&c==0) 106 { 107 cout<<a-a%b<<"/"<<b<<"="; 108 b1[j]=(a-a%b)/b; 109 } 110 else 111 { 112 cout<<a<<"/"<<b<<"="; 113 b1[j]=a/b; 114 } 115 break; 116 } 117 cin>>a1[j]; 118 if(j%l==l-1) 119 { 120 for(t=0;t<jj;t++) 121 cout<<endl; 122 } 123 } 124 cout<<endl; 125 for(j=0;j<num;j++) 126 { 127 if(b1[j]==a1[j]) 128 r++; 129 else 130 e++; 131 } 132 cout<<"恭喜你做对了"<<r<<"道题目"<<endl; 133 cout<<"是否输出正确答案:(Y/N)"; 134 cin>>daan; 135 if(daan=='Y') 136 for(j=0;j<num;j++) 137 { 138 cout<<"<"<<j+1<<">: "<<b1[j]<<endl; 139 } 140 141 return 0; 142 }
三、运行截图
四、实验心得
以前写代码不注意添加{}导致修改错误
如:
case 1:
89 if(f==0&&a<=b)
90
91 cout<<b<<"-"<<a<<"=";
92 b1[j]=b-a;
93
94 else
95
习惯真的很重要,设计中出现了逻辑错误,通过测试用例 得到解决。
五、PSP0级 记录表
周活动记录总表
姓名:董龙洋 日期:2015.3.21
日期/任务 |
听课 |
编程 |
阅读 |
准备考试 |
日总计 |
||
周日 |
|||||||
周一 |
|||||||
周二 |
20 |
||||||
周三 |
|||||||
周四 |
75 |
||||||
周五 |
50 |
||||||
周六 |
125 |
||||||
周总结 |
270 |
阶段时间和效率 周数(上一次周活动表的周数+1):1
不包括上一周在内的累计时间
总计 |
|||||||
平均 |
|||||||
最大 |
|||||||
最小 |
以前各周的累积时间
时间记录表:
学生:董龙洋 日期:2015.3.21
教师:王建民 课程:psp
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
3.17 |
9:30 |
9:50 |
0 |
20 |
课堂练习 |
|
3.19 |
16:05 |
19:20 |
60 |
75 |
四则运算 |
吃饭一小时 |
3.20 |
9;20 |
9:55 |
0 |
35 |
课堂练习 |
|
3.21 |
18:23 |
20:03 |
0 |
100 |
四则运算 |
|
缺陷记录日志:
学生:董龙洋
日期:2015.3.21
教师:王建民
程序员:
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
3.20 |
1 |
写代码 |
编译 |
2min |
||
3.21 |
2 |
写代码 |
执行 |
30min |
逻辑错误 |
|