四则运算功能细化

设计思想:

当编程时感觉做法完全不像当初设计思路里设计的一样,因为设计思路里没有面对这个程序,没有面对这么具体的问题.

不重复的实现,建三个数组,并每次生成随机数后判断a[i]、b[i]、c[i]与上边已有的a[i]、b[i]、c[i]是否相同,若相同重新生成a[i]、b[i]、c[i]。

for(j=0;j<z;j++)

            {

                if(q==a[j]&&w==b[j]&&e==c[j])       判断是否相同

                    {a[i]=random.nextInt(100);      重新产生a[i]

                    b[i]=random.nextInt(100);       重新产生b[i]

                    c[i]=random.nextInt()%4+1;} 重新产生c[i]

            }

可定制的实现,输入一个n,比如n=4,当(i+1)%4==0时,输出一个换行,这样就实现了每行有4个算式。

是否有乘除法的实现,若有乘除法,c取1234,若无乘除c取12.

c取1234时:

if      (c[i]==1) s='+';

        else if (c[i]==2) s='-';

        else if (c[i]==3) s='*';

        else s='/';

c取12时:

if      (c[i]==1) s='+';

        else s='-';

 

实现代码:

package 四则运算;

 

import java.util.Random;

import java.util.Scanner;

 

public class aa {

 

         public static void main(String[] args) {

                   // TODO Auto-generated method stub

                   int i,n,j,m,aa,r = 0;

                   Scanner scanner = new Scanner(System.in);

                   System.out.print("要输出多少道四则运算题,然后敲回车");

                   aa= scanner.nextInt();

                   i=aa;

                   System.out.print("请输入n(每行显示n个式子),然后敲回车");

                   n= scanner.nextInt();

                   System.out.print("是否有乘除法(有 1    无 0),然后敲回车");

                   m= scanner.nextInt();

                   if(m==1)

                            {

                            System.out.print("除法有无余数(有 1    无 0),然后敲回车");

                            r= scanner.nextInt();

                            }

                   scanner.close();

                   int a[],b[],c[];

                   a=new int[i];b=new int[i];c=new int[i];

                   for(i=0;i<aa;i++)

                   {

                   int z,q,w,e;z=i;

                   char s;

                   Random random = new Random();

                   a[i]=random.nextInt(100);

                   b[i]=random.nextInt(100);

 

                   if(m==1)

                   {

                            if(r==1)//有余数

                            {

                                     c[i]=random.nextInt()%4+1;

                                     q=a[i];w=b[i];e=c[i];

                                     for(j=0;j<z;j++)

                                     {

                                               if(q==a[j]&&w==b[j]&&e==c[j])

                                                        {a[i]=random.nextInt(100);

                                                        b[i]=random.nextInt(100);

                                                        c[i]=random.nextInt()%4+1;}

                                     }

                                     if               (c[i]==1) s='+';

                                     else if (c[i]==2) s='-';

                                     else if (c[i]==3) s='*';

                                     else s='/';

                            }

                            else //无余数

                            {

                            a[i]=random.nextInt(100);

                            b[i]=random.nextInt(100);

                            c[i]=random.nextInt()%4+1;

                            q=a[i];w=b[i];e=c[i];

                            for(j=0;j<z;j++)

                                     {

                                               if(q==a[j]&&w==b[j]&&e==c[j])

                                                        {a[i]=random.nextInt(100);

                                                        b[i]=random.nextInt(100);

                                                        c[i]=random.nextInt()%4+1;}

                                     }

                            if               (c[i]==1) s='+';

                            else if (c[i]==2) s='-';

                            else if (c[i]==3) s='*';

                            else {s='/';a[i]=a[i]/b[i]*b[i];}

                            }

                   }

                   else

                   {

                   c[i]=random.nextInt()%2+1;

                   q=a[i];w=b[i];e=c[i];

                   for(j=0;j<z;j++)

                            {

                                     if(q==a[j]&&w==b[j]&&e==c[j])

                                               {a[i]=random.nextInt(100);

                                               b[i]=random.nextInt(100);

                                               c[i]=random.nextInt()%2+1;}

                            }

                   if               (c[i]==1) s='+';

                   else s='-';

                   }

                  

                   System.out.print(a[i]);

                   System.out.print(s);

                   System.out.print(b[i]);

                   System.out.print("=     ");

                   if((i+1)%n==0)

                   System.out.println("");

                   }

         }

 

}

 

结果截图:

 

 

 

心得总结:java技术需要提高,简单的东西也会出错,而且吧,鼓捣半天都改不对,很是气愤

 

时间记录日志

学生:

周盼超

 

日期:

3/19/2015

 

教师:

王建民

 

课程:

PSP

 

     

 

日期

开始时间

结束时间

净时

活动

备注

3月13日

10点10分

12点

100分钟

讲师授课

 

3月15日

9点

9点20分

20分钟

编写程序

 

3月17日

12点

13点30分

90分钟

