用C语言编写小学运算测试程序(要求完成10以内的加减运算,能根据用户输入想要练习的题目数自行出题、、)

用C语言编写小学运算测试程序(要求完成10以内的加减运算,能根据用户输入想要练习的题目数自行出题、、),第1张

#include <stdioh>

#include <stdlibh>

#include <timeh>

int yunsuan(int M,int NUM)

{

int m=1,n=0,a,b,daan;

while(1)

{

srand(time(0));

a=rand()%M;

b=rand()%M;

switch(1+rand()%2)

{

case 1: //加

{

printf("<%d>",m);

printf("%4d+%4d=",a,b);

scanf("%d",&daan);

if(daan==(a+b))

n++;

else

printf("Fault!\n");

m++;

break;

}

default: //减

{

if(a>=b)

{

printf("<%d>",m);

printf("%4d-%4d=",a,b);

scanf("%d",&daan);

if(daan==(a-b))

n++;

else

printf("Fault!\n");

m++;

break;

}

else

{

printf("<%d>",m);

printf("%4d-%4d=",b,a);

scanf("%d",&daan);

if(daan==(b-a))

n++;

else

printf("Fault!\n");

m++;

break;

}

}

}

if(m == NUM+1)

break;

}

return n;

}

int main()

{

int M,p;

float right;

char o;

int num; //题目的个数。

while(1)

{

printf(" 欢迎进入小学生四则运算训练营\n\n110以内的四则运算\n0退出\n\n");

printf("请选择功能号(1/0):");

scanf("%d",&p);

getchar();

if(p==1)

M=10;

if(p==0)

exit(0);

printf("请选择的是%d以内的四则运算个数:\n",M);

scanf("%d",&num);

int temp = yunsuan(M,num);

right= temp/(num10);

printf("正确率:%2f%%",right100); //正确率。

getchar(); //吸收前面的回车键。

printf("继续吗?(y/n)");

scanf("%c",&o);

if(o == 'y' || o == 'Y')

{

system("pause");

}

else

{

break;

}

}

getchar();

return 0;

}

#include <iostream>

#include <stdlibh>

#include <ctime>

#include <conioh>

using std::cin;

using std::cout;

using std::endl;

//计算式 数量

int const Num = 100;

//计算式中 最大数

int const MaxNum = 100;

//每题分数

int const PerMark = 1;

//计算结果最大值

int const MaxResult = 100;

//计算结果最小值

int const MinResult = 0;

enum enOp{Add,Subtract,Multiply,Divide};

//将 枚举类型转换为字符类型,以便输出。

char enum2char(enOp op)

{

switch (op)

{

case Add:

return '+';

case Subtract:

return '-';

case Multiply:

return 'x';

case Divide:

return '/';

}

return ' ';

}

//计算生成表达式的正确结果。

int myResult(int left,int right,enOp op)

{

switch (op)

{

case Add:

return left+right;

case Subtract:

return left-right;

case Multiply:

return left right;

case Divide:

return left/ right;

}

return 0;

}

//检查生成计算式的正确与否。其中 减法结果不能为负数,除法结果不能为小数。

bool checkFormula(int left,int right,enOp op)

{

switch (op)

{

case Add:

{

return true;

}

case Subtract:

{

if(left < right)

return false;

return true;

}

case Multiply:

{

return true;

}

case Divide:

{

if(right == 0)

return false;

if(double(left/right) != double(double(left)/double(right)))

return false;

return true;

}

}

return false;

}

//依据给定 *** 作符,生成符合条件的表达式。

void getFormula(int left,intright,enOp op)

{

//srand(time(NULL));

for(;;)

{

left = 1 + rand() % MaxNum;

right = 1 + rand() % MaxNum;

if(checkFormula(left,right,op) && myResult(left,right,op)<= MaxResult && myResult(left,right,op)>= MinResult)

break;

}

}

int main()

{

// *** 作符左值

int left[Num];

// *** 作符右值

int right[Num];

//用户输入计算结果

int result[Num];

// *** 作符 +-/

enOp oper[Num];

//正确答案个数

int answerRight = 0;

cout<<"正在生成,请稍等。"<<endl;

//随机种子

srand(time(NULL));

//开始生成计算表达式。

for(int i = 0;i<Num;i++)

{

//srand( (unsigned)time(NULL));

// *** 作符

oper[i] = enOp(rand()%4);

getFormula(&left[i],&right[i],oper[i]);

}

cout<<"生成计算式完成,开始答题!"<<endl;

//输出表达式,让用户答题

for(int i = 0;i<Num;i++)

{

//输出表达式

cout<<"第 "<<i+1<<" 题: \n";

cout<<left[i]<<' '<<enum2char(oper[i])<<' '<<right[i]<< " = ";

//获取用户答案

cin>>result[i];

//比对用户答案是否正确,正确输出 right,answerRigth加一,否则输出not correct。

if(result[i] == myResult(left[i],right[i],oper[i]))

{

cout<<"Right!\n";

answerRight++;

}

else

{

cout<<"Not correct!\n";

}

}

//全部答题完毕,输出正确答案个数及得分。

cout<<"终止答题,共 "<<Num<<" 题,每题 "<<PerMark<<" 分 ,答对 "<<answerRight<<" 题,得分 :"

<<answerRightPerMark<<" 分。";

//屏幕停止。

getch();

return 0;

}

这要熟悉小学一年级的教材,考查学生应该掌握的知识点,不宜考的太难,争取难易适中,既考查该学习的知识点,又要难易适度,有区分度。既要通过考试检查教师的教,又要检查学生的学。出一份好试卷,可以看出老师把握教材大纲的情况。当然这也不是一日之功。当一个好老师,方方面面都很重要。

Qbasic:

Randomize Timer

INPUT "N="; N

For i = 1 To N

k = Int(Rnd 4)

Select Case k

Case 0:

a = Int(Rnd 11)

b = Int(Rnd 11)

e$ = "+"

c = a + b

Case 1:

c = Int(Rnd 11)

b = Int(Rnd 11)

e$ = "-"

a = b + c

Case 2:

a = Int(Rnd 10)

b = Int(Rnd 10)

e$ = ""

c = a b

Case 3:

c = Int(Rnd 10)

b = Int(Rnd 9) + 1

e$ = "/"

a = b c

End Select

Print a; e$; b; "=";

INPUT d

If c = d Then

Print "right!"

Else

Print "Wrong!"

End If

Next i

以上就是关于用C语言编写小学运算测试程序(要求完成10以内的加减运算,能根据用户输入想要练习的题目数自行出题、、)全部的内容,包括:用C语言编写小学运算测试程序(要求完成10以内的加减运算,能根据用户输入想要练习的题目数自行出题、、)、用C++编写:为训练小学生的算术能力,现请你帮忙设计一个100以内的随机出题程序,每次运行生成100道题。、怎么给小学一年级出题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/9521190.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存