C语言四则运算程序

#include <iostream>
#include <stdlib.h>
#include <time.h> 
using namespace std;
 
void Comment(int i);	//声明 

/*生成一个随机数*/
int Number_gen(int i)
{
	switch(i){
		case 1:return rand()%10;break;
		case 2:return (rand()%90)+10;break;
		case 3:return (rand()%900)+100;break;
		case 4:return (rand()%9000)+1000;break; 
		case 5:return (rand()%90000)+10000;break;
		default:break;
	}; 
 } 
/*加法*/
void Add(int n)
{
	printf("现在行的是%d位数加法运算\n",n);	
	int count=0;
	for(int i=1;i<=10;i++){
		int a = Number_gen(n);  
		int b = Number_gen(n);
		printf("%d + %d = ",a,b);
		int result;scanf("%d",&result);
		if(result==a+b){
			count++;
			Comment(1);
		}
		else Comment(0);
	}
	double rate = count / 10;
	if(rate<0.75) printf("很遗憾,你没有过关,快去找老师补课哦!\n");
	else printf("祝贺!你已经通过了本级测试!\n");
}
/*减法*/ 
void Subtr(int n)
{
	printf("现在行的是%d位数减法运算\n",n);	
	int count=0;
	for(int i=1;i<=10;i++){
		int a = Number_gen(n);  
		int b = Number_gen(n);
		printf("%d - %d = ",a,b);
		int result;scanf("%d",&result);
		if(result==a-b){
			count++;
			Comment(1);
		}
		else Comment(0);
	}
	double rate = count / 10;
	if(rate<0.75) printf("很遗憾,你没有过关,快去找老师补课哦!");
	else printf("祝贺!你已经通过了本级测试!");
}
/*乘法*/
void Mult(int n)
{
	printf("现在行的是%d位数乘法运算\n",n);	
	int count=0;
	for(int i=1;i<=10;i++){
		int a = Number_gen(n);  
		int b = Number_gen(n);
		printf("%d * %d = ",a,b);
		int result;scanf("%d",&result);
		if(result==a*b){
			count++;
			Comment(1);
		}
		else Comment(0);
	}
	double rate = count / 10;
	if(rate<0.75) printf("很遗憾,你没有过关,快去找老师补课哦!\n");
	else printf("祝贺!你已经通过了本级测试!\n");
 } 
/*除*/
void Divi(int n)
{
	printf("现在行的是%d位数除法运算(注意保留6位有效小数点)\n",n);	
	int count=0;
	for(int i=1;i<=10;i++){
		int a = Number_gen(n);  
		int b = Number_gen(n);
		if(n==1)	//两位除法特殊,除数不能为0 
		{
			int b = (rand()%9)+1;  //除数不能为0 
		}
		printf("%d / %d = ",a,b);
		float result;scanf("%f",&result);  //生成数字的时候,应该循环一系列数字 
		if(result==1.0*a/b){
			count++;
			Comment(1);
		}
		else Comment(0);
	}
	float rate = count / 10;
	if(rate<0.75) printf("很遗憾,你没有过关,快去找老师补课哦!\n");
	else printf("祝贺!你已经通过了本级测试!\n");	
}
/*混合*/
void Mix(int n)
{
		int count;
		for(int i=0;i<10;i++){ 
		float result;
		int c = rand()%4;		//随机生成加减乘除 
		int a = Number_gen(n);  	 
		int b = Number_gen(n);
		switch(c){
			case 0:		//加法 
			printf("%d + %d = ",a,b);
			scanf("%f",&result);  
			if(result==a+b){
				count++;
				Comment(1);
		}
		else Comment(0);break;   
		
			case 1:			//减法
				printf("%d - %d = ",a,b);
				scanf("%f",&result);  
		if(result==a-b){
				count++;
				Comment(1);
		}
		else Comment(0);break;  
				break;	 
				
			case 2:
				printf("%d * %d = ",a,b);
				scanf("%f",&result);  
		if(result==a*b){
				count++;
				Comment(1);
		}
		else Comment(0);break;  
				break;		//乘法 
				
			case 3:
			if(n==1)		//两位除法特殊,除数不能为0
			{	 
			int b = (rand()%9)+1;
			}  
			printf("%d / %d = ",a,b);
			scanf("%f",&result);
		if(result==1.0*a/b){
				count++;
				Comment(1);
		}
		else Comment(0);break;  
				break;		//除法 
			default:break; 
		};			
	}
	float rate = count / 10;
	if(rate<0.75) printf("很遗憾,你没有过关,快去找老师补课哦!\n");
	else printf("祝贺!你已经通过了本级测试!\n");
 } 

/*评语随机生成函数*/
void Comment(int i)
{
	if(i==1){
		int j = rand()%3;
		switch(j){
			case 0:printf("棒极了!\n");break;
			case 1:printf("太好了!\n");break;
			case 2:printf("你好棒哦!\n");break;
			default:break;
		}
	}
	else if(i==0){
		int k = rand()%4;
		switch(k){
			case 0:printf("请再试一次!\n");break;
			case 1:printf("别灰心!\n");break;
			case 2:printf("失败是成功之母!\n");break;
			case 3:printf("继续加油哦\n");break;
			default:break; 
		}
	} 
}

int main()
{ 
	srand((unsigned)time(NULL));
while(true){	
/*交互界面*/
	int choice1,choice2;
	printf("运算选择:\n1  加法\t 2  减法\t 3  乘法\t 4  除法\t 5  四种运算类型的随机混合\n\n");
	printf("难度选择:\n1  一位数字运算\n2  两位数字运算\n3  三位数字运算\n4  四位数字运算\n5  五位数字运算\n\n");
	printf("键入运算难度和难度选择:");scanf("%d%d",&choice1,&choice2);
/*难度选择*/
	switch(choice1){
		case 1:Add(choice2);break;
		case 2:Subtr(choice2);break;
		case 3:Mult(choice2);break;
		case 4:Divi(choice2);break;
		case 5:Mix(choice2);break;
	}	
	}
	return 0;
}
    1. 允许用户选择一种类型的算术运算来学习。选择1表示只有加法运算,2表示只有减法运算,3表示只有乘法运算,4表示只有除法运算,5表示上面四种运算类型的随机混合。
    2. 允许用户输入难度等级。在难度等级为1时,程序只使用一位数字完成算术运算;在难度等级为2时,程序最多使用两位数;依此类推。
    3. 对于相应的运算类型和难度等级,利用rand函数产生两个正整数,接着程序应显示诸如“6×7=”之类的问题,然后学生输入答案。接下来程序会检查学生的答案,如果回答正确,打印出诸如“棒极了!”、“太好了!”、“你好棒哦!”之类的评语,随后问另一个问题。如果回答错误,打印出诸如“请再试一次!”、“别灰心!”、“失败是成功之母!”、“继续加油哦!”之类的评语,然后让学生继续尝试回答同样的问题,直到最后回答正确。
    4. 统计学生回答正确和回答错误的次数。学生回答10次以后,程序应该计算回答正确的百分比。如果百分比低于75%,那么程序应打印“很遗憾,你没有过关,快去找老师补课哦!”,然后重置程序,这样另一学生可以使用它。如果百分比大于等于75%,则显示“祝贺!你已经通过了本级测试!”,然后重置程序,这样另一学生可以使用它。
  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值