题目:自动生成四则运算题目
主要功能:通过界面选择,可选择生成n道整数或是真分数的四则运算题目。
设计思想:由简到繁,逐步完成功能。
随机生成一个100以内随机整数加法四则运算。用到rand()函数。
完善随机符号功能,用到switch()函数,通过0,1,2,3四个数字进行分支+-*/符号。
完善减法和除法功能:在减法中,由于是小学生四则运算,所以结果避免出现负数;在除法中,除数不能为0。
完善循环功能,最初设置为10道题目。使用for()。
到此,整数的四则运算的基本程序已经完成。接下来是在整数程序的基础上编写真分数四则运算。真分数四则运算的程序与整数的程序基本相同,由于真分数需要由两个随机数组成一个随机数,所以增加了两个随机数,但是基本思路和整数的程序相同,此处不再介绍。下面是两个程序整合的思路:
整合整数与真分数四则运算的程序。用if语句判断生成四则运算的种类(1为整数,2为真分数)。
完善生成题目个数功能,由原来的10道变成由用户自选。
源代码:
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int n,j;//n生成四则运算题目个数;j选择四则运算种类
printf("请输入要生成四则运算题目的个数:");
scanf("%d",&j);
printf("请输入要生成的四则运算种类(1为整数,2为真分数):");
scanf("%d",&n);
if(n==1)//生成整数四则运算
{
int a,b,i,t;//a第一个数;b第二个数;
char c;//符号
srand((unsigned)time(NULL));
for(i=0;i<j;i++){
a=rand()%100;
b=rand()%100;
c=rand()%4;
switch(c){
case 0:c='+';break;
case 1:if(a<b){t=a;a=b;b=t;};c='-';break;
case 2:c='*';break;
case 3:if(b!=0){c='/';}else{i=i+1;};break;
}
printf("%d%c%d=\n",a,c,b);
}
}
else{
int a,b,a1,b1,i;//a,b第一个分数; a1,b1第二个分数
char c;//符号
srand((unsigned)time(NULL));
for(i=0;i<j;i++){
a=(int)rand()%100;
b=(int)rand()%100;
while(a==0||a>=b){
a=(int)rand()%100;
b=(int)rand()%100;
}
a1=(int)rand()%100;
b1=(int)rand()%100;
while(a1==0||a1>=b1){
a1=(int)rand()%100;
b1=(int)rand()%100;
}
c=rand()%4;
switch(c){
case 0:c='+';break;
case 1:c='-';break;
case 2:c='*';break;
case 3:c='/';break;
}
printf("%d/%d%c%d/%d=\n",a,b,c,a1,b1);
}
}
}
程序运行截图:
总结:
这次编写的程序对我来说是个挑战,我在编程这方面并不擅长基础也不是十分扎实,所以我选择了我掌握比较好的c语言来编写,虽然这项作业仍旧花费了我许多时间和精力,但是,在编写的过程中我也收获满满。刚开始看到题目时,我毫无头绪不知从何下手,老师就提出“由简到繁 ”这个概念,先完成一个最基础的程序再逐步完善功能。按照老师的方法,当我逐步去做的时候发现,其实编程没有我想象中的那么难,但是一定要有编写的思路和流程,很多东西到后来就水到渠成。虽然在过程我依旧遇到很多困难(基础的知识掌握不牢的问题),但是在编写的过程中通过看书和网上查阅边学边写,很多问题都迎刃而解,自己在过程中也巩固了之前的知识并学习了新知识。