利用C语言开发一个“小学生算术四则运算测试系统” 下载本文

内容发布更新时间 : 2024/11/18 18:25:07星期一 下面是文章的全部内容请认真阅读。

b=rand()P0;语句 改为a=rand()0和b=rand()3;

不过这样改不会出现乘数和被乘数至少有一个大于33的情况,例如:45*458=? */

else {

b=rand()P0;//b小于500 由于b有可能等于0,如果b=0,那么后面的 语句c=1000/b不能执行

while(b==0)//此循环保证b不等于0且b小于500 {

b=rand()P0; }

c=1000/b;//等效于数学中b*c=1000

while(1)//保证执行循环体后c不等于0 {

c=rand()%c;//将c=1000/b代入,得c=rand()%(1000/b),则c一定小于1000/b,保证了b*c<1000

if(c!=0)//保证c不等于0 break; }

printf(\前面已近保证b*c<1000 且c已近保证不等于0,若没有保证c不等于0,则会 return(c); }

/* 问题分析:

如果将此程序段改为: else {

b=rand()P0; while(1) {

c=rand()P0; if(c!=0) break; }

printf(\ return(c); }

因为b=rand()P0;所以b有可能为0,所以b*c为0,所以在做除法的时候会出现0除以0的情况,

例如0/0=? 这样的计算在数学中没有意义,而计算机返回的答案是0 */ }

设计过程中现场提问(或答辩)记载: 1. 除法运算中是如何保证算法除尽的? 答:除法程序段为: else { b=rand()P0; while(b==0)//此循环保证b不等于0且b小于500 { b=rand()P0; } c=1000/b; while(1) { c=rand()%c; if(c!=0) break; } printf(\ return(c); } rand()返回一个随机正整数,利用随机数对500求余数,所得的余数赋给b,则b是小于500的正整数,通过循环保证b不等于0,将语句 c=1000/b;代入语句c=rand()%c;中,则可以认为c=rand()%(1000/b),那么c一定是小于1000/b的正整数,且b*c一定小于999。通过循又环保证了c不等于0,printf(\语句中b*c为一整数,用它除以整数b,则答案为整数c,所以除法运算可以除尽。 2. 如果要求系统规定小学生做完多少道题目后(例如20道题后)自动退出系统且需要统计小学生做对以及做错的个数,如何实现? 答:只需要将main()函数修改为: main() { int question_get(); int answer; int temp; int n=1; int right; int wrong; int flag; srand((unsigned)time(NULL));