实例介绍
【实例简介】随机生成口算题,可选出题模式如加减或乘除、比较大小,可限定出题范围如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; } } }
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论