1、代码来源:http://wenwen.sogou.com/z/q710937394.htm
2、Windows平台、采用C语言、采用VC6.0运行环境
3、代码没有Bug
4、代码修改和功能添加:
关于代码修改方面: 由于之前作者的程序在用户答案的判断上,代码有些不必要,而进行了;原修改删除了不必要的代码;作者对于除法的运算只能够实现判断整数部分是否正确,而不能够准确判断,所以我就让用户分别输入商和余数,对于商和余数的判断是要满足两者都已经化为最简,最终就可以正确的判断用户的答案。
关于功能方面:实现了可以让用户选择汉语或者英语、实现了整数和真分数的四则运算、实现了分数计算、实现了正确错误的提示。
Github地址:https://github.com/Yu0Ci/Project/blob/master/软件工程作业1.cpp
5、代码:
#include<stdio.h> #include<time.h> #include<stdlib.h> #include<conio.h> #include<string.h> void main() { //整数四则运算 int a1,b1,a2,b2,c,d1,d2,e,e1,x,y,i,choice,grade=0; int answer[100]; printf("the Choice of Language (English/Chinese)(英语/汉语): "); printf("0----English/英语 1----Chinese/汉语 "); printf("Please input you choice/请输入你的选择:"); scanf("%d",&choice); if(choice==0||choice==1) { srand((unsigned)time(NULL)); for(int j=0;j<10;j++) { a1=rand()%10; b1=rand()%10; a2=rand()%10; b2=rand()%10; c=rand()%9; //真分数 if(c>4) { if(a2==0) a2+=1; if(b2==0) b2+=1; if(a1>a2) { d1=a1;a1=a2;a2=d1; } if(b1>b2) { d1=b1;b1=b2;b2=d1; } } switch(c) { case 0:printf("%d+%d=",a1,b1); answer[c]=a1+b1; break; case 1:if(a1<b1) { d1=a1;a1=b1;b1=d1; } printf("%d-%d=",a1,b1); answer[c]=a1-b1; break; case 2:printf("%d*%d=",a1,b1); answer[c]=a1*b1; break; case 3:if(a1==0) a1+=1; printf("%d^%d=",a1,b1); if(b1==0) a1=1; d1=a1; for( i=1;i<b1;i++) {a1=a1*d1;} answer[c]=a1; break; case 4:if(b1==0) b1+=1; printf("%d/%d=",a1,b1); x=a1; y=b1; break; case 5:printf("%d/%d+%d/%d=",a1,a2,b1,b2); x=a1*b2+a2*b1; y=b2*a2; break; case 6:y=a2*b2; d1=a1*b2; d2=a2*b1; if(d1<d2) { printf("%d/%d-%d/%d=",b1,b2,a1,a2); x=d2-d1; } else { printf("%d/%d-%d/%d=",a1,a2,b1,b2); x=d1-d2; } break; case 7:printf("%d/%d*%d/%d=",a1,a2,b1,b2); x=a1*b1; break; case 8:if(b2==0) b2+=1; printf("(%d/%d)/(%d/%d)=",a1,a2,b1,b2); x=a1*b2; y=a2*b1; break; } switch(choice) {//英语 case 0: if(c<4) { scanf("%d",&e); if(e==answer[c]) { grade+=1; printf("You are right"); } else printf("You are wrong"); } else { printf(" quotient= "); scanf("%d",&e); printf(" remainder="); scanf("%d",&e1); for(i=9;i>1;i++) { if((x%i==0)&&(y%i==0)) { x=x/i;y=y/i;} } if( (e==x/y)&&(e1==x%y)) { grade+=1; printf("You are right"); } else printf("You are wrong"); } break; //汉语 case 1: if(c<4) { scanf("%d",&e); if(e==answer[c]) { grade+=1; printf("你答对了"); } else printf("继续加油"); } else { printf(" quotient= "); scanf("%d",&e); printf(" remainder="); scanf("%d",&e1); for(i=9;i>1;i++) { if((x%i==0)&&(y%i==0)) { x=x/i;y=y/i;} } if( (e==x/y)&&(e1==x%y)) { grade+=1; printf("你答对了"); } else printf("继续加油"); } break; default:printf(" "); } printf(" "); } printf("grade: %d ",grade); } else printf("input 0 or 1/只能输入0或者1:"); }