编写程序

 

3月18日

21点30分

22点

30分钟

制作时间记录日志模板

 

转载于:https://www.cnblogs.com/feifeishi/p/4350861.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C#简单四则运算计算器的软件结构设计(自顶向下、逐步细化): 1. 用户界面模块 - 主界面模块:包含计算器界面的布局、组件的初始化和事件处理等。 - 按键处理模块:负责处理用户在计算器界面上的按键操作,比如数字键、运算符键、清空键等。 2. 数据处理模块 - 输入数据处理模块:负责将用户输入的字符串转换成可以计算的表达式。 - 计算处理模块:负责对表达式进行计算,并返回计算结果。 3. 辅助模块 - 历史记录模块:记录用户的历史计算记录,包括输入的表达式和计算结果。 - 错误提示模块:在用户输入不合法的表达式时,给出相应的错误提示信息。 主要功能模块说明: 1. 主界面模块: - 初始化计算器界面:设置计算器的布局、组件样式和事件处理。 - 处理用户的按键操作:监听用户在计算器界面上的按键操作,根据不同的按键执行相应的操作,比如添加数字、添加运算符、计算结果等。 2. 输入数据处理模块: - 将用户输入的字符串转换成可以计算的表达式:处理用户输入的字符串,去掉空格、判断是否合法等,最终将其转换成可以进行计算的表达式。 3. 计算处理模块: - 对表达式进行计算:接收输入数据处理模块处理后的表达式,进行四则运算的计算,返回计算结果。 4. 历史记录模块: - 记录用户的历史计算记录:将用户每次输入的表达式和计算结果记录下来,方便用户查看历史记录。 5. 错误提示模块: - 在用户输入不合法的表达式时,给出相应的错误提示信息:当用户输入的表达式不合法时,比如除数为0、输入格式不正确等,给出相应的错误提示信息,让用户知道输入有误。 ### 回答2: 自顶向下、逐步细化的方法是一种常用的软件开发方法,也可以用于编写C程序。下面是一个用该方法写出的C程序的示例。 首先,我们可以用一个主函数来定义程序的入口点。在主函数中,我们可以调用其他函数来完成具体的任务。 考虑一个简单的示例,我们要编写一个C程序来计算一个数组的和。首先,我们可以定义一个函数来接收数组和其长度作为参数,并输出数组的和。我们将其命名为sumArray。 接下来,我们可以在主函数中定义一个数组,并为其赋予一些初始值。然后,我们可以调用sumArray函数来计算数组的和。 完整的程序如下所示: ```c #include <stdio.h> // 计算数组的和 int sumArray(int arr[], int length) { int sum = 0; for (int i = 0; i < length; i++) { sum += arr[i]; } return sum; } int main() { int arr[] = {1, 2, 3, 4, 5}; int length = sizeof(arr) / sizeof(arr[0]); int result = sumArray(arr, length); printf("数组的和为:%d\n", result); return 0; } ``` 以上就是使用自顶向下、逐步细化的方法编写的一个简单的C程序示例。程序从主函数开始,调用sumArray函数来计算数组的和,然后输出结果。通过逐步细化,我们将整个程序分成了两个函数,使逻辑更加清晰。这种方法可以更好地组织代码,方便查找和修改。 ### 回答3: 自顶向下、逐步细化是一种常用的编程方法论,可以帮助我们设计和编写复杂的程序。下面我将用300字的篇幅来介绍如何使用这种方法来写出C语言程序。 首先,我们需要明确程序的整体结构和功能。例如,我们要编写一个求解斐波那契数列的程序。在自顶向下、逐步细化的方法中,我们可以将整个程序划分为多个功能模块。 接下来,我们需要选择一个模块,开始细化这个模块的功能。例如,我们选择编写一个函数来计算斐波那契数列的第n个数。我们可以先定义这个函数,并添加必要的注释,说明函数的输入参数和返回值。 然后,我们可以思考如何实现这个函数。我们可以先考虑一些简单的情况,例如当n为0或1时,斐波那契数列的第n个数分别为0或1。我们可以先编写代码来处理这些简单情况。 接着,我们继续细化代码,考虑其他情况。例如,当n大于1时,斐波那契数列的第n个数等于前两个数的和。我们可以使用一个循环或递归来实现这个计算过程,并将结果返回。 在实现一个模块后,我们可以进行测试,以确保它的正确性。例如,我们可以编写一个函数来打印斐波那契数列的前n个数,并调用之前实现的计算函数来计算每个数。 最后,我们可以继续细化其他模块,将它们添加到程序中,直到整个程序完成。在每个细化的步骤中,我们需要注意代码的复用和模块之间的协调,以确保程序的结构清晰、可读性高,同时功能正确。 通过自顶向下、逐步细化的方法,我们可以更加清晰地思考程序的逻辑,减少出错的可能性,并且方便模块化和代码重用。这是一种优秀的编程方法论,在实际编程中很有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值