基本信息
源码名称:小学生数学口算题卡.cpp
源码大小:7.21KB
文件格式:.cpp
开发语言:C/C++
更新时间:2020-12-02
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
随机生成口算题,可选出题模式如加减或乘除、比较大小,可限定出题范围如20以内加减法,答题完毕后自动判题。

#include<stdio.h>
#include <stdlib.h>
#include <string.h>
char str[10];
int Answer[50];
int i,j,l,x,y,t;
int range;
int choice;
int p,q;
int num,count;
int UserInput[50];
char a;
int check(const char *str){
l=strlen(str);
for(i=0; i<l;i  ){
if(str[i]>='0'&&str[i]<='9')
continue;
else
{
return 0;
break;
}
}
}//判断用户输入的字符串是否为纯数字
int main(){
printf("------------------------------------------\n");
printf(">>>>>>>>>欢迎使用小学数学口算题卡<<<<<<<<<\n");
while(1){
printf("------------------------------------------\n");
printf(" 题目模式: \n");
printf(" 1.加法运算( ) \n");
printf(" 2.减法运算(-) \n");
printf(" 3.乘法运算(×) \n");
printf(" 4.除法运算(÷) \n");
printf(" 5.比较大小(>,<,=) \n");
printf(" 6.退出程序 \n");
printf("__________________________________________\n\n");
printf(">>>>>>>>>>>>>>请选择题目模式:(输入 1~6 的数字来选择相应模
式)\n");
while(1){
int flag=1;
memset(str,0,sizeof(str));
scanf("%s",&str);
flag=check(str);//判断输入是否为纯数字
if(!flag)
printf("请输入 1~6 的数字!\n");
else{
choice=atoi(str);
if(choice>0&&choice<=6){
break;
}
else
printf("请输入 1~6 的数字!\n");
}
}//判断用户输入是否合法
if(choice==6){
printf("<<<<<系统已退出,欢迎再次使用!>>>>>\n");
break;
}
else{
while(1){
printf(">>>>>>>>>>>>>>请输入出题范围(如输入数字 n 则给出
n 以内计算题):\n");
int flag=1;
memset(str,0,sizeof(str));
scanf("%s",&str);
flag=check(str);//判断输入是否为纯数字
if(!flag)
printf("请输入一个正整数!\n");
else{
range=atoi(str);//将字符串转换为整形
if(range>0){//判断用户输入的是否是正整数
break;
}
else
printf("请输入一个正整数!\n");
}
}
switch(choice)
{
case 1://加法
printf("\n");
p=1;
num=1;
count=50;
for(i=1;i<=10;i  )
{
for(j=1;j<=5;j  )
{
x = rand() % range 1;
y = rand() % range 1;
printf("<%2d> %2d %2d= ",num,x,y);
Answer[p]=x y;
p  ;
num  ;
}
printf("\n");
}
printf("请依次输入每道题的答案:\n");
for(i=1;i<=50;i  ){
printf("<%d> ",i);
memset(str,0,sizeof(str));
scanf("%s",&str);
t=atoi(str);
UserInput[i]=t;
}
for(i=1;i<=50;i  ){
if(Answer[i]!=UserInput[i]){
count-=1;
printf("第%d 题的答案错误,正确答案
是:%d\n",i,Answer[i]);
}
}
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf("回答正确的题目数为:%d\n",count);
break;
case 2://减法
printf("\n");
p=1;
num=1;
count=50;
for(i=1;i<=10;i  )
{
for(j=1;j<=5;j  )
{
x = rand() % range 1;
y = rand() % range 1;
if(x>y){
printf("<%2d> %2d-%2d=
",num,x,y);
Answer[p]=x-y;
}
else{
printf("<%2d> %2d-%2d=
",num,y,x);
Answer[p]=y-x;
}
p  ;
num  ;
}
printf("\n");
}
printf("请依次输入每道题的答案:\n");
for(i=1;i<=50;i  ){
printf("<%d> ",i);
memset(str,0,sizeof(str));
scanf("%s",&str);
t=atoi(str);
UserInput[i]=t;
}
for(i=1;i<=50;i  ){
if(Answer[i]!=UserInput[i]){
count-=1;
printf("第%d 题的答案错误,正确答案
是:%d\n",i,Answer[i]);
}
}
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf("回答正确的题目数为:%d\n",count);
break;
case 3://乘法
printf("\n");
p=1;
num=1;
count=50;
for(i=1;i<=10;i  )
{
for(j=1;j<=5;j  )
{
x = rand() % range 1;
y = rand() % range 1;
printf("<%2d> %2d×%2d= ",num,x,y);
Answer[p]=x*y;
p  ;
num  ;
}
printf("\n");
}
printf("请依次输入每道题的答案:\n");
for(i=1;i<=50;i  ){
printf("<%d> ",i);
memset(str,0,sizeof(str));
scanf("%s",&str);
t=atoi(str);
UserInput[i]=t;
}
for(i=1;i<=50;i  ){
if(Answer[i]!=UserInput[i]){
count-=1;
printf("第%d 题的答案错误,正确答案
是:%d\n",i,Answer[i]);
}
}
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf("回答正确的题目数为:%d\n",count);
break;
case 4://除法
p=1;
num=1;
count=50;
printf("友情提示:仅保留整数部分,不用考虑四舍五入。
\n\n");
for(i=1;i<=10;i  )
{
for(j=1;j<=5;j  )
{
x = rand() % range 1;
y = rand() % range 1;
if(x>y){
printf("<%2d> %2d÷%2d=
",num,x,y);
Answer[p]=x/y;
}
else{
printf("<%2d> %2d÷%2d=
",num,y,x);
Answer[p]=y/x;
}
p  ;
num  ;
}
printf("\n");
}
printf("请依次输入每道题的答案:\n");
for(i=1;i<=50;i  ){
printf("<%d> ",i);
memset(str,0,sizeof(str));
scanf("%s",&str);
t=atoi(str);
UserInput[i]=t;
}
for(i=1;i<=50;i  ){
if(Answer[i]!=UserInput[i]){
count-=1;
printf("第%d 题的答案错误,正确答案
是:%d\n",i,Answer[i]);
}
}
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf("回答正确的题目数为:%d\n",count);
break;
case 5://比较大小
printf("\n");
q=1;
num=1;
count=50;
for(i=1;i<=10;i  )
{
for(j=1;j<=5;j  )
{
x = rand() % range 1;
y = rand() % range 1;
printf("<%2d> %2d○%-2d ",num,x,y);
if(x>y)
Answer[q]=1;
else if(x<y)
Answer[q]=2;
else
Answer[q]=0;
q  ;
num  ;
}
printf("\n");
}
printf("请依次输入每道题的答案:\n");
printf("若大于(>)则输入 1,小于(<)则输入 2,等于(=)则输入
0。\n");
for(i=1;i<=50;i  ){
printf("<%d> ",i);
memset(str,0,sizeof(str));
scanf("%s",&str);
t=atoi(str);
UserInput[i]=t;
}
for(i=1;i<=50;i  ){
if(Answer[i]!=UserInput[i]&&Answer[i]==1){
count-=1;
printf("第%d 题的答案错误,正确答案是:大于\n",i);
}
else if(Answer[i]!=UserInput[i]&&Answer[i]==2){
count-=1;
printf("第%d 题的答案错误,正确答案是:小于\n",i);
}
else if(Answer[i]!=UserInput[i]&&Answer[i]==0){
count-=1;
printf("第%d 题的答案错误,正确答案是:等于\n",i);
}
}
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf("回答正确的题目数为:%d\n",count);
break;
}
}
printf("-----------------------------------------------\n");
printf("是否继续答题?(是则输入任意字符,否则输入 n 以退出)\n");
scanf("%s",&a);
if(a=='n'||a=='N'){
printf(">>>>>>>>>>>>>>>>>欢迎下次使用!<<<<<<<<<<<<<<<<<\n");
break;
}
}
}