首页 > 编程语言 >第七周实验——结对编程

第七周实验——结对编程

时间:2023-04-08 21:35:46浏览次数:29  
标签:结对 第七 int signal 编程 答案 num1

结对编程-四则运算练习题

一、结对成员

2152102 & 2152108

 

二、实验目的

通过两位同学组队用结对编码(一位同学coding,另一个同学在旁边审核代码,之后再交换角色)的方式完成本次实验。本次实验需要设计一个四则运算练习题的随机出题程序,可以通过C/C++/Java/Python等语言进行实现,四则运算练习题需要一或两个运算符,100以内的数字,不需要写答案,但是需要再输入答案之后检查答案是否正确并保证答案在0-100之间。

 

三、实验过程

我们商量后决定使用C语言来实现该程序。首先由我来编程,完成了一个随机出题的程序,可以随机出任意题数的加减乘除的简单运算。程序代码如下:

#include<stdio.h>

int main()
{
int a = 0;
int b = 0;
int mode = 0;
int i = 0;
srand((unsigned)time( NULL ) ); //初始化随机数发生器,使得每次运行生成的随机数不同
for(i=0;i<300;i++)
 {
a = rand() % 100; //生成一个0~99之间的随机数
b = rand() % 100; //生成一个0~99之间的随机数
mode = rand() % 4; //生成一个0~3之间的随机数,代表运算符
printf("%d", a); //打印算式
switch(mode) //确定运算符
{
case 0:
printf("+%d = \n", b );
break;
case 1:
printf("-%d = \n", b );
break;
case 2:
printf("*%d = \n", b );
break;
case 3:
printf("/%d = \n", b );
break;
default:
printf("somethingis wrong!\n");
break;
}
}
return 0;
}

运行截图如下:

随后我们重新分析了一下程序的实现目的,但是无法输入答案并且检查答案是否正确,同时我们发现无法通过修改上一个程序实现检查答案的功能,于是我们重新coding实现程序。最后代码如下:

#include <stdio.h>
#include <ctype.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#define IDNO_LENGTH 6 #define CALC_KIND 4 char getSignal(); int getResult(int,int,char); void takeTest(); void falsePrint(int); void correctPrint(int); //main函数 int main() { while(1) { takeTest(); } } //获取随机运算符 char getSignal() { char signal[CALC_KIND]={'+','-','*','/'}; srand((unsigned)time(NULL)); return signal[rand()%4]; } //获取随机数 int random(double start, double end) { return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0)); } //运算 int getResult(int num1,int num2,char signal) { int res; switch(signal) { case '+': res=num1+num2;break; case '-': res=num1-num2;break; case '*': res=num1*num2;break; case '/': res=num1/num2;break; default: res=0; printf("运算符不符合规则\n"); } return res; } //列出题目 void takeTest() { int giveRes; int num1; int num2; char signal; int printFlag; srand((unsigned)time(NULL)); signal=getSignal(); num1=random(0,100); num2=random(1,100); if(signal=='-') { if(num1<num2) { int temp; temp=num1; num1=num2; num2=temp; } } if(signal=='/') { if(num2==0) { int temp; temp=num1; num1=num2; num2=temp; } } printf("%d%c%d=",num1,signal,num2); scanf("%d",&giveRes); fflush(stdin); if(getResult(num1,num2,signal)==giveRes) { printFlag=random(1,5); correctPrint(printFlag); } else { printFlag=random(1,4); falsePrint(printFlag); printf("正确答案:%d\n",getResult(num1,num2,signal)); } } //回答正确打印信息 void correctPrint(int num) { switch(num) { case 1: printf("You're right!\n");break; case 2: printf("It's OK!\n");break; case 3: printf("Correct!\n");break; case 4: printf("Perfect!\n");break; case 5: printf("Good!\n");break; default: printf("Powerful!\n");break; } } //回答错误打印信息 void falsePrint(int num) { switch(num) { case 1: printf("You're lost!");break; case 2: printf("Failure!");break; case 3: printf("Come on!");break; case 4: printf("It's wrong!");break; default: printf("Incorrect!");break; } }

 

四、运行截图

1、开始运行:程序给出第一题,输入答案后检查确认答案是否正确,若正确,显示下一题;若答案错误,会给出正确答案,然后显示下一题:

 

2、连续做题:

 

五、结对编程过程

在老师提到需要我们结对编程的时候,我们的内心都是很担忧的,毕竟之前都是个人编程,从未有过同伴在旁边观看,自己在这边编程的经验。
两人确定好先后编程的顺序后,出现了小A编程,小B在旁边观看的场景:
因为小B在旁观看,小A迅速进入状态,编程手速飞快。
小B:“你这边写错了,这里是随机数。”
小A:“你别吵我,我知道怎么写随机数!”
小B:“写随机数是不是缺头文件了?”
小A:“你不说我还忘了,补上了!”
小A马上写完了一份生成随机四则运算的程序,小B:“我们的程序如果能指定每一次出多少道题是不是更完美?毕竟小学生,一下指定写三百道题很费时间。”
小A:“好的,马上。”
程序出来后,功能完全实现,但是小B皱眉,说:“你写的这个程序好像只能出题,不能检查答案的正确与否?这就不能对答案了,你咋知道自己写对写错啊,为了减轻老师的工作量,我们是不是要写那种边写边检查的计算器啊?”
小A:“正好,我俩角色交换一下,我看看你怎么实现?”
小B:“好!”
小B输入:#include…,小A:“怎么不写了?”
小B挠头:“我忘记C语言头文件咋写了,哭泣。”
小A:“我俩半斤八两,你还搁那嫌弃我!你再回忆回忆,这可不能忘,我绝不提醒……”
小B灵光一现,突然想起来,赶快写上去:“我说我只是突然一下子忘记了而已!”
顺顺利利编完程序,实现随机四则运算,并且有输入答案,检查答案功能,而且为了增加小朋友四则运算的趣味性,在程序进行答案核对后给予小朋友鼓励!
两个程序都在很短时间内就编出来了。
小A感叹:“你在我边上叽哩哇啦的像个监工一样,我必须得快!”
小B:“那是,咱俩谁也不服谁,这不正好相互促进了吗?”
小A与小B相视一笑,结对编程顺利落下帷幕,但是小A和小B感受到了结对编程的乐趣和效率,决定隔段时间就一起编程,相互促进。

 

六、实验总结

由于编程习惯的不同,因此在修改bug和程序运行时产生的错误时会有一定的困难,有重复阅读理解代码的过程,但这也提高了理解代码的能力和熟练度。

在效率上代码的正确性和紧凑度上,由于个人编程习惯的不同,这也会提供更多的编程逻辑上的思路,结对编程的优点是显而易见的。结对编程可以促进参与项目的程序员自身的提高,可以互相学习,打开思路,提高效率。

标签:结对,第七,int,signal,编程,答案,num1
From: https://www.cnblogs.com/yhedon1stic/p/17294828.html

相关文章

  • 结对编程--随机四则运算生产
    在本次作业中,与我一同搭档完成结对编程的同学学号为2152434。在讨论后,我们决定基于c++进行本次程序开发。在该系统中,如何产生随机数及使用随机数产生随机符号为开发关键点。以下为程序部分代码展示:    而输出结果如下:  实验体会:结对编程中最重要的是调......
  • 分析以下数字的规律1 1 2 3 5 8 13 21用Python语言编程实现输出,此为斐波那契数列
    方法一:list1=[]#定义一个空列表foriinrange(15):#遍历语句循环15次ifi==0ori==1:#前两个数字的值都是1list1.append(1)#print(list1)else:list1.append(list1[i-1]+list1[i-2])print(list1)方法二:list1=[1,......
  • 前端笔试遇到的两个编程题
    倒计时:在倒计时不超过一天的代码varhour=document.querySelector(".hour");  varminute=document.querySelector(".minute");  varsecond=document.querySelector(".second");//截止的时间  varinputTime=+newDate("2023-4-0820:0......
  • Python 进阶指南(编程轻松进阶):十四、实践项目
    原文:http://inventwithpython.com/beyond/chapter14.html到目前为止,这本书已经教会了你编写可读的Python风格代码的技巧。让我们通过查看两个命令行游戏的源代码来实践这些技术:汉诺塔和四人一排。这些项目很短,并且基于文本,以保持它们的范围较小,但是它们展示了本书到目前为......
  • Python 进阶指南(编程轻松进阶):十七、Python 风格 OOP:属性和魔术方法
    原文:http://inventwithpython.com/beyond/chapter17.html很多语言都有OOP特性,但是Python有一些独特的OOP特性,包括属性和魔术方法。学习如何使用这些Python风格技巧可以帮助您编写简洁易读的代码。属性允许您在每次读取、修改或删除对象的属性时运行一些特定的代码,以......
  • Python 进阶指南(编程轻松进阶):七、编程术语
    原文:http://inventwithpython.com/beyond/chapter7.html在XKCD漫画《飞人五号》(xkcd.com/1133)中,网络漫画的艺术家兰道尔·门罗只用了1000个最常见的英语单词,就创作出了土星五号火箭的技术示意图。这部漫画把所有的技术术语分解成小孩子能理解的句子。但这也说明了为什么我......
  • Python 进阶指南(编程轻松进阶):八、常见的 Python 陷阱
    原文:http://inventwithpython.com/beyond/chapter8.html虽然Python是我最喜欢的编程语言,但它也不是没有缺陷。每种语言都有缺点(有些比其他的多),Python也不例外。新的Python程序员必须学会避免一些常见的“陷阱”程序员学习这类知识是随机的,来自经验,但本章把它收集在一个地......
  • Python 进阶指南(编程轻松进阶):九、深奥的 Python 怪现象
    原文:http://inventwithpython.com/beyond/chapter9.html定义编程语言的规则系统是复杂的,并且可能导致代码,尽管没有错,但是非常奇怪和不可预料。这一章深入探讨了更难理解的Python语言的奇特之处。您不太可能在现实世界的编码中遇到这些情况,但是它们是Python语法的有趣用法(......
  • Python 进阶指南(编程轻松进阶):十、编写高效函数
    原文:http://inventwithpython.com/beyond/chapter10.html函数就像程序中的迷你程序,允许我们将代码分解成更小的单元。这使我们不必编写重复的代码,因为重复的代码会引入错误。但是编写有效的函数需要做出许多关于命名、大小、参数和复杂性的决定。这一章探索了我们编写函数的......
  • Python 进阶指南(编程轻松进阶):十一、注释、文档字符串和类型提示
    原文:http://inventwithpython.com/beyond/chapter11.html源代码中的注释和文档可能和代码一样重要。原因是软件是永远不会完成的;无论是添加新功能还是修复错误,您总是需要做出改变。但是你不能改变代码,除非你理解它,所以保持它可读是很重要的。正如计算机科学家哈罗德·艾贝尔森......