题目:自动生成四则运算题目
主要功能:可以生成20以内除整数以外,支持真分数的四则运算,生成需要的题数量,题目随机。
设计思想:首先,我先从编写最简单的部分开始入手,将需要生成的8种可能出现的题目格式编写出来基本代码如下:
#include<stdio.h> int main() { int a,b,x,y,; printf("%d+%d= ",a,b); printf("%d-%d= ",a,b); printf("%d*%d= ",a,b); printf("%d/%d= ",a,b); printf("%d/%d+%d/%d= ",a,x,b,y); printf("%d/%d-%d/%d= ",a,x,b,y); printf("%d/%d*%d/%d= ",a,x,b,y); printf("%d/%d/%d/%d= ",a,x,b,y); }
将以上代码编写完毕后,运行,会发现a,b,x,y这四个数的数值会非常大,所以接下来我选择去定义数值的大小,rand()语句来定义数值大小,虽然自己可以简单写出rand()定义数值大小的代码,但是在编写程序随机出现次数的地方,遇到了麻烦,一开始我编写的程序只能固定生成一个数值,一直都是1/7-=这个题目,在这里我遇到了瓶颈,在加上自己的基础知识并不牢固,所以无从下手,这之间我参考了网上,主要是百度知道为主,观看其他人在编写这个程序时遇到的问题,找到了基本入手的框架。在后来,通过学习,自己试着添加了可以管理生成题目数量的功能。
参考网页:
http://zhidao.baidu.com/link?url=wKnpo3-cgxWvaEfToguP3pdLzNX4hsT1n70TWgjuSjdInjISfFXaoTVIq4WjD30V_qY0_HKTNYHA9GVuhWDp-q
在此网页上,在回答的好心人里我看到了,使程序可以随机生成需要次数的语句
#include <time.h> srand((unsigned)time(NULL)); for (i=0;i<10;i++)
参照,这个网页所给的框架,经过对自己程序的修改最终将整体程序完成了一个随机生成题目数目和题的程序。
源代码:
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
main(){
int a,b,x,y,i,j,z;
srand( (unsigned)time( NULL ) );
printf("题目数量:");
scanf("%d",&i);
for(j=0;j<i;j++)
{
a=rand()%20;
b=rand()%20;
x=rand()%20;
y=rand()%20;
z=rand()%7;
switch(z){
case 0:printf("%d+%d=
",a,b);break;
case 1:printf("%d-%d=
",a,b);break;
case 2:printf("%d*%d=
",a,b);break;
case 3:printf("%d/%d=
",a,b);break;
case 4:printf("%d/%d+%d/%d=
",a,x,b,y);break;
case 5:printf("%d/%d-%d/%d=
",a,x,b,y);break;
case 6:printf("%d/%d*%d/%d=
",a,x,b,y);break;
case 7:printf("%d/%d/%d/%d=
",a,x,b,y);break;
}
}
}
程序运行截图:
总结:
一开始我只是做了生成一个随机题目的程序便发到了博客里,但是我看了别的同学还添加了可以管理生成题目数量的功能,我觉得我的程序并不够好,便通过学习试着添加了这个功能,让我的程序更加完善了。通过这次作业,我的收获很多,因为自己的基础并不是很好,所以,有些代码可以说并不知道,通过这次编写题目生成程序,让我学到了很多新的代码,最深刻的就是编写随机生成题目数目的代码:
#include<time.h> srand( (unsigned)time( NULL ) ); for( j = 0; j < i;j++ )
在编程中我也遇到了很多问题,比如在最后一步设计输入题目数量的时候,不管怎样输入数量题目只能生成一道题,最后,经过自己上网查看资料和同学的帮助解决了问题,原因是自己少定义了一个变量,switch语句和之前定义题目数量时使用的变量重复,导致程序出现了错误。这次作业也让我认识到,只有不断重复的练习,才能真正掌握其中运用的语言,经过大一的c语言学习,到现在已经很久没用过了,也有很多知识点有所遗忘,我也好好复习了之前的知识。这次编程作业,我了解到自己的很多不足,和其它一些学习优秀的同学比,我应该多向他们学习,用更多地时间去多练习下编程语言,其实这次的作业我虽然完成了,但是也有很多需要改进的地方,看别的同学编的程序,还新增加了问答系统。在课下,我会多看看这些人编的程序,看看这些功能是如何实现的,自己也学习下。这次作业所运用的编程语言知识,我也会多加练习,将其彻底掌握理解。