作业-四则运算

代码如下:

这个作业属于哪个课程 https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/
这个作业要求在哪里 https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11376
这个作业的目标 写一个能自动生成小学四则运算题目的程序
学号 3190704211
代码:

include <stdio.h>

include <math.h>

include <stdlib.h>

include <time.h>

//IntegeAdd()为整数加法运算
void IntegeAdd(){
int i;
int n;//n为题目数量
int Addend1,Addend2;//Addend1为加数1,Addend2为加数2
int Answer;//Answer为学生回答
int CorrectAnswerNumber=0;//CorrectAnswerNumber为正确回答的个数
float Score;//Score为学生得分

printf("请输入题目数量(1-10):\n");
scanf("%d",&n);

if(n>10 ||n<0){
	printf("输入n有误,需输入1-10以内的整数!\n请重新输入:\n");
	scanf("%d",&n);
}//判断n是否为1-10内的整数

for(i=1;i<=n;i++){
	srand(time(NULL));
	Addend1=rand()%100;
	Addend2=rand()%100;

	printf("%d+%d=",Addend1,Addend2);
	printf("你的答案:(保留整数)");
	scanf("%d",&Answer);

	if(Answer==Addend1+Addend2){
		printf("回答正确!\n");
		CorrectAnswerNumber++;
	}
	else{
		printf("回答错误!\n");
	}
}
Score=((float)CorrectAnswerNumber/n)*100;
printf("题目回答完毕,您的得分为%.1f\n\n",Score);

}

//IntegeSubtract()为整数减法运算
void IntegeSubtract(){
int i;
int n;//n为题目数量
int Meiosis1,Meiosis2;//Meiosis1为减数1,Meiosis2为减数2
int Answer;//Answer为学生回答
int CorrectAnswerNumber=0;//CorrectAnswerNumber为正确回答的个数
float Score;//Score为学生得分

printf("请输入题目数量(1-10):\n");
scanf("%d",&n);

if(n>10 ||n<0){
	printf("输入n有误,需输入1-10以内的整数!\n请重新输入:\n");
	scanf("%d",&n);
}//判断n是否为1-10内的整数

for(i=1;i<=n;i++){
	srand(time(NULL));
	Meiosis1=rand()%100;
	Meiosis2=rand()%100;

	printf("%d-%d=",Meiosis1,Meiosis2);
	printf("你的答案:(保留整数)");
	scanf("%d",&Answer);

	if(Answer==Meiosis1-Meiosis2){
		printf("回答正确!\n");
		CorrectAnswerNumber++;
	}
	else{
		printf("回答错误!\n");
	}
}
Score=((float)CorrectAnswerNumber/n)*100;
printf("题目回答完毕,您的得分为%.1f\n\n",Score);

}

//IntegeMultiply()为整数乘法运算
void IntegeMultiply(){
int i;
int n;//n为题目数量
int Multiplier1,Multiplier2;//Multiplier1为乘数1,Multiplier2为乘数2
int Answer;//Answer为学生回答
int CorrectAnswerNumber=0;//CorrectAnswerNumber为正确回答的个数
float Score;//Score为学生得分

printf("请输入题目数量(1-10):\n");
scanf("%d",&n);

if(n>10 ||n<0){
	printf("输入n有误,需输入1-10以内的整数!\n请重新输入:\n");
	scanf("%d",&n);
}//判断n是否为1-10内的整数

for(i=1;i<=n;i++){
	srand(time(NULL));
	Multiplier1=rand()%100;
	Multiplier2=rand()%100;
	printf("%d×%d=",Multiplier1,Multiplier2);
	printf("你的答案:(保留整数)");
	scanf("%d",&Answer);

	if(Answer==Multiplier1*Multiplier2){
		printf("回答正确!\n");
		CorrectAnswerNumber++;
	}
	else{
		printf("回答错误!\n");
	}
}
Score=((float)CorrectAnswerNumber/n)*100;
printf("题目回答完毕,您的得分为%.1f\n\n",Score);

}

//IntegeDivide()为整数除法运算
void IntegeDivide(){
int i;
int n;//n为题目数量
int Divisor,Dividend;//Divisor为除数,Dividend为被除数
int Answer;//Answer为学生回答
int CorrectAnswerNumber=0;//CorrectAnswerNumber为正确回答的个数
float Score;//Score为学生得分

printf("请输入题目数量(1-10):\n");
scanf("%d",&n);

if(n>10 ||n<0){
	printf("输入n有误,需输入1-10以内的整数!\n请重新输入:\n");
	scanf("%d",&n);
}//判断n是否为1-10内的整数

for(i=1;i<=n;i++){
	srand(time(NULL));
	Divisor=rand()%100;
	Dividend=rand()%100;

	printf("%d÷%d=",Divisor,Dividend);
	printf("你的答案:(保留整数)");
	scanf("%d",&Answer);

	if(Answer==(int)(Divisor/Dividend)){
		printf("回答正确!\n");
		CorrectAnswerNumber++;
	}
	else{
		printf("回答错误!\n");
	}
}
Score=((float)CorrectAnswerNumber/n)*100;
printf("题目回答完毕,您的得分为%.1f\n\n",Score);

}

