因为使用程序来出题可以为用户带来很大的便捷,使老师在给同学出题时更加方便、快捷、简单。
自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内。
-(1)剔除重复算式。2 + 3 = 和2 + 3 = 是重复算式 2 + 3 = 和3 + 2 = 不属于重复算式
-(2)题目数量可定制
-(3)以下相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
-(4)生成的运算题存储到外部文件result.txt中
我仅使用了主函数来控制整体程序的运行,通过使用循环语句、判断语句,来使自动生成的随机数进行运算以及判断条件是否成立。
-1.题目数量可定制;且判断定制数目是否超过10,超过规定范围显示输入错误。
printf("请输入你要定制的题目数量(最大数量为10):");
scanf("%d",&d);
if(d>10){ //判断输入是否超额
printf("输入错误\n");
return 0;
}
-2.进行是否可以出现包含正负号的随机数
for(i=0;i<d;i++){
if(zf==1){
a[i]=rand()%(2*max+1)-100;
b[i]=rand()%(2*max+1)-100;
}
else{
a[i]=rand()%max;
b[i]=rand()%max;
}
f[i]=rand()%4;
erze[i]=rand()%2;
-3.四则运算输出代码
switch(f[i]){
case 0:c[i]=a[i]+b[i];
if(c[i]<max){
fprintf(fp,"%d+%d=%d\n",a[i],b[i],c[i]);break;}
case 1:c[i]=a[i]-b[i];
if(c[i]<max){
fprintf(fp,"%d-%d=%d\n",a[i],b[i],c[i]);break;}
case 2:c[i]=a[i]*b[i];
if(c[i]<max){
fprintf(fp,"%d*%d=%d\n",a[i],b[i],c[i]);break;}
case 3:c[i]=a[i]/b[i];
if(c[i]<max){
fprintf(fp,"%d/%d=%d\n",a[i],b[i],c[i]);break;}
}
-4.将输出数据导入文本中
FILE *fp;
fp=fopen("result.txt","w");
-5.剔除重复模式
for(j=0;j<i;j++){//剔除重复算式
if(a[i]==a[j]&&b[i]==b[j]&&(f[i]==f[j]||erze[i]==erze[j])){
return 0;
}
在完成的过程中,我总是看一个要求完成一项功能,没有事先将整体构思好,以至于后期改动整个程序完成相关功能的时候很麻烦。此次程序意识到了自己的问题,下次我会努力改进。
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 170 | 240 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 10 |
Development | 开发 | 60 | 100 |
Analysis | 需求分析 (包括学习新技术) | 5 | 5 |
Design | 具体设计 | 15 | 20 |
Coding | 具体编码 | 60 | 120 |
Test | 测试(自我测试,修改代码,提交修改 | 10 | 10 |
reporting | 报告 | 10 | 20 |
原文:https://www.cnblogs.com/980504yuwei/p/11508328.html