目录

  • 结对对象
  • 任务要求
  • 分工说明
  • 设计思路
  • 遇到的问题
  • 源代码
  • 运行成果
  • 总结

结对对象

  • 姓名:   侯熙磊
  • 班级:  土1603-1班、
  • 学号:  20160672

  • 简介: 性别男。爱好下象棋,踢足球。在组内负责程序修改和测试,一般都是有很多BUG的,还要改进一下,显得更加美观。
  • 姓名:   黄睿麒
  • 班级:  土1603-1班、
  • 学号:  20160697

  • 简介:性别男,爱好女。性格随性洒脱,追求自由。常常会想到一些骚主意去结决问题,应变能力尚好。擅长摸鱼。

任务要求

  • 实现在线答题。
  • 答题结束后,可以判断对错。
  • 并将错题的结果保存起来。

分工说明

  • 黄睿麒:前期大部分代码的编写,中期文件处理的代码实现,后期软件图标的设计,解决了负数和正负数计算分开问题、将答题过程导出保存TXT文件、统计错题给出百分制分数的及格和不及格问题。总贡献:55%
  • 侯熙磊:前期小部分代码的编写文件处理和测试类的思路提供,后期修改和完善代码内容和规范。提供了两个数运算时正负时除数不为零的代码;测试代码和选择正数运算时,除法有负数的BUG修复;测试代码和BUG提出和修改。总贡献:45%

设计思路

     本次实验运用选择和循环将运算分开简化。首先将所需四则运算中的负数分割出来,运用switch和case进行选择。在生成随机数时运用srand配合rand()生成真随机数,和运算符号。出题和答案则使用if选择和for循环进行这次难点在我看来是在将数据输出上,运用fprintf()函数将所需结果导入到txt格式文件中。