//IntegeOperation()为整数运算
void IntegeOperation(){
int choose2;
printf("下面为整数运算题目,请选择运算方式:\n");
printf("0.退出\n1.加\n2.减\n3.乘\n4.除\n");
scanf("%d",&choose2);
switch (choose2){
case 1:
IntegeAdd();
break;
case 2:
IntegeSubtract();
break;
case 3:
IntegeMultiply();
break;
case 4:
IntegeDivide();
break;
}
if (choose2==0){
printf("已退出程序,感谢使用!\n");
exit(0);
}
}

//FractionalAdd()为分数加法运算
void FractionalAdd(){
int i;
int a=1;
int b=1;
int n;//n为题目数量
int Molecules1,Denominator1;//Molecules1为分子1,Denominator1为分母1
int Molecules2,Denominator2;//Molecules2为分子2,Denominator2为分母2

int AnswerMolecules;//AnswerMolecules为学生回答的分子
int AnswerDenominator;//AnswerDenominator为学生回答的分母

int CorrectAnswerMolecules;//CorrectAnswerMolecules为正确答案的分子
int CorrectAnswerDenominator;//CorrectAnswerDenominator为正确答案的分母

int CorrectAnswerNumber=0;//CorrectAnswerNumber为正确回答的个数
float Score;//Score为学生得分

printf("请输入题目数量(1-10):\n");
scanf("%d",&n);

if(n>10 ||n<0){
	printf("输入n有误,需输入1-10以内的整数!\n请重新输入:\n");
	scanf("%d",&n);
}//判断n是否为1-10内的整数

for(i=1;i<=n;i++){
	do{
		srand(time(NULL));
		Molecules1=rand()%100;
		Molecules2=rand()%100;
		Denominator1=rand()%100;
		Denominator2=rand()%100;
	}while((Molecules1>=Denominator1)||(Molecules2>=Denominator2));

	printf("%d/%d+%d/%d=\n",Molecules1,Denominator1,Molecules2,Denominator2);

	CorrectAnswerMolecules=Molecules1*Denominator2+Molecules2*Denominator1;
	CorrectAnswerDenominator=Denominator1*Denominator2;

//下面求CorrectAnswerMolecules和CorrectAnswerDenominator的最大公因数b
	if(CorrectAnswerMolecules>=CorrectAnswerDenominator){
		while(a<=CorrectAnswerDenominator){
			if((CorrectAnswerMolecules%a==0)&&(CorrectAnswerDenominator%a==0))b=a;
			a++;
		}
	}
	else{
		while(a<=CorrectAnswerMolecules){
			if((CorrectAnswerMolecules%a==0)&&(CorrectAnswerDenominator%a==0))b=a;
			a++;
		}
	}
//下面计算约分后正确答案的分子分母
	CorrectAnswerMolecules=CorrectAnswerMolecules/b;
	CorrectAnswerDenominator=CorrectAnswerDenominator/b;

	printf("你的答案:分子:\n");
	scanf("%d",&AnswerMolecules);
	printf("你的答案:分母:\n");
	scanf("%d",&AnswerDenominator);

	if((AnswerMolecules==CorrectAnswerMolecules)&&(AnswerDenominator==CorrectAnswerDenominator)){
		printf("回答正确!\n");
		CorrectAnswerNumber++;
	}
	else{
		printf("回答错误!\n");
	}
}
Score=((float)CorrectAnswerNumber/n)*100;
printf("题目回答完毕,您的得分为%.1f\n\n",Score);

}

