收藏 分销(赏)

数学程序设计1.doc

上传人:pc****0 文档编号:6176207 上传时间:2024-11-29 格式:DOC 页数:7 大小:50KB 下载积分:10 金币
下载 相关 举报
数学程序设计1.doc_第1页
第1页 / 共7页
数学程序设计1.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
#include <stdio.h> /* 调用库函数 */ #include <stdlib.h> #include<time.h> /* 调用库函数 */ # define SIZE 1 int Tha; /* 变量 表示第一个运算数 */ int Thb; /* 第二个运算数 */ int Tresult; /* 正确答案 */ int Qcount; /* 题目的个数 */ int Upnum; /* 升级的分数 */ int Tscore; char op; /* 运算符号 */ struct mathti { int Tscore; /* 当前得分 */ int DG; /* 当前等级 */ }math[SIZE]; TestTen() /* 出第一个级别题的函数 */ { int Userda; /* 用户给出的答案 */ int temp; /* 临时变量,用于交换两个变量得值 */ op=rand()%4+1; /* 产生一个1-4之间的随机数,用于表示+ ,- , * , / */ switch(op) /* 判断运算符是什么 */ { case 1: /* 加 的情况 */ { Tha=rand()%10; /* 产生一个0-9之间的随机数 放在第一个运算数 Tha中 */ Thb=rand()%10; /* 产生一个0-9之间的随机数 放在第二个运算数 Thb中 */ Tresult=Tha+Thb;break; /* 计算出正确答案 放在 Tresult中 */ } case 2: /* 减 的情况 */ { Tha=rand()%10; Thb=rand()%10; if(Tha<Thb) /* 减不能的负 所以第一个运算数要比第二个大,如果小,则交换两变量的值 */ {temp=Tha;Tha=Thb;Thb=temp;} /* 交换 */ Tresult=Tha-Thb;break; /* 计算出正确答案 放在 Tresult中 */ } case 3: /* 乘 的情况 */ { Tha=rand()%10; Thb=rand()%10; Tresult=Tha*Thb;break; } case 4: /* 除 的情况 */ {do /* 循环 保证可以除尽 */ { do /* 循环保证 除数不为 0 */ {Tha=rand()%10; Thb=rand()%10; if(Tha<Thb) {temp=Tha;Tha=Thb;Thb=temp;} } while(Thb==0) ; /* 当除数0 的时候继续产生新的随机数 */ } while((Tha%Thb)!=0); /* 当不能整除的时候继续产生新的随机数 */ Tresult=Tha/Thb; break; } } switch(op) /* 根据 op的值决定输出 问题 */ { case 1: {printf("\n%d + %d = ",Tha,Thb);break;} case 2: {printf("\n%d - %d = ",Tha,Thb);break;} case 3: {printf("\n%d X %d = ",Tha,Thb);break;} case 4: {printf("\n%d / %d = ",Tha,Thb);} } scanf("%d",&Userda); /* 用户输入答案 */ while(Userda!=Tresult) /* 判断答案是否正确 */ { if(math[0].Tscore>=10) /* 不正确减分 */ math[0].Tscore=math[0].Tscore-10; printf("\n错误! 现在你的分数为 : %d",math[0].Tscore); /* 输出错误信息和 当前分数 */ printf("\n 请再次输入答案 : "); /* 提示重新输入 */ scanf("%d",&Userda); /* 用户输入答案 */ } math[0].Tscore=math[0].Tscore+10; /* 答对了 加分 */ printf("\n 正确 ! 现在你的分数为 : %d",math[0].Tscore); /* */ } TestHun() /*出第二个级别题的函数*/ { int Userda; int temp; op=rand()%4+1; switch (op) { case 1: { Tha=rand()%90+10; /* 产生 10-99 之间的随机数,即两位数 */ Thb=rand()%90+10; Tresult=Tha+Thb;break; } case 2: { Tha=rand()%90+10; Thb=rand()%90+10; if(Tha<Thb) {temp=Tha;Tha=Thb;Thb=temp;} Tresult=Tha-Thb;break; } case 3: { Tha=rand()%90+10; Thb=rand()%90+10; Tresult=Tha*Thb;break; } case 4: {do { do {Tha=rand()%90+10; Thb=rand()%90+10; if(Tha<Thb) {temp=Tha;Tha=Thb;Thb=temp;} }while (Thb==0) ; }while ((Tha%Thb)!=0); Tresult=Tha/Thb; break; } } switch(op) { case 1: {printf("\n%d + %d = ",Tha,Thb);break;} case 2: {printf("\n%d - %d = ",Tha,Thb);break;} case 3: {printf("\n%d X %d = ",Tha,Thb);break;} case 4: {printf("\n%d / %d = ",Tha,Thb);} } scanf("%d",&Userda); while(Userda!=Tresult) { if(math[0].Tscore>=10) math[0].Tscore=math[0].Tscore-10; printf("\n错误! 现在你的分数是 : %d",math[0].Tscore); if(math[0].Tscore<Upnum) /* 如果分数小于设定的分数则直接退出函数 */ return; printf("\n 请再次输入答案 : "); scanf("%d",&Userda); } math[0].Tscore=math[0].Tscore+10; printf("\n 正确 ! 你的分数是 : %d",math[0].Tscore); } void main() { int Leiji=0; /* 变量 , 存储 累计答题数目 */ srand((int)time(0)); /* 保证每次运行程序 产生的随机数序列不相同的语句 */ /* 清屏 : 清除屏幕上上次运行的内容,重新开始运行程序 */ printf("\n欢迎使用: 学好算数 \n"); printf("请输入要计算的问题个数\n: "); /* 提示信息 :输入问题个数 */ scanf("%d",&Qcount); /* 用户输入问题个数 */ do {printf("\n 请输入晋级所需要的分数(答对一题得10分) : "); /* 提示信息 :输入升级分数(10的倍数 ) */ scanf("%d",&Upnum); /* 用户输入升级分数 */ if(Upnum<10) /* 如果用户输入的升级分数<10 */ printf("\n Must > = 10 ! "); else if(Upnum%10!=0) /* 如果用户输入的升级分数不是10的倍数 :即 整除10 不等于0 */ printf("\n Must Some Times of 10!(10 的倍数!)"); else if(Upnum<(0.9*Qcount*10)) /* 如果用户输入的升级分数<90%的总分 */ printf("\n 晋级分数满足为总分的0.9以上"); else if(Upnum>(Qcount*10)) /* 如果用户输入的升级分数>总分 */ printf("\n晋级分数必须不大于总分 "); else break; }while(1); /* 不满足条件永远循环 */ printf("\n "); printf("\n "); printf("\n开始测试:"); printf("\n "); printf("\n "); printf("\n 第一级别的测试 :"); Begin1: printf("\n "); printf("\n 问题: %d",Leiji+1); /* 输出 题号 */ TestTen(); Leiji++; if(Leiji==Qcount) /* 如果做题个数 和 事先设定好的问题个数相同 则结束答题! */ { printf("\n "); printf("\n \n"); printf("\n 测试结束!!!\n"); printf("\n \n"); printf("\n 你的最终分数为: %d",math[0].Tscore); if(math[0].Tscore>=Upnum) printf("\n 你的最终的级别为: 第%d级别\n",math[0].DG=2); else printf("\n 你的最终的级别为: 第%d级别\n",math[0].DG=1); return; } if(math[0].Tscore<Upnum) /* 分数 小于 升级分数 */ goto Begin1; /* 转向到 Begin1 继续作题 */ printf("\n 恭喜你晋级了!\n 第2级别的测试开始 : "); /* 达到升级分数 升级到 Level2 */ Begin2: printf("\n "); printf("\n 问题 : %d",Leiji+1); TestHun(); Leiji++; if(Leiji==Qcount) { printf("\n "); printf("\n \n"); printf("\n 测试结束!!!\n"); printf("\n "); printf("\n 你的最终分数为: %d",math[0].Tscore); if(math[0].Tscore>=Upnum) printf("\n 你的最终的级别为 : 第%d级别\n",math[0].DG=2); else printf("\n 你的最终的级别为: 第%d级别\n",math[0].DG=1); return; } if(math[0].Tscore<Upnum) {printf("\n你降级了! 第一级别测试开始 : "); /* 从Level2答题过程中分数小于升级分数 降级到Level 1 继续答题 */ goto Begin1;} else goto Begin2; } void save() { FILE *fp; if((fp=fopen("math_list","wb"))==NULL) { printf("file write error\n"); return; } if(fwrite(&math[0],sizeof(struct mathti),1,fp)!=1) printf("file write error\n"); if ((fp=fopen("math_list","rb"))==NULL); {printf("can not open file\n"); exit(0);} { fseek(fp, sizeof(struct mathti),0); fread(&math[0],sizeof(struct mathti),1,fp); printf("%d %d \n",math[0].Tscore,math[0].DG); } fclose(fp); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服