源代码

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <time.h>
  4 int main()
  5  {
  6     FILE *fpt;
  7     fpt = fopen("四则运算.txt","w");
  8     fprintf(fpt,"四则运算在线答题错题记录\n");
  9     int k,n,m,i,s,j,g,h;
 10     n=5;
 11     float score=0;
 12     int a,b;
 13     int answers[1000]={0},user_answer[1000]={0};
 14     a=0;
 15     b=0;
 16     printf("\n请输入数字类型(1.正数 2.正负数) -1或其他数字为退出程序: ");
 17     scanf("%d",&h);
 18     fprintf(fpt,"\n请输入数字类型(1.正数 2.正负数) -1或其他数字为退出程序:  %d ",h);
 19
 20
 21     switch(h)
 22     {
 23     case 1:
 24         {
 25             printf("请输入题目数(1-1000)");
 26             scanf("%d",&k);
 27             if (k<1||k>1000)
 28             {
 29                 printf("\n超出允许范围\n");
 30                 printf("请再次输入题目数\n");
 31                 scanf("%d",&k);
 32             }
 33             printf("请选择出题方式:0.加法 1.减法 2.乘法 3.除法 4.随机\n");
 34             scanf("%d",&m);
 35             if (m<0||m>4)
 36             {
 37                 printf("\n出题方式选择错误\n");
 38                 printf("请再次输入出题方式前序号\n");
 39                 scanf("%d",&m);
 40             }
 41             printf("\n********************开始答题************************\n");
 42             fprintf(fpt,"\n********************开始答题************************\n");
 43             srand((int)time(0));
 44             for (i=0;i<k;i++)
 45             {
 46                 a=rand()%100;
 47                 b=rand()%100;
 48                 while(a<-100||a>100||b<-100||b>100)
 49                 {
 50                     a=rand()%201-100;
 51                     b=rand()%201-100;
 52                 }
 53                 a=a;
 54                 b=b;
 55                 if(m==4)
 56                     n=rand()%4;
 57                 if (m==0||n==0)
 58                 {
 59                     printf("\n第%d题:%d+%d=",i+1,a,b);
 60                     fprintf(fpt,"\n第%d题:%d+%d=",i+1,a,b);
 61                     scanf("%d",&user_answer[i]);
 62                     answers[i]=a+b;
 63                 }
 64                 if (m==1||n==1)
 65                 {
 66                     if (a>b)
 67                     {
 68                         printf("\n第%d题:%d-%d=",i+1,a,b);
 69                         fprintf(fpt,"\n第%d题:%d-%d=",i+1,a,b);
 70                         scanf("%d",&user_answer[i]);
 71                         answers[i]=a-b;
 72                     }
 73                     else
 74                     {
 75                         printf("\n第%d题:%d-%d=",i+1,b,a);
 76                         fprintf(fpt,"\n第%d题:%d-%d=",i+1,b,a);
 77                         scanf("%d",&user_answer[i]);
 78                         answers[i]=b-a;
 79                     }
 80                 }
 81                 if (m==2||n==2)
 82                 {
 83                     printf("\n第%d题:%d*%d=",i+1,a,b);
 84                     fprintf(fpt,"\n第%d题:%d*%d=",i+1,a,b);
 85                     scanf("%d",&user_answer[i]);
 86                     answers[i]=a*b;
 87                 }
 88                 if (m==3||n==3)
 89                 {
 90                     s=a*b;
 91                     while(s<-100||s>100||a==0)
 92                     {
 93                         a=rand()%100;
 94                         b=rand()%100;
 95                         s=a*b;
 96                     }
 97                     printf("\n第%d题:%d/%d=",i+1,s,a);
 98                     fprintf(fpt,"\n第%d题:%d/%d=",i+1,s,a);
 99                     scanf("%d",&user_answer[i]);
100                     answers[i]=s/a;
101                 }
102             }
103             printf("\n答题结果和正确答案:\n");
104             fprintf(fpt,"\n答题结果和正确答案:\n");
105             for (i=0;i<k;i++)
106             {
107                 if (user_answer[i]==answers[i])
108                 {
109                     printf("%d:正确 %d\n",i+1,answers[i]);
110                     fprintf(fpt,"%d:正确 %d\n",i+1,answers[i]);
111                     score++;
112                 }
113                 else printf("%d:错误 %d\n",i+1,answers[i]);
114                 fprintf(fpt,"%d:错误 %d\n",i+1,answers[i]);
115             }
116             score=100*score/k;
117             printf("\n总得分(百分制):%f\n",score);
118             fprintf(fpt,"\n总得分(百分制):%f\n",score);
119             if (score<60) {printf("很遗憾!你的分数不及格,继续努力\n");
120             fprintf(fpt,"很遗憾!你的分数不及格,继续努力\n");
121             }
122             else
123             {
124                 printf("恭喜!你的成绩合格\n");
125                 fprintf(fpt,"恭喜!你的成绩合格\n");
126             }
127             printf("*****************************************************\n");
128             fprintf(fpt,"*****************************************************\n");
129             fclose(fpt);
130             printf("继续答题请输入任意数字\n结束请点击右上角关闭程序\n");
131             scanf("%d",&g);
132             return main();
133 }
134 case 2:
135     {
136         printf("请输入题目数(1-1000)");
137         scanf("%d",&k);
138         if (k<1||k>1000)
139         {
140             printf("\n超出允许范围\n");
141             printf("请再次输入题目数\n");
142             scanf("%d",&k);
143         }
144         printf("请选择出题方式:0.加法 1.减法 2.乘法 3.除法 4.随机\n");
145         scanf("%d",&m);
146         if (m<0||m>4)
147         {
148             printf("\n出题方式选择错误\n");
149             printf("请再次输入出题方式前序号\n");
150             scanf("%d",&m);
151         }
152         printf("\n********************开始答题************************\n");
153         fprintf(fpt,"\n********************开始答题************************\n");
154         srand((int)time(0));
155         for (i=0;i<k;i++)
156         {
157             a=rand()%201-100;
158             b=rand()%201-100;
159             while(a<-100||a>100||b<-100||b>100)
160             {
161                 a=rand()%201-100;
162                 b=rand()%201-100;
163             }
164             a=a;
165             b=b;
166             if(m==4)
167                 n=rand()%4;
168             if (m==0||n==0)
169             {
170                 printf("\n第%d题:%d+%d=",i+1,a,b);
171                 fprintf(fpt,"\n第%d题:%d+%d=",i+1,a,b);
172                 scanf("%d",&user_answer[i]);
173                 answers[i]=a+b;
174             }
175             if (m==1||n==1)
176             {
177                 if (a>b)
178                 {
179                     printf("\n第%d题:%d-%d=",i+1,a,b);
180                     fprintf(fpt,"\n第%d题:%d-%d=",i+1,a,b);
181                     scanf("%d",&user_answer[i]);
182                     answers[i]=a-b;
183                 }
184                 else
185                 {
186                     printf("\n第%d题:%d-%d=",i+1,b,a);
187                     fprintf(fpt,"\n第%d题:%d-%d=",i+1,b,a);
188                     scanf("%d",&user_answer[i]);
189                     answers[i]=b-a;
190                 }
191             }
192             if (m==2||n==2)
193             {
194                 printf("\n第%d题:%d*%d=",i+1,a,b);
195                 fprintf(fpt,"\n第%d题:%d*%d=",i+1,a,b);
196                 scanf("%d",&user_answer[i]);
197                 answers[i]=a*b;
198             }
199             if (m==3||n==3)
200             {
201                 s=a*b;
202                 while(s<-100||s>100||a==0)
203                 {
204                     a=rand()%201-100;
205                     b=rand()%201-100;
206                     s=a*b;
207                 }
208                 printf("\n第%d题:%d/%d=",i+1,s,a);
209                 fprintf(fpt,"\n第%d题:%d/%d=",i+1,s,a);
210                 scanf("%d",&user_answer[i]);
211                 answers[i]=s/a;
212             }
213         }
214         printf("\n答题结果和正确答案:\n");
215         fprintf(fpt,"\n答题结果和正确答案:\n");
216         for (i=0;i<k;i++)
217         {
218             if (user_answer[i]==answers[i])
219             {
220                 printf("%d:正确 %d\n",i+1,answers[i]);
221                 fprintf(fpt,"%d:正确 %d\n",i+1,answers[i]);
222                 score++;
223             }
224             else printf("%d:错误 %d\n",i+1,answers[i]);
225             fprintf(fpt,"%d:错误 %d\n",i+1,answers[i]);
226         }
227         score=100*score/k;
228         printf("\n总得分(百分制):%f\n",score);
229         fprintf(fpt,"\n总得分(百分制):%f\n",score);
230         if (score<60) {printf("很遗憾!你的分数不及格,继续努力\n");
231         fprintf(fpt,"很遗憾!你的分数不及格,继续努力\n");
232         }
233         else
234         {
235             printf("恭喜!你的成绩合格\n");
236             fprintf(fpt,"恭喜!你的成绩合格\n");
237         }
238         printf("*****************************************************\n");
239         fprintf(fpt,"*****************************************************\n");
240         fclose(fpt);
241         printf("继续答题请输入任意数字\n结束请点击右上角关闭程序\n");
242         scanf("%d",&g);
243         return main();
244      }
245      while(h!=-1);
246 }
247 }