//FractionalSubtract()为分数减法运算
void FractionalSubtract(){
int i;
int a=1;
int b=1;
int n;//n为题目数量
int Molecules1,Denominator1;//Molecules1为分子1,Denominator1为分母1
int Molecules2,Denominator2;//Molecules2为分子2,Denominator2为分母2

int AnswerMolecules;//AnswerMolecules为学生回答的分子
int AnswerDenominator;//AnswerDenominator为学生回答的分母

int CorrectAnswerMolecules;//CorrectAnswerMolecules为正确答案的分子
int CorrectAnswerDenominator;//CorrectAnswerDenominator为正确答案的分母

int CorrectAnswerNumber=0;//CorrectAnswerNumber为正确回答的个数
float Score;//Score为学生得分

printf("请输入题目数量(1-10):\n");
scanf("%d",&n);

if(n>10 ||n<0){
	printf("输入n有误,需输入1-10以内的整数!\n请重新输入:\n");
	scanf("%d",&n);
}//判断n是否为1-10内的整数

for(i=1;i<=n;i++){
	do{
		srand(time(NULL));
		Molecules1=rand()%100;
		Molecules2=rand()%100;
		Denominator1=rand()%100;
		Denominator2=rand()%100;
	}while((Molecules1>=Denominator1)||(Molecules2>=Denominator2));
	

	printf("%d/%d-%d/%d=\n",Molecules1,Denominator1,Molecules2,Denominator2);

	CorrectAnswerMolecules=Molecules1*Denominator2-Molecules2*Denominator1;
	CorrectAnswerDenominator=Denominator1*Denominator2;

//下面求CorrectAnswerMolecules和CorrectAnswerDenominator的最大公因数b
	if(CorrectAnswerMolecules>=CorrectAnswerDenominator){
		while(a<=CorrectAnswerDenominator){
			if((CorrectAnswerMolecules%a==0)&&(CorrectAnswerDenominator%a==0))b=a;
			a++;
		}
	}
	else{
		while(a<=CorrectAnswerMolecules){
			if((CorrectAnswerMolecules%a==0)&&(CorrectAnswerDenominator%a==0))b=a;
			a++;
		}
	}
//下面计算约分后正确答案的分子分母
	CorrectAnswerMolecules=CorrectAnswerMolecules/b;
	CorrectAnswerDenominator=CorrectAnswerDenominator/b;

	printf("你的答案(负号写在分子里):分子:\n");
	scanf("%d",&AnswerMolecules);
	printf("你的答案:分母:\n");
	scanf("%d",&AnswerDenominator);

	if((AnswerMolecules==CorrectAnswerMolecules)&&(AnswerDenominator==CorrectAnswerDenominator)){
		printf("回答正确!\n");
		CorrectAnswerNumber++;
	}
	else{
		printf("回答错误!\n");
	}
}
Score=((float)CorrectAnswerNumber/n)*100;
printf("题目回答完毕,您的得分为%.1f\n\n",Score);

}

//FractionalMultiply()为分数乘法运算
void FractionalMultiply(){
int i;
int a=1;
int b=1;
int n;//n为题目数量
int Molecules1,Denominator1;//Molecules1为分子1,Denominator1为分母1
int Molecules2,Denominator2;//Molecules2为分子2,Denominator2为分母2

int AnswerMolecules;//AnswerMolecules为学生回答的分子
int AnswerDenominator;//AnswerDenominator为学生回答的分母

int CorrectAnswerMolecules;//CorrectAnswerMolecules为正确答案的分子
int CorrectAnswerDenominator;//CorrectAnswerDenominator为正确答案的分母

int CorrectAnswerNumber=0;//CorrectAnswerNumber为正确回答的个数
float Score;//Score为学生得分

printf("请输入题目数量(1-10):\n");
scanf("%d",&n);

if(n>10 ||n<0){
	printf("输入n有误,需输入1-10以内的整数!\n请重新输入:\n");
	scanf("%d",&n);
}//判断n是否为1-10内的整数

for(i=1;i<=n;i++){
	do{
		srand(time(NULL));
		Molecules1=rand()%100;
		Molecules2=rand()%100;
		Denominator1=rand()%100;
		Denominator2=rand()%100;
	}while((Molecules1>=Denominator1)||(Molecules2>=Denominator2));
	
	printf("(%d/%d)*(%d/%d)=\n",Molecules1,Denominator1,Molecules2,Denominator2);

	CorrectAnswerMolecules=Molecules1*Molecules2;
	CorrectAnswerDenominator=Denominator1*Denominator2;

//下面求CorrectAnswerMolecules和CorrectAnswerDenominator的最大公因数b
	if(CorrectAnswerMolecules>=CorrectAnswerDenominator){
		while(a<=CorrectAnswerDenominator){
			if((CorrectAnswerMolecules%a==0)&&(CorrectAnswerDenominator%a==0))b=a;
			a++;
		}
	}
	else{
		while(a<=CorrectAnswerMolecules){
			if((CorrectAnswerMolecules%a==0)&&(CorrectAnswerDenominator%a==0))b=a;
			a++;
		}
	}

//下面计算约分后正确答案的分子分母
	CorrectAnswerMolecules=CorrectAnswerMolecules/b;
	CorrectAnswerDenominator=CorrectAnswerDenominator/b;

	printf("你的答案:分子:\n");
	scanf("%d",&AnswerMolecules);
	printf("你的答案:分母:\n");
	scanf("%d",&AnswerDenominator);

	if((AnswerMolecules==CorrectAnswerMolecules)&&(AnswerDenominator==CorrectAnswerDenominator)){
		printf("回答正确!\n");
		CorrectAnswerNumber++;
	}
	else{
		printf("回答错误!\n");
	}
}
Score=((float)CorrectAnswerNumber/n)*100;
printf("题目回答完毕,您的得分为%.1f\n\n",Score);

}

