首页 > 其他分享 >第八周实验

第八周实验

时间:2024-04-21 18:56:19浏览次数:17  
标签:oper 运算 temp int 编程 第八 num 实验

与2252309合作结对编程

四则混合运算
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int score=0;

int add(int a,int b)
{
	int c=a+b;
	if(c<1000) return c;
	else return -1;
}

int substract(int a,int b)
{
	int c=a-b;
	if(c>=0&&c<=1000) return c;
	else return -1; 
}

int multify(int a,int b)
{
	int c=a*b;
	if(c<1000) return c;
	else return -1;
}

int divide(int a,int b)
{
	int c=a/b;
	if(a%b==0&&b!=0) return c;
	else return -1;
}

int rand_num()
{
	int num;
	srand((unsigned)time(NULL) + (unsigned)rand());//初始化随机数种子
	num=rand()%100;//生成一百以内的随机数
	return num;
}

void menu()
{
	printf("四则混合运算游戏\n");
	printf("目前您的积分是%d\n",score);
	printf("1、进行游戏  2、退出游戏\n");
	printf("请选择:");
}

void menu_()
{
	printf("----------------\n");
	printf("1、加法(+)\n");
	printf("2、减法(-)\n");
	printf("3、乘法(*)\n");
	printf("4、除法(/)\n");
	printf("请选择两个运算符:");
}

void play()
{
	int i,j;
	int oper[2];//运算符
	int num[5];//运算数字
	int answer;//答案
	menu_();
	scanf("%d %d",&oper[0],&oper[1]);
	if((oper[0]<=2&&oper[1]<=2)||(oper[0]>=3&&oper[1]>=3)){
	//同一级别运算
		j=0;
		for(i=0;i<=2;i=i+2){
			if(i==0) num[i]=rand_num();
			num[i+1]=rand_num();
			switch(oper[j++])
			{
				case 1:num[i+2]=add(num[i],num[i+1]);break;
				case 2:num[i+2]=substract(num[i],num[i+1]);break;
				case 3:num[i+2]=multify(num[i],num[i+1]);break;
				case 4:num[i+2]=divide(num[i],num[i+1]);break;
			}
			if(num[i+2]<0||num[i+2]>100) {
			//重置
				i=i-2;
				j=j-1;
			}
		}
	}
	else{
	//不同一级别运算
	//先乘除,后加减
		int temp,flag=0;
		if(oper[0]<=2&&oper[1]>=3){
			temp=oper[1];oper[1]=oper[0];oper[0]=temp;
			flag=1;
		}
		
		j=0;
		for(i=0;i<=2;i=i+2){
			if(i==0) num[i]=rand_num();
			num[i+1]=rand_num();
			switch(oper[j++])
			{
				case 1:num[i+2]=add(num[i],num[i+1]);break;
				case 2:{
					if(flag==1&&i==2) num[i+2]=substract(num[i+1],num[i]);
					else num[i+2]=substract(num[i],num[i+1]);
					break;
				}
				case 3:num[i+2]=multify(num[i],num[i+1]);break;
				case 4:num[i+2]=divide(num[i],num[i+1]);break;
			}
			if(num[i+2]<0||num[i+2]>100) {
			//重置
				i=i-2;
				j=j-1;
			}
		}
		
		if(flag==1){
			temp=oper[1];oper[1]=oper[0];oper[0]=temp;//交换运算符
			temp=num[3];num[3]=num[1];num[1]=num[0];num[0]=temp;//交换数字
		}
	}
	
	char OPER[2];
	for(i=0;i<=1;i++){
		switch(oper[i])
		{
			case 1:OPER[i]='+';break;
			case 2:OPER[i]='-';break;
			case 3:OPER[i]='*';break;
			case 4:OPER[i]='/';break;
		}
	}
	
	printf("请计算:%d %c %d %c %d =",num[0],OPER[0],num[1],OPER[1],num[3]);
	scanf("%d",&answer);
	if(answer==num[4]){
		score++;
		printf("回答正确,您当前积分为:%d\n",score);
	}
	else{
		if(score==0) score++;
		score--;
		printf("回答错误,正确答案为%d,您当前积分为:%d\n",num[4],score);
	}
	system("pause");
	system("cls");
}

