作业-四则运算题目生成程序
博客班级 | https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/ |
---|---|
作业要求 | https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11376 |
作业目标 | 写一个能自动生成小学四则运算题目的程序 |
学号 | 3190704134 |
题目要求
写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:
1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24
2)程序要求能处理用户的输入,判断对错,累积分数
3)程序支持可以由用户自行选择加、减、乘、除运算
4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目
完成要求1(C)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main()
{
int i=0;
int n=0;
int x=0;
int type;
char flag;
int left, right;
float result;
printf("请输入要出的题目数量\n");
scanf("%d",&n);
srand(unsigned(time(NULL)));
while(x<n)
{
type = rand() % 4;
left = rand() % 100;
right = rand() % 100;
switch(type)
{
case 0:
printf("%d + %d = ?\n", left, right);
break;
case 1:
printf("%d - %d = ?\n", left, right);
break;
case 2:
printf("%d * %d = ?\n", left, right);
break;
case 3:
printf("%d / %d = ?\n", left, right);
break;
}
i++;
while(i>=n)
{
printf("一共 %d 题\n",i);
printf("继续?[Y/N]\n");
fflush(stdin);
scanf("%c",&flag);
if(flag=='Y'||flag=='y')
{
printf("请输入要出的题目数量\n");
scanf("%d",&n);
i=0;
break;
}
printf("谢谢使用!\n");
fflush(stdin);
getchar();
return 0;
}
}
}
完成所有要求(Java)
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Main{
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File file = new File("result.txt"); //生成保存结果的文件
FileOutputStream fop = new FileOutputStream(file);
if (!file.exists()) {
file.createNewFile();
}
int x;//题目数量
System.out.println("请输入题目的数量:");
Scanner scan2 = new Scanner(System.in);
x = scan2.nextInt();
String serialNo = "201571030306";
fop.write(serialNo.getBytes()); //写入学号
fop.write("\r\n".getBytes()); //换行
for(int i=0;i<x;i++){
int a=(int)(Math.random()*100);
int b=(int)(Math.random()*100);
int c=(int)(Math.random()*100);
String q=""; //保存运算式
int ans=0;
int[] flag=new int[2];
for(int j=0;j<2;j++){
int f=(int)(Math.random()*4);
switch(f){
case 0:
if(j==0){
q=a+"+"+b;
}
else{
q=q+"+"+c;
}
flag[j]=0;
break;
case 1:
if(j==0){
q=a+"-"+b;
}
else{
q=q+"-"+c;
}
flag[j]=1;
break;
case 2:
if(j==0){
q=a+"*"+b;
}
else{
q=q+"*"+c;
}
flag[j]=2;
break;
case 3:
if(j==0){
q=a+"/"+b;
}
else{
q=q+"/"+c;
}
flag[j]=3;
break;
}
}
if(flag[0]<2){
if(flag[1]<2){
if(flag[0]==0){
ans=a+b;
}
else{
ans=a-b;
}
if(flag[1]==0){
ans+=c;
}
else{
ans-=c;
}
}
else{
if(flag[1]==2){
ans=b*c;
}
else{
if(c==0){
continue;
}
if(b<c || b%c!=0) {
i=i-1; //如果出现重新循环
continue; //判断结果不能为负数和非整数
}
ans=b/c;
}
if(flag[0]==0){
ans+=a;
}
else{
ans=a-ans;
}
}
}
else{
if(flag[0]==2){
ans=a*b;
}
else{
if(b==0){
continue;
}
if(a<b || a%b!=0) {
i=i-1; //如果出现重新循环
continue; //判断结果不能为负数和非整数
}
ans=a/b;
}
if(flag[1]==0){
ans+=c;
}
else if(flag[1]==1){
ans-=c;
}
else if(flag[1]==2){
ans*=c;
}
else{
if(c==0){
continue;
}
if(ans<c || ans%c!=0) {
i=i-1; //如果出现重新循环
continue; //判断结果不能为负数和非整数
}
ans/=c;
}
}
if(ans<0) //判断结果不能为负数
{
i=i-1; continue;
}
q=q+"="+ans; //用字符串将算式和答案连在一起
System.out.println(q);
fop.write(q.getBytes()); //写入表达式
fop.write("\r\n".getBytes()); //换行
}
fop.close();
}
}
任务内容 | 计划完成所需时间(min) | 实际完成所需时间(min) |
---|---|---|
计划 | 10 | 10 |
完成任务所需时间,并规划工作步骤 | 10 | 10 |
开发 | 60 | 70 |
需求分析 | 0 | 0 |
生成设计文档 | 0 | 0 |
设计复审 | 0 | 0 |
代码规范 | 0 | 0 |
具体设计 | 10 | 10 |
具体编码 | 5 | 5 |
代码复审 | 5 | 5 |
测试 | 20 | 20 |
报告 | 0 | 0 |
测试报告 | 0 | 0 |
计算工作量 | 0 | 0 |
事后总结,并提出过程改进计划 | 10 | 10 |