zoukankan      html  css  js  c++  java
  • week2:个人博客作业

    1.这周写程序感想:

      昨天差不多,也是这个时候看些的程序,写了4个小时程序,感触颇多。昨日,原打算,就完成程序就吧这个随笔写完结果,由于各种原因,没写一直拖到现在。就做昨天写的程序,本身题目很简单,主要要求:

    (1)  是否有乘除法

    (2)  是否有括号

    (3)  数值范围

    (4)  加减有无负数

    (5)  除法有无余数

    (6)  是否支持分数(真分数、假分数

    (7)  是否支持小数(精确到多少位?)

     (1).每一个要求单独拿出来都很简单,可是,混合起来思考的角度就不同,写程序的时候由于很着急,想早点完事,结果越写越多根本停不下来,一点都不困了(我终于,有点明白为什么IT行业的人可以熬夜,熬得很晚了,一般我看其他科目的内容到这个时间,基本上是看不里去),由于,开始写程序的时候太着急,以前学程序学到的东西都忘记了,应该看到题目后看看,要求有哪些,自己可以完成的是哪些要求,要完成这些程序需要的大框架是什么,先在纸上写成来,然后在把这个大框架下的每一个小的模块是什么,需要写的是什么(哪些是需要写成子函数的),然后再在电脑上写程序。而不是,我看到题目要求后先看哪个要求好实现,完成一个要求后再完成下一个要求,没有连贯性,最后的结果就是这个程序只使用了一个函数,好多地方都显得很臃肿的感觉,在写程序的中途想起来,使用子函数来写程序,可是,这自己的程序框架基本上已经完成了,在该就需要破坏自己的框架,再构建一个新的。

     (2).由于第二个程序是第一个程序的扩展,所以一个最初的变量名是一样,在写第二个程序的时候,由于第一个程序中的变量名定义的不合理,导致自己第二个程序中的变量名重新设计了一遍。虽然还是设计的不方便,但是自己使用起来还是好用的。自己需要完善的是:自己设计变量名设计的方法需要再学习,自己使用变量名不能就使用a,b,c之类(这些使用起来方便)。

     (3)这是我写程序遗留下来的一些问题(虽然对这门课程来说不是重点)

    我设计为3项多项式

    四则运算,

    还有括号 ,

    加减有无负数

    除法有无余数

    我想解决的问题是

    a.产生一个n项多项式

    一个子函数内通过for循环来说实现,而不是现在我通过枚举法,把所有的可能都举出来

    b.就程序(下面的是一种思路没有做)(0表示没有符号 5,6表示左右括号,1,2,3,4,分别表示四则运算)

    我把运算符放在一个数组a[n+1]里(规定括号的个数只有一个)

    通过随机数产生左括号在数组的位置

    b1=rand()%(n-1)

    再通过随机数产生右括号

    b2=rand()%(n-b1)+b1+1

    if(rand()%(n-b1)==0)

    b2=b1+2;

    剩下的数组

    for(i=0;i<n+1;i++)

    {

    if(a[i]==0)

    随数产生每一位的四则运算

    }

    再通过类似的方法产生一个b[n+1]存入数字的数组,然后通过运算符的优先级算出最后结果最后:

    减法无负数

    除法有无余数不知道该怎么优化填写。

    #include "stdafx.h"
    #include"stdlib.h"
    #include"stdio.h"
    #include"time.h"
    #define N 4   //控制产生随机数的个数
    int main(int argc, char* argv[]) //还有3个项的多项式,控制的参数有1,乘除;2,括号;3,加减后的结果是否是负数;4,除法是否有余数
    {
        int a[3];            //表示随机产生的3数
        int f[4];            //设计参数 f[0]是否有乘除;f[1]是否有括号,f[2]加减结有无负数,f[3]除法有无余数
        int d[2]={0,0};  //d[]分别表示左括号,右括号的位置
        int e[2];       //e[0]表示第一个位置的运算符号;e[1]表示第二个位置的数运算符号
        int z[N];       //存入每一个式子结果
        int f1[N];       //记录每一个式子的对错
        int n;
        int x;            //输入结果
        srand((unsigned)time(NULL));
        n=0;
        printf("是否有乘除?
    0,不是	1,是
    请输入选项
    ");
        scanf("%d",&f[0]);
        printf("是否有括号?
    0,不是	1,是
    请输入选项
    ");
        scanf("%d",&f[1]);    
        printf("加减结有无负数?
    0,不是	1,是
    请输入选项
    ");
        scanf("%d",&f[2]);
        printf("除法有无余数?
    0,不是	1,是
    请输入选项
    ");
        scanf("%d",&f[3]);
        while(n<N)
        {
            if(f[0]==1)
            {
                e[0]=rand()%4;           // 0表示加 1表示减 2表示乘 3表示除
                e[1]=rand()%4;           // 0表示加 1表示减 2表示乘 3表示除
            }
            else    
            {
                e[0]=rand()%2;           // 0表示加 1表示减
                e[1]=rand()%2;           // 0表示加 1表示减
            }
            if(f[1]==1)
            {
                d[0]=rand()%3;
                if(d[0]!=0)
                {
                    d[1]=d[0]+1;
                }
            }
            a[0]=rand()%100;
            a[1]=rand()%100;
            a[2]=rand()%100;
            if(d[0]==1)
            {
                switch(e[0])
                {
                    case 0:z[n]=a[0]+a[1];break;
                    case 1:
                        {
                            if(f[2]==0)
                                a[1]=rand()%a[0];
                            z[n]=a[0]-a[1];break;
                        }
                    case 2:z[n]=a[0]*a[1];break;
                    case 3:
                        {/**/
                            if(f[3]==0)
                            {
                                while(a[1]%a[0]!=0)
                                {    
                                    a[0]=rand()%100;
                                    a[0]=a[0]*a[1];
                                    if(a[0]<100)
                                        break;
                                    else
                                        a[0]=rand()%100;
                                }
                            }
                            
                            z[n]=a[0]/a[1];break;
                        }
                }
                switch(e[1])
                {
                    case 0:z[n]=z[n]+a[2];break;
                    case 1:
                        {
                            if(f[2]==0)
                                a[2]=rand()%z[n];
                            z[n]=z[n]-a[2];break;
                        }
                    case 2:z[n]=z[n]*a[2];break;
                    case 3:
                        {/**/
                            if(f[3]==0)
                            {
                                while(z[n]%a[2]!=0)
                                    a[2]=rand()%z[n];
                            }
                            
                            z[n]=z[n]/a[2];break;
                        }
                }
            }
            else if(d[0]==2)
            {
                switch(e[1])
                {
                    case 0:z[n]=a[1]+a[2];break;
                    case 1:
                        {
                            if(f[2]==0)
                                a[2]=rand()%a[1];
                            z[n]=a[1]-a[2];break;
                        }
                    case 2:z[n]=a[1]*a[2];break;
                    case 3:
                        {/**/
                            if(f[3]==0)
                            {
                                while(a[1]%a[2]!=0)
                                {
                                    a[1]=rand()%100;
                                    a[1]=a[1]*a[2];
                                    if(a[1]<100)
                                        break;
                                    else
                                        a[1]=rand()%100;
                                }
    
                            }
                            z[n]=a[1]/a[2];break;
                        }
                }
                switch(e[0])
                {
                    case 0:z[n]=a[0]+z[n];break;
                    case 1:
                        {
                            if(f[2]==0)
                            {
                                while(a[0]-z[n]<0)
                                {
                                    a[0]=rand()%100;
                                    a[0]=z[n]+a[0];
                                    if(a[0]<=100)
                                        break;
                                    else 
                                        a[0]=rand()%100;
                                }
                            }
                            z[n]=a[0]-z[n];break;
                        }
                    case 2:z[n]=a[0]*z[n];break;
                    case 3:
                        {
                            /**/if(f[3]==0)
                            {
                                while(a[0]%z[n]!=0)
                                {
                                    a[0]=rand()%100;
                                    a[0]=z[n]*a[0];
                                    if(a[0]<=100)
                                        break;
                                    else
                                        a[0]=rand()%100;
                                }
                            }
                            z[n]=a[0]/z[n];break;
                        }
                }
            }
            else
            {
                if(e[0]>=2)
                {
                    switch(e[0])
                    {
                        case 2:z[n]=a[0]*a[1];break;
                        case 3:
                            {
                            /*    */if(f[3]==0)
                                {
                                    while(a[0]%a[1]!=0)
                                    {
                                        a[0]=rand()%100;
                                        a[0]=a[1]*a[0];
                                        if(a[0]<=100)
                                            break;
                                        else
                                            a[0]=rand()%100;
                                    }
                                }
                                z[n]=a[0]/a[1];break;
                            }
                    }
                    switch(e[1])
                    {
                        case 0:z[n]=z[n]+a[2];break;
                        case 1:
                            {
                                if(f[2]==0)
                                {
                                    if(z[n]-a[2]<0)
                                        a[2]=rand()%z[n];
                                }
                                z[n]=z[n]-a[2];break;
                            }
                        case 2:z[n]=z[n]*a[2];break;
                        case 3:
                            {/**/
                                if(f[3]==0)
                                {
                                    while(z[n]%a[2]!=0)
                                        a[2]=rand()%z[n];
                                }
                                
                                z[n]=z[n]/a[2];break;
                            }
                    }
                }
                else if(e[1]<=1)
                {
                    switch(e[0])
                    {
                    case 0:z[n]=a[0]+a[1];break;
                    case 1:
                        {
                            if(f[2]==0)
                            {
                                if(a[0]-a[1]<=0)
                                    a[1]=rand()%a[0];
                            }
                            z[n]=a[0]-a[1];break;
                        }
                    }
                    switch(e[1])
                    {
                        case 0:z[n]=z[n]+a[2];break;
                        case 1:
                            {
                                if(f[2]==0)
                                {
                                    if(z[n]-a[2]<=0)
                                        a[2]=rand()%z[n];
                                }
                                z[n]=z[n]-a[2];break;
                            }
                    }
                }
                else
                {
                    switch(e[1])
                    {
                        case 2:z[n]=a[1]*a[2];break;
                        case 3:
                            {/**/
                                if(f[3]==0)
                                {
                                    while(a[1]%a[2]!=0)
                                    {
                                        a[1]=rand()%100;
                                        a[1]=a[2]*a[1];
                                        if(a[1]<=100)
                                            break;
                                        a[1]=rand()%100;
                                    }
                                }
                                z[n]=a[1]/a[2];break;
                            }
                    }
                    switch(e[0])
                    {
                        case 0:z[n]=a[0]+z[n];break;
                        case 1:
                            {
                                if(f[2]==0)
                                {
                                    while(a[0]-z[n]<0)
                                    {
                                        a[0]=rand()%100;
                                        a[0]=z[n]+a[0];
                                        if(a[0]<=100)
                                            break;
                                        else 
                                            a[0]=rand()%100;
                                    }
                                }
                                z[n]=a[0]-z[n];break;
                            }
                    }
                }
    
            }                                  
            printf("%d,",n+1);                            //显示式子
            if(d[0]==1)
                printf("(");
            printf("%d",a[0]);
            switch(e[0])
            {
            case 0:printf("+");break;
            case 1:printf("-");break;
            case 2:printf("*");break;
            case 3:printf("/");break;
            }
            if(d[0]==2)
                printf("(");
            printf("%d",a[1]);
            if(d[1]==2)
                printf(")");
            switch(e[1])
            {
            case 0:printf("+");break;
            case 1:printf("-");break;
            case 2:printf("*");break;
            case 3:printf("/");break;
            }
            printf("%d",a[2]);
            if(d[1]==3)
                printf(")");
            printf("=
    ");
            n++;
        }
        printf("请依次写下答案
    ");
        for(n=0;n<N;n++)
        {
            printf("%d.",n+1);
            scanf("%d",&x);
            if(z[n]==x)
                f1[n]=1;
            else
                f1[n]=0;
                
        }
        printf("对错如下
    ");
        for(n=0;n<N    ;n++)
        {
            printf("%d,",n);
            if(f1[n]==1)
                printf("T");
            else
                printf("F");
            printf("正确答案:%d
    ",z[n]);
        }
    }

     结果为了方便,只输入了4组

  • 相关阅读:
    历届试题 大臣的旅费
    JQuery UI的拖拽功能
    JQuery UI的拖拽功能
    jQuery.extend 函数详解
    jQuery.extend 函数详解
    javax.servlet.http.httpservlet is not defined
    javax.servlet.http.httpservlet is not defined
    RESTful Web Services
    RESTful Web Services
    oracle创建一个一般用户
  • 原文地址:https://www.cnblogs.com/lenrehy/p/5267776.html
Copyright © 2011-2022 走看看