遇到的问题

     本程序在刚开始调试时有许多错误,出现过不能运行、不能随机出现四则运算、不会输出正确结果、选择乘法却出现减法等等问题。耗费时间最多是在于运用fprintf函数上,之前没使用过用的时候就抓麻了。在生成随机数的时侯

最开始忘记使用srand函数,导致出的题目每次都是一样的也就是伪随机数,最后百度上查到原因和解决方法才改好。

运行结果

     

总结

      写程序时必须要细心,不能输错一个字符标点。在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。这次代码编写在反反复复检查排错修改中给了手残的我很大的教训。

转载于:https://www.cnblogs.com/H2O2/p/9918024.html

四则运算 3.0 结对相关推荐

  1. 全国小学四则运算1.0

    程序:全国小学四则运算1.0 源代码: import javax.swing.*; import java.awt.*; import java.awt.event.*; //一开始的界面 publi ...

  2. 0406复利计算6.0 结对:列志华,韩麒麟

    0406复利计算6.0 结对:列志华,韩麒麟 一.主要功能与需求分析 1.本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,00 ...

  3. 结对子作业 四则运算 V2.0

    #include<stdio.h> #include<stdlib.h> #include<time.h> int cc,i,n,z;//操作数 int count ...

  4. 复利计算5.0——结对(总结)

    结对同伴: 名字:丘惠敏 学号:201406114204 博客地址:http://home.cnblogs.com/u/qiuhuimin/ 一.项目简介 开发工具:VC++ 开发语言:C语言 主要功 ...

  5. 二柱子四则运算2.0版本

    支持真分数的四则运算 可以自定义题目数量 源代码: 1 #include<stdio.h> 2 #include<iostream> 3 #include<time.h& ...

  6. 复利计算5.0 结对

    项目需求: 即要追求利益,又要面对不可预知的金融投资风险, "不能把鸡蛋放在同一个篮子里",所以有必要进行组合投资. 通过上述计算与对比,可以帮助客户进行投资决策. 客户:那么能否 ...

  7. 四则运算网页版--结对项目

    前言: 这次项目是用前后台分离,后台代码由servlet编写.项目部署于我的个人服务器. github仓库地址https://github.com/LeonP3ng/CalculateWeb.git ...

  8. 四则运算2.0版程序

    一.程序的设计思想: 将之前的1.0版程序改写为网页版. 二.源程序代码: welcom.jsp(欢迎界面) <%@ page language="java" content ...

  9. 张天钰 内大计算机学院,20175305张天钰Java结对编程四则运算

    Java结对编程四则运算 一.题目描述:如何对表达式进行求值运算呢 1.中缀表达式与后缀表达式(娄老师讲解) 中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运 ...