int main()
{
	int X;
	while(1)
	{
		menu();
		scanf("%d",&X);
		switch(X){
			case 1:play();break;
			case 2:printf("您已成功退出游戏\n");
					 return 0;
		}
		system("cls");
	}
}
2. 运行结果
  • 初始界面

  • 同级运算

  • 不同级运算

  • 计算错误

  • 退出游戏

  1. 实验体会
    在具体编程中要注意细节,如积分不可以是负数,故当积分为0时不会减1;在不同级别的运算中要注意运算顺序,要秉持先乘除后加减的原则;除数不能为零这一数学原则问题;还有考虑到小学计算难度,本游戏中的运算都是大于0且小于100的自然数运算等等。
    结对编程的好处就在于此,一个人专心编程的同时另一个人就更能注意到这些细节处的问题。由于每个人的思考方式都有所差异,所以对于同一问题就有不同的解决方式,我们可以在比较之后选择更适用于实际情况的方式。同时结对编程也是个实时性的过程,边编写边检查边边反馈边交流,这能大大提升编程效率。不用为了一些常识性的语法小错误而寻找困惑,也不用担心在大致框架上出错,对于两个人的结对编程来说这是能保证的基本优势。结对编程还能参考学习别人的编程方式,对锻炼我们的代码风格和代码阅读能力有极大的好处。

标签:oper,运算,temp,int,编程,第八,num,实验
From: https://www.cnblogs.com/lijin-001/p/18149325

相关文章

  • C语言程序设计-实验报告6
    实验项目名称:实验6循环结构程序设计(for语句的应用)实验项目类型:验证性实验日期:2024年4月15日一、实验目的1.熟练掌握三种循环语句并能正确运用;2.能够用循环实现一些常用算法,如穷举法,迭代法,递推法等;3.进一步学习程序调试;4.了解中国算法,百钱买百鸡。二、实验硬、软件环境......
  • C语言程序设计-实验报告5
    实验项目名称:实验5循环结构程序设计(while、do-while语句的应用)实验项目类型:验证性实验日期:2024年4月11日一、实验目的1.熟练掌握三种循环语句并能正确运用;2.能够用循环实现一些常用算法,如穷举法,迭代法,递推法等;3.进一步学习程序调试;4.了解中国算法,百钱买百鸡。二、实验......
  • 数据库原理第一次实验报告
    目录任务一:(数据库CAP)12345任务二:(数据库GlobalToyz)1234567891011121314151617181920写在最后数据库原理第一次实验报告任务一:(数据库CAP)1创建数据库CAP,包含4张表Customers、Products、Agents和Orders。UseMaster;CREATEDatabaseCAP;UseCAP;CREATETABLECUSTOMERS(......
  • 实验报告5 6
    ......
  • 实验报告5
    项目一解题思路核心代码#include<stdio.h>intmain(){inti,n,s=0;printf("******************\n");printf("06杨雪辉\n");printf("******************\n");i=1;scanf("%d",&n);while(i<=n){s=i+s;......
  • c语言程序设计——实验报告六
    实验项目名称:实验6循环结构程序设计(for语句的应用)实验项目类型:验证性实验日期:2024年4月15日一、实验目的1.熟练掌握三种循环语句并能正确运用;2.能够用循环实现一些常用算法,如穷举法,迭代法,递推法等;3.进一步学习程序调试;4.了解中国算法,百钱买百鸡。二、实验硬、软件环境W......
  • c语言程序设计——实验报告五
    实验项目名称:实验5循环结构程序设计(while、do-while语句的应用)实验项目类型:验证性实验日期:2024年4月11日一、实验目的1.熟练掌握三种循环语句并能正确运用;2.能够用循环实现一些常用算法,如穷举法,迭代法,递推法等;3.进一步学习程序调试;4.了解中国算法,百钱买百鸡。二、实验......
  • 32天【代码随想录算法训练营34期】第八章 贪心算法 part02 (● 122.买卖股票的最佳时
    122.买卖股票的最佳时机IIclassSolution:defmaxProfit(self,prices:List[int])->int:result=0foriinrange(len(prices)-1):ifprices[i+1]-prices[i]>0:result+=prices[i+1]-prices[i]return......
  • 实验二
    一、实验题目:需求分析二、实验目的1、掌握StarUML软件的安装;2、掌握利用StarUML工具分析、设计、绘制用例图;3、掌握利用StarUML工具分析、设计、绘制类图;4、掌握利用StarUML工具分析、设计、绘制状态图;5、掌握利用StarUML工具分析、设计、绘制顺序图。6、掌握利用StarUML......
  • 软件开发与创新第二次实验——结对编程:计算题出题系统
    一.结对情况本人:2252209结对搭档:2211323二.程序设想思路根据题目我和搭档总结出如下几个关键点:1.四则运算随机出题2.两个运算符,三个数字3.提供算式答案并对用户输入答案进行检查我们在基础要求上新增点如下:1.为提高用户使用观感,开头结尾增加一些文字说明2.在用户输入完......