结对项目-四则运算 “软件”之升级版
本作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213
我的githup地址为:https://github.com/lianglina98/ruanjian02
、基本要求
从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:
- 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
- 用户可以输入答案
- 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
二、扩展方向
三、开发环境调试:Visual C++
四、代码呈现
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<windows.h>
float calculate(float x,char op,float y)
{
float result;
switch(op)
{
case'+':result = x + y;break;
case'-':result = x - y;break;
case'*':result = x * y;break;
case'/':result = x / y;break;
}
return result;
}
float calculate2(float x,char op2,float y)
{
float result;
switch(op2)
{
case'+':result = x + y;break;
case'-':result = x - y;break;
case'*':result = x * y;break;
case'/':result = x / y;break;
}
return result;
}
int createnumber()
{
return rand() % 100+1;
}
int createnumber2()
{
return rand() % 20+1;
}
char createnumberop()
{
int op;
op=rand() % 4+1;
switch(op)
{
case 1:return'+';
case 2:return'-';
case 3:return'*';
case 4:return'/';
}
return 0;
}
void exercises(int n)
{
int i,right=0,wrong=0;
float a,b,c,answer,result1,result2;
char op,op2;
srand(time(NULL));
for(i=0;i<n;i++)
{
a=(float)createnumber();
b=(float)createnumber();
c=(float)createnumber();
op=createnumberop();
op2=createnumberop();
result1=calculate2(calculate(a,op,b),op2,c);
result2=calculate(a,op,calculate2(b,op2,c));
if(result1 < 0 || result2 <0)
{
i--;
continue;
}
else{
printf("%.f %c %.f %c %.f = ",a,op,b,op2,c);
scanf("%f",&answer);
if((op=='+' || op=='-') && (op2=='*' || op2=='/'))
{
if((int)(100.0*answer+0.5)/100.0==(int)(100.0*result2+0.5)/100.0 && result2 >=0)
{
printf("\n【回答正确!】\n\n");
right++;
}
else
{
printf("\n【回答错误!答案是:%.2f】\n\n",(int)(100.0*result2+0.5)/100.0);
wrong++;
}
}
else
{
if((int)(100.0*answer+0.5)/100.0==(int)(100.0*result1+0.5)/100.0 && result1 >=0)
{
printf("\n【回答正确!】\n\n");
right++;
}
else
{printf("\n【回答错误!答案是:%.2f】\n\n",(int)(100.0*result1+0.5)/100.0);
wrong++;
}
}
}
printf("\n你答对了%d题,答错了%d题\n\n",right,wrong);
}
}
double gongbeishu(double b,double d)
{
double i,max;
max=b>d?b:d;
for(i=max;;i++)
if((int)(i)%(int)(b)==0 && (int)(i)%(int)(d)==0)
break;
return i;
}
double gongyueshu(double a,double c)
{
double i,min;
min=a<c?a:c;
for(i=2;i<=min;i++)
if((int)(a)%(int)(i)==0 && (int)(c)%(int)(i)==0)
break;
if(i>min)
i=1;
return i;
}
int main()
{
int n;
printf("\n——————————————四则运算-------------------------------------------\n");
printf("\n\n| 欢迎进入四则运算小程序! |\n");
printf("\n——————————————---------------------------------------------------\n");
while(1)
{
do{
printf("\n请输入四则运算的数目:");
scanf("%d",&n);
if(n<=0)
printf("数目有误,请重新输入!\n");
if(n>5)
printf("最多不能超过5个题目,请重新输入!\n");
}while(n<=0 || n>5);
exercises(n);
}
}
五、运行结果截图
六、感想
我并没有结对,自己的基础不好,不想拖累别人。这个作业我做得很简单,主要的问题就在于计算上,其他基本没有什么问题。
转载于:https://www.cnblogs.com/lianglin918/p/9843232.html
总结
以上是生活随笔为你收集整理的结对项目-四则运算 “软件”之升级版的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 软件工程学习笔记——软件工程基本原理
- 下一篇: JZOJ5922. 【NOIP2018模