最新文章

  1. 微信小程序填坑之路(三):布局适配方案(rpx、px、vw、vh)
  2. workaround for COM_ATTRFRG_GEN 066
  3. show status like “table%“ 分析mysql表锁定
  4. python list remove_python list有关remove的问题
  5. arcmap shp导出cad无反应_软件技巧如何利用OSM提取场地CAD以及LANDUSE属性
  6. matlab中diamond,my-DIAMOND 经典的莫泰识别分析软件 ,在matlab平台下 238万源代码下载- www.pudn.com...
  7. 传智播客黑马Java学习笔记_day07
  8. 小游戏开发 手机QQ 微信 浏览器 扫码 Debug 调试输出 查看日志
  9. 十年互联网,十个风云人物——历史会记住他们!
  10. 第四天(打造离线下载服务器)
  11. java ee 7精粹_Java EE 7精粹 ([美]Arun Gupta) 中文pdf扫描版[68MB]
  12. 汉明码纠错java_汉明码纠错的基本原理及优化解决方案
  13. H.264中NALU、RBSP、SODB的关系 (弄清码流结构)
  14. php1000以内菲波,菲波纳奇交易:如何掌握时间与价格优势 Fibonacci Trading
  15. 最优化算法的简单基础介绍(主要侧重于二次规划(QP)的问题优化)
  16. 【序列化类Serializer】
  17. 最全的运营数据指标解读
  18. macOS 11+ Big Sur SIP 禁用部分项方法
  19. 绘制镇街区域的Echarts地图
  20. 项目数据表中的并发控制机制之version

热门文章

  1. 马斯克晒特斯拉Autopilot疯狂驾驶模式,称还要开发“极速惊魂”模式
  2. 巴菲特评科技股:投资 IBM 是个错误,还会增持苹果,亚马逊简直是奇迹
  3. 3行代码写出8个接口,开挂了?
  4. 为什么不推荐使用BeanUtils属性转换工具
  5. 日志排查问题困难?分布式日志链路跟踪来帮你
  6. Linus 谈 Git 的设计思想,顺带骂了一堆人(视频)
  7. 漫画:什么是 HTTPS 协议?
  8. Java并发编程73道面试题及答案——稳了
  9. 科研指导:深度学习的应用研究课程
  10. 从小乡村走出的985高校博导坦言:读书这条路最简单!