作业二:四则运算
题目:自动生成四则运算题目
主要功能:通过界面选择,可选择生成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语言来编写,虽然这项作业仍旧花费了我许多时间和精力,但是,在编写的过程中我也收获满满。刚开始看到题目时,我毫无头绪不知从何下手,老师就提出“由简到繁 ”这个概念,先完成一个最基础的程序再逐步完善功能。按照老师的方法,当我逐步去做的时候发现,其实编程没有我想象中的那么难,但是一定要有编写的思路和流程,很多东西到后来就水到渠成。虽然在过程我依旧遇到很多困难(基础的知识掌握不牢的问题),但是在编写的过程中通过看书和网上查阅边学边写,很多问题都迎刃而解,自己在过程中也巩固了之前的知识并学习了新知识。