小学生四则运算测试【c】

题目

功能:

四则运算(+-×÷)各出2题,除法每题20分,其他每题10分。每题通过计算机随机产生两个1~100之间的整数作为运算数据(除法要能整除)。学生根据题目输入输入答案,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,然后显示下一题,不给机会重做。测试结束后,统计总得分和错误题数并输出。

编程要求

  1. 写一个子函数,跟据传入的两个运算数据及运算符并实现运算。同时,在子函数中提示学生输入答案,答案对比运算结果进行判断,返回判断结果(正确1、不正确0);
  2. 主函数中按题数要求随机产生运算数据,调用Test函数后根据返回值进行输出提示和统计结果;
  3. 较好的用户输入输出提示。

解决问题

分析:

1.在主函数中,先种下随机数的种子。

2.再定义整型变量随机数x,y在1-100之间,用于提供算数的两个数字;又定义一个整型变量随机数op在1~4之间,用分别匹配加减乘除四种运算符。定义整型变量cnt=1,用来记录总题数并控制其最后等于8。定义四个整型变量a,b,c,d并初始化为0,分别记录加法,减法,乘法,除法的题数并控制其最后都为2。定义整型变量wrong并初始化为0,用于记录错误的题数,便于最后输出;定义整型变量score并初始化为0,用于记录分数。

3.在cnt<=8的循环内,对于随机数op,若其数字对应的运算类型的次数(a,b,c,d)<2,则调用测试测试函数,根据对错,为变量score加分,若错误,则wrong++,对应的(a,b,c,d)++,cnt++,进入下一轮循环,直到结束。

4.测试子函数需要的参数有三个,分别是两个参与运算的整型变量,和一个字符变量。通过字符变量分类出题,若正确则返回1,若错误则返回0。

答案:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int Test(int x,int y,char op)
{
	int ret,answer;
	if(op=='+')
	{
		printf("%d + %d =",x,y);
		scanf("%d",&answer);
		if(answer==x+y)
	{
		ret =1;
	}
	else
	{
		ret=0;
	}
	}
	if(op=='-')
	{
		printf("%d - %d =",x,y);
		scanf("%d",&answer);
		if(answer==x - y)
	{
		ret =1;
	}
	else
	{
		ret=0;
	}
	}
	if(op=='*')
	{
		printf("%d * %d =",x,y);
		scanf("%d",&answer);
		if(answer==x * y)
	{
		ret =1;
	}
	else
	{
		ret=0;
	}
	}
	if(op=='/')
	{
		printf("%d / %d =",x,y);
		scanf("%d",&answer);
		if(answer==x / y)
	{
		ret =1;
	}
	else
	{
		ret=0;
	}
	}
	return ret;
}
int main()
{
	srand((unsigned)time(NULL));
	int cnt=1;
	int score=0; int wrong=0;
	int a=0,b=0,c=0,d=0;
	while(cnt<=8)
	{
		int x=rand()%99+1;
		int y=rand()%99+1; 
		int op=rand()%4+1;
	
		if(op==1&&a<2)
		{
			if(Test(x,y,'+'))
			{
				printf("Right !\n");
				score+=10;
			}
			else
			{
				printf("Not correct !\n"); 
				wrong++;
			}
			a++;cnt++;
		}
		if(op==2&&b<2)
		{
			if(Test(x,y,'-'))
			{
				printf("Right !\n");
				score+=10;
			}
			else
			{
				printf("Not correct !\n"); 
				wrong++;
			}
			b++;cnt++;
		}
		if(op==3&&c<2)
		{
			if(Test(x,y,'*'))
			{
				printf("Right !\n");
				score+=10;
			}
			else
			{
				printf("Not correct !\n"); 
				wrong++;
			}
			c++;cnt++;
		}
		if(op==4&&d<2)
		{
			if(x%y==0)
			{
				if(Test(x,y,'/'))
			{
				printf("Right !\n");
				score+=20;
			}
			else
			{
				printf("Not correct !\n"); 
				wrong++;
			}
			d++;cnt++;
			}
		}
	} 
	printf("总得分:%d,错了%d题。",score,wrong);
	return 0;
 } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值