//FractionalDivide()为分数除法运算
void FractionalDivide(){
int i;
int a=1;
int b=1;
int n;//n为题目数量
int Molecules1,Denominator1;//Molecules1为分子1,Denominator1为分母1
int Molecules2,Denominator2;//Molecules2为分子2,Denominator2为分母2

int AnswerMolecules;//AnswerMolecules为学生回答的分子
int AnswerDenominator;//AnswerDenominator为学生回答的分母

int CorrectAnswerMolecules;//CorrectAnswerMolecules为正确答案的分子
int CorrectAnswerDenominator;//CorrectAnswerDenominator为正确答案的分母

int CorrectAnswerNumber=0;//CorrectAnswerNumber为正确回答的个数
float Score;//Score为学生得分

printf("请输入题目数量(1-10):\n");
scanf("%d",&n);

if(n>10 ||n<0){
	printf("输入n有误,需输入1-10以内的整数!\n请重新输入:\n");
	scanf("%d",&n);
}//判断n是否为1-10内的整数

for(i=1;i<=n;i++){
	do{
		srand(time(NULL));
		Molecules1=rand()%100;
		Molecules2=rand()%100;
		Denominator1=rand()%100;
		Denominator2=rand()%100;
	}while((Molecules1>=Denominator1)||(Molecules2>=Denominator2));

	printf("(%d/%d)÷(%d/%d)=\n",Molecules1,Denominator1,Molecules2,Denominator2);

	CorrectAnswerMolecules=Molecules1*Denominator2;
	CorrectAnswerDenominator=Denominator1*Molecules2;

//下面求CorrectAnswerMolecules和CorrectAnswerDenominator的最大公因数b
	if(CorrectAnswerMolecules>=CorrectAnswerDenominator){
		while(a<=CorrectAnswerDenominator){
			if((CorrectAnswerMolecules%a==0)&&(CorrectAnswerDenominator%a==0))b=a;
			a++;
		}
	}
	else{
		while(a<=CorrectAnswerMolecules){
			if((CorrectAnswerMolecules%a==0)&&(CorrectAnswerDenominator%a==0))b=a;
			a++;
		}
	}
//下面计算约分后正确答案的分子分母
	CorrectAnswerMolecules=CorrectAnswerMolecules/b;
	CorrectAnswerDenominator=CorrectAnswerDenominator/b;

	printf("你的答案:分子:\n");
	scanf("%d",&AnswerMolecules);
	printf("你的答案:分母:\n");
	scanf("%d",&AnswerDenominator);

	if((AnswerMolecules==CorrectAnswerMolecules)&&(AnswerDenominator==CorrectAnswerDenominator)){
		printf("回答正确!\n");
		CorrectAnswerNumber++;
	}
	else{
		printf("回答错误!\n");
	}
}
Score=((float)CorrectAnswerNumber/n)*100;
printf("题目回答完毕,您的得分为%.1f\n\n",Score);

}

//FractionalOperation()为分数运算
void FractionalOperation(){
int choose2;
printf("0.退出\n1.加\n2.减\n3.乘\n4.除\n");
scanf("%d",&choose2);
switch (choose2){
case 1:
FractionalAdd();
break;
case 2:
FractionalSubtract();
break;
case 3:
FractionalMultiply();
break;
case 4:
FractionalDivide();
break;
}
if (choose2==0){
printf("已退出程序,感谢使用!\n");
exit(0);
}
}

//Choose1()选择分数运算还是整数运算
void Choose1(){
int choose1;
printf("请选择运算:\n");
printf("0.退出\n1.整数运算\n2.分数运算\n");
scanf("%d",&choose1);

while(choose1!=0){
	switch(choose1){
	case 1:IntegeOperation();
		break;
	case 2:FractionalOperation();
		break;
	}
}
if (choose1==0){
	printf("已退出程序,感谢使用!\n");
	exit(0);
}

}

//主函数
void main(){
Choose1();
}

运行结果截图:







个人小结:

任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
计划 8 6
估计这个任务需要多少时间,并规划大致工作步骤 8 12
开发 150 180
需求分析(包括学习新技术) 20 17
生成设计文档 5 4
设计复审 10 5
代码规范 5 1
具体设计 10 7
具体编码 50 35
代码复审 7 5
测试(自我测试,修改代码,提交修改) 30 50
报告 20 15
测试报告 5 0
计算工作量 5 0
事后总结,并提出过程改进计划 10 15
---- ---- ----
posted @ 2020-10-28 04:04  神尤奈  阅读(100)  评论(0)    收藏  举报