这是我们C语言期中大作业,做一个小学生算数系统,有如下九个功能,其实老师只要求了3个功能,我将其扩充到9个,这个大作业没有用到指针等,那个时候我们还没有学到那里。
这里面的难点和解决方案有:
难点1:输入非数字的符号或字母,程序会立刻进入死循环。
解决:选择了scanf函数的特点a=scanf(“%d”,&m);如果输入的是数字则a=1否则a=0;将a的值放入死循环中,直到为1是break;
难点2:优化界面的时候,没有办法使字打到正中间。
解决:我运用了数组来解决这个问题定义了一个数组,然后也用到了windows的相关函数来进行优化
难点3:关于鸡兔同笼问题头和腿的取值范围问题,如何解决这个正好有整数解的问题。
解决:此处主要运用了逆向思维的方法,先将鸡和兔的头分别随机产生,然后根据其运算关系算出我们出题的数据和我们本道题的结果等问题。
创新点为:
创新点1:优化了C语言的初始界面
实现:利用数组和windows.h的头文件来进行优化。
创新点2:使这个程序不是很容易出错和死循环
实现:如果输入其他字母或字符系统会给出提示语不会进入死循环,而是要求使用者重新输入。
创新点3:实现的功能的多样化,整个程序多了五个功能,丰富了小学生的业余生活。
实现:通过对应的代码和各种问题的解决方法实现了功能的多样化。
设计思路为:
第一步:先通过函数的思想将各个小块的代码放到一个函数里,方便来反复调用。
第二步:根据所给的要求,设计出功能1到功能4,将所要求的的都包括在这四个功能中,其中选择中使用了菜单函数。
第三步:因为是产生随机数及其运算,所以我打算用大量的随机数来实现所有的功能。
第四步:思路整理完毕就可以开始编程,首先在菜单栏上首先要解决掉吃掉回车这个问题,在最后加一个getchar()就可以解决。
第五步:在做对十道题这个功能中,我加入了计数器,以便小学生能更加清晰的知道自己做对了多少道题,使得这个系统观看更加直白。
第六步:计数器原理也应用到了有正确率这个要求中来,在循环外加上计数器的初始值。
第七步:完成了大体的思路就开始优化程序,在最开始的程序中如果我输入一个非数字类的字符,程序就会进入死循环。所以利用scanf函数如果输入数字其表达式的值就是1,若是非数字则提示“请输入数字”以此来增加程序的实用性。
第八步:我在页面上也做出了优化,利用了数组来优化整个页面,也使得菜单栏更加的美观。
第九步:我在我的程序中也加入了其他的功能,例如取余运算、二进制数字转化为十进制数字、十进制转化为二进制、小学奥数题(鸡兔同笼)问题,并给出了合理的解决方法。
源代码如下: