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("是否有乘除?\n0,不是\t1,是\n请输入选项\n");
    scanf("%d",&f[0]);
    printf("是否有括号?\n0,不是\t1,是\n请输入选项\n");
    scanf("%d",&f[1]);
    printf("加减结有无负数?\n0,不是\t1,是\n请输入选项\n");
    scanf("%d",&f[2]);
    printf("除法有无余数?\n0,不是\t1,是\n请输入选项\n");
    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");
        n++;
    }
    printf("请依次写下答案\n");
    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("对错如下\n");
    for(n=0;n<N    ;n++)
    {
        printf("%d,",n);
        if(f1[n]==1)
            printf("T");
        else
            printf("F");
        printf("正确答案:%d\n",z[n]);
    }
}
时间: 2024-08-01 22:41:53

week2:个人博客作业的相关文章

文件服务相关博客作业

nfs和sameba博客作业 博客实践作业: (1) nfs server导出/data/目录: (2) nfs client挂载/data/至本地的/mydata目录:本地的mysqld或mariadb服务的数据目录设置为/mydata, 要求服务能正常启动,且可正常 存储数据 (3) 客户端(lamp)部署wordpress,并让其正常访问:要确保能正常发文章,上传图片: (4) 客户端2(lamp),挂载nfs server导出的文件系统至/var/www/html:验正其wordpres

https的博客作业

博客作业:分别使用httpd-2.2和httpd-2.4实现 1.建立httpd服务,要求: (1) 提供两个基于名称的虚拟主机www1, www2:有单独的错误日志和访问日志: (2) 通过www1的/server-status提供状态信息,且仅允许tom用户访问: (3) www2不允许192.168.0.0/24网络中任意主机访问: 2.为上面的第2个虚拟主机提供https服务: 前提准备: 172.16.1.1测试httpd-2.4,这是centos7系统 172.16.1.2测试htt

C语言博客作业--一二维数组

一.PTA实验作业 题目1:7-2 求整数序列中出现次数最多的数 1. 本题PTA提交列表 2. 设计思路 定义变量n,i,j,max等于0,a[]10用于存放输入的值,b[10]用于存放a[]中各个数有多少个; 输入n的值 i从0开始,每次加1,输入a[i]的值,直到i==n结束循环 i从0开始,判断i是否<n,,进入下一步,每次加一,直到条件不满足 j从0开始,判断j是否<n,,进入下一步,每次加一,直到条件不满足 如果a[i]==a[j],b[i]加一 i从0开始,判断i是否 输出a[j

博客作业1--抽象数据类型

一.作业题目 实验题目 试仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子.分母均为整数且分母不为零的分数). 有理数基本运算如下所示: 1.构造有理数R,元素x1,x2分别被赋以分子.分母值 2.销毁有理数R 3.用e(引用类型参数)返回有理数T的分子或分母,当入参i为1时返回分子, i为2是返回分母. 4.将有理数R的分子或分母更改为e,入参i为1时改变分子, i为2是改变分母 5.有理数R1,R2相加,结果存入有理数R3 6.有理数R1,R2相减,结果存入有理数

个人博客作业Week7(心得体会)

Alpha阶段结束了,内心可以说是五味杂陈.不是说我们的产品拿不上台面那般差劲,复杂的心绪主要来源于和别的队的比较,别的队才刚刚发布没多久访问量和注册量就破百了,并且还发起了找bug送红包的活动.可能是觉得付出了相同的努力,却没办法换回相同的效果,看来还是得审视自己的问题. 本周的个人作业是阅读关于软件开发本质和开发方法的博客/文章,结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得.借这个机会找一下我们的不足吧. 阅读材料目录:

个人博客作业1

发表在你的个人博客上,也可以同时转发到你的团队博客上来增加你们团队博客的人气.具体要求如下: 1)在开始实现程序之前,使用下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间. PSP2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 8 Development 开发 · Analysis · 需求分析 (包括学习新技术) 0 · Design Spec · 生成设计文档 0.5

第零次博客作业

第一部分:结缘计算机 1. 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答) 当年高考前在专业这件事上纠结了好久,因为我对于大学各个专业具体学什么都不甚了解,于是就迟迟没有明确的目标,可以说整个高三自己一直都是迷茫的状态,就这样一直保持到了高考.我当年高考是先出成绩,后填报志愿,等到成绩出来之后发现意外地比期望要高,而北航应该是最适合我的学校了.身为一个比较"宅"的理科男,我当时打算将专业锁定在"数学"."计算机"."

第八次个人博客作业

软工课程总结 一.回望开学初对于软件工程课程的想象,回望博客开篇时对于这门课和这学期的期望 对比开课前的我,现在的我写的代码的规范性和可扩展性越来越好了,可以更快更好地完成工作,最主要的是通过结对编程和团队编程学到了如何与他人合作编程,编程过程中与他人的意见出现分歧如何解决,走过整个软件开发的所有过程,受益匪浅.       最开始由于作业的紧张,觉得太占用自己的时间,有想过放弃,但后来还是坚持了下来,随后的结对编程和团队项目,证实了我的决定是正确的,虽然我的贡献不是最大的,但我从项目中学到了很

C语言博客作业—一二维数组

一.PTA实验作业 题目1:7-2 求整数序列中出现次数最多的数 1. 本题PTA提交列表 2. 设计思路 Begin 输入整数个数N 定义数组a[N] 输入数组a for(i 0 to N-1){//进行N次判断 for(j 0 to N-1) if(a[i]和a[j]相等) count加一 i等于0//第一次判断 使max=count; n=i;//n放下标,max放次数 i不等于0且count大于max 使max=count; n=i;//重新赋值 count为0//每次循环count为0

C语言第十次博客作业--结构体

#一.PTA实验作业(5分) ##题目1:6-3 结构体数组中查找指定编号人员 ###1. 本题PTA提交列表(要提交列表,不是结果) ###2. 设计思路 struct student { char num[10]; int year,month,day ; };该结构体表示人员的编号,出生年月日. 定义一个环境变量 for i=0 to i<8 若找到指定编号,则return *(std+i) ###3.代码截图(注意,截图,截图,截图.不要粘贴博客上.不用用···语法去渲染) ###4.本