最新C语言大型作业-教小学生算数.doc
精品资料C语言大型作业-教小学生算数.C语言工程训练 课程设计题目: 教小学生算数 学 生 学 号 : 学 生 姓 名 : 指 导 教 师 : 一、 需求分析通过此系统实现以下功能做个位数,十位数的加,减,乘和除,减法不能得负数,除法要除尽,屏幕上随机出现两个数,提示小学生给出答案,答错了要提示重新输入,直到答对为止。要统计给分,且累计,够一定分数后可进级,即从个位进到十位。同样,也可降级。1) 加法功能:用PLUS函数实现加法算数,答对输入的题量后可晋级,难度有所增加,结果错误后提示错误并且重新输入。2) 减法功能:用sub函数实现减法算数,并且结果不为负数,答对输入的题量后可晋级,难度有所增加,结果错误后提示错误并且重新输入。3) 乘法功能:用mul函数实现乘法算数,答对输入的题量后可晋级,难度有所增加,结果错误后提示错误并且重新输入。4) 除法功能:用div函数实现除法功能,并且生成的除法算数要除尽,答对输入的题量后可晋级,难度有所增加,结果错误后提示错误并且重新输入。二、 总体设计1) 组成框图 主函数加法功能函数plus减法功能函数sub乘法功能函数mul除法功能函数div 2) 流程图主窗口Switch(1)Switch(2)Switch(3)Switch(4)加法功能减法功能乘法功能除法功能输入题量进入第一关输入题量进入第一关输入题量进入第一关输入题量进入第一关答对数=题量数输入题量进入第下一关输入题量进入第下一关输入题量进入第下一关输入题量进入第下一关答对数=题量数输入题量进入第下一关输入题量进入第下一关输入题量进入第下一关输入题量进入第下一关答对数=题量数退出系统Switch(5)三、 详细设计#include<stdio.h>#include<stdlib.h>#include<time.h>void menu()printf("*");printf("_小朋友,欢迎你们来学习小学算术_");printf(" ");printf(" 1.加法 ");printf(" 2.减法 ");printf(" 3.乘法 ");printf(" 4.除法 ");printf(" 0.退出 ");printf(" ");printf(" 快选择你要学习的内容吧! ");printf(" ");printf("_");printf("*");void plus1()int count=0,m,n,s,total,k;printf("欢迎进入第一关!n");printf("请设定题目数量:");scanf("%d",&k);while(count<k)printf("%d",m=rand()%10);printf("+");printf("%d",n=rand()%10);printf("=");total=m+n;loopa:scanf("%d",&s);if(s=total)printf("恭喜你,答对了!n");count+;elseprintf("回答错误,请重新回答!n");goto loopa;printf("恭喜你通过了第一关!n");void plus2()int count=0,m,n,s,total,k;printf("欢迎进入第二关!n");printf("请设定题目数量:");scanf("%d",&k);while(count<k)dom=rand()%10;n=rand()%100;while(n<10); printf("%d",m); printf("+"); printf("%d",n); printf("=");total=m+n; loopa:scanf("%d",&s); if(s=total)printf("恭喜你,答对了!n");count+; elseprintf("回答错误,请重新回答!n");goto loopa; printf("恭喜你通过了第二关!n");void plus3()int count=0,m,n,s,total,k;printf("欢迎进入第三关!n");printf("请设定题目数量:");scanf("%d",&k);while(count<k)dom=rand()%100;n=rand()%100;while(m<10&&n<10); printf("%d",m); printf("+"); printf("%d",n); printf("=");total=m+n; loopa:scanf("%d",&s); if(s=total)printf("恭喜你,答对了!n");count+; elseprintf("回答错误,请重新回答!n");goto loopa; printf("恭喜你通过了第三关!n");void sub1()int count=0,m,n,s,total,k;printf("欢迎进入第一关!n");printf("请设定题目数量:");scanf("%d",&k);while(count<k) dom=rand()%10; n=rand()%10;while(m<=n);printf("%d",m);printf("-");printf("%d",n);printf("="); total=m-n; loopa:scanf("%d",&s);if(s=total)printf("恭喜你,答对了!n");count+;elseprintf("回答错误,请重新回答!n");goto loopa;printf("恭喜你通过了第一关!n");void sub2()int count=0,m,n,s,total,k;printf("欢迎进入第二关!n");printf("请设定题目数量:");scanf("%d",&k);while(count<k)do m=rand()%100; n=rand()%10;while(m<10);printf("%d",m);printf("-");printf("%d",n);printf("="); total=m-n; loopa:scanf("%d",&s);if(s=total)printf("恭喜你,答对了!n");count+;elseprintf("回答错误,请重新回答!n");goto loopa;printf("恭喜你通过了第二关!n");void sub3()int count=0,m,n,s,total,k;printf("欢迎进入第三关!n");printf("请设定题目数量:");scanf("%d",&k); while(count<k) dom=rand()%100; n=rand()%100;while(m<=n|m<10|n<10);printf("%d",m);printf("-");printf("%d",n);printf("="); total=m-n; loopa:scanf("%d",&s);if(s=total)printf("恭喜你,答对了!n");count+;elseprintf("回答错误,请重新回答!n");goto loopa;printf("恭喜你通过了第三关!n");void plus()int i;plus1();printf("是否继续挑战?Y(1)/N(0):");scanf("%d",&i);if(i=1)plus2();elsereturn;i=NULL;printf("是否继续挑战?Y(1)/N(0):");scanf("%d",&i);if(i=1)plus3();elsereturn;void sub()int i;sub1();printf("是否继续挑战?Y(1)/N(0):");scanf("%d",&i);if(i=1)sub2();elsereturn;i=NULL;printf("是否继续挑战?Y(1)/N(0):");scanf("%d",&i);if(i=1)sub3();elsereturn;void mul1() int count=0,m,n,s,total,k;printf("欢迎进入第一关!n");printf("请设定题目数量:");scanf("%d",&k);while(count<k) printf("%d",m=rand()%10); printf("*"); printf("%d",n=rand()%10); printf("=");total=m*n; loopa:scanf("%d",&s); if(s=total)printf("恭喜你,答对了!n");count+; elseprintf("回答错误,请重新回答!n");goto loopa; printf("恭喜你通过了第一关!n");void mul2()int count=0,m,n,s,total,k;printf("欢迎进入第二关!n");printf("请设定题目数量:");scanf("%d",&k);while(count<k)do m=rand()%100; n=rand()%10;while(m<10); printf("%d",m); printf("*"); printf("%d",n); printf("=");total=m*n; loopa:scanf("%d",&s); if(s=total)printf("恭喜你,答对了!n");count+; elseprintf("回答错误,请重新回答!n");goto loopa; printf("恭喜你通过了第二关!n");void mul()int i;mul1();printf("是否继续挑战?Y(1)/N(0):");scanf("%d",&i);if(i=1)mul2();void div1()int count=0,m,n,s,total,k;printf("欢迎进入第一关!n");printf("请设定题目数量:");scanf("%d",&k);while(count<k) dom=rand()%10; n=rand()%10;while(n=0|m%n!=0);printf("%d",m);printf("/");printf("%d",n);printf("="); total=m/n; loopa:scanf("%d",&s);if(s=total)printf("恭喜你,答对了!n");count+;elseprintf("回答错误,请重新回答!n");goto loopa;printf("恭喜你通过了第一关!n");void div2()int count=0,m,n,s,total,k;printf("欢迎进入第二关!n");printf("请设定题目数量:");scanf("%d",&k);while(count<k) dom=rand()%100; n=rand()%10;while(n=0|m<10|m%n!=0);printf("%d",m);printf("/");printf("%d",n);printf("="); total=m/n; loopa:scanf("%d",&s);if(s=total)printf("恭喜你,答对了!n");count+;elseprintf("回答错误,请重新回答!n");goto loopa;printf("恭喜你通过了第二关!n");void div3()int count=0,m,n,s,total,k;printf("欢迎进入第三关!n");printf("请设定题目数量:");scanf("%d",&k);while(count<k) dom=rand()%100; n=rand()%100;while(n=0|m<10|n<10|m%n!=0);printf("%d",m);printf("/");printf("%d",n);printf("="); total=m/n; loopa:scanf("%d",&s);if(s=total)printf("恭喜你,答对了!n");count+;elseprintf("回答错误,请重新回答!n");goto loopa;printf("恭喜你通过了第三关!n");void div()int i;div1();printf("是否继续挑战?Y(1)/N(0):");scanf("%d",&i);if(i=1)div2();elsereturn;i=NULL;printf("是否继续挑战?Y(1)/N(0):");scanf("%d",&i);if(i=1)div3();elsereturn;main()void menu();int k;do menu(); printf("请选择:"); scanf("%d",&k); switch(k) case 1:plus();break; case 2:sub();break; case 3:mul();break; case 4:div();break; case 0:break;printf("n");while(k!=0);printf("n");return 0;四、 测试结果1) 主程序界面2) 加法运算3) 减法运算4) 乘法运算5) 除法运算五、 设计体会