zoukankan      html  css  js  c++  java
  • 20200910-3 命令行和控制台编程

    作业要求参见:https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11185

    1.(1)熟悉 命令行 和 控制台/标准输入和标准输出

      假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt,

      请以数据流图并辅助以文字说明下述控制台命令的作用是什么。(5分)

       

    a.exe < b.txt > c.txt

      答:a可执行文件包含了处理文件的功能,通过读取b.txt文件内容,通过处理,最终将结果写入c.txt中保存。

     

      (2)请用C语言开发应用程序d.exe,从控制台指令读入命令行参数,并在控制台分别打印出a、b、c的值。运行效果形如下面的示例(6分)

      代码:

    #include <stdio.h>
    int main(int argc, char  *argv[])
    {
        int a,b,c;
        sscanf(argv[1], "a=%d", &a);
        sscanf(argv[2], "b=%d", &b);
        sscanf(argv[3], "c=%d", &c);
        printf("%d
    %d
    %d",a,b,c);   
        return 0;
    }

     exe是windows操作系统可执行文件,在MacOS系统终端编译运行运行结果如下:

     在macOS终端末尾无换行符号会出现反色的%,这一点与Windows的不同。

    2.熟悉 测试用例

    (1)请在网站 [https://pintia.cn/]注册账号。(0分)

      账号昵称:lh

    (2)在题目集 PAT (Basic Level) Practice (中文) 中任选3道题目完成。截图如下,要求包括1.红色对号、2.标号、3.用户名(此例中为 Young)。(30分)

        注意,需要读完本作业全部题目才能开始做题,有对时间记录和代码解读的要求。

      答:这里的题以前用C++刷过一部分,最近新学习了Python,用Python完成3道入门题练习一下。选题为1001、1002、1006。(通过率高,简单题,适合我这种菜鸟)

    (3)代码解读 (20分)

        发表博客,介绍上述3个题目代码中重点/难点,展示重要代码片断,给出执行效果截图,展示你感觉得意、突破、困难的地方。

       答:1001 害死人不偿命的(3n+1)猜想 (15分)

            解题思路:偶数除二,奇数(3n+1)除二。模拟类型题。

        难点:对Python语言的不熟悉,书看了,但自己上手编程漏洞百出。Python语言我觉得与我最熟悉的C语言相比太灵活了,甚至有些“随意”。比如:input输入,在C语言需要指明输入类型%d,并且需要提前定义变量。在Python,统统不需要!结果入门题也用了17分钟完成。刚开始就遭遇滑铁卢,我知道了学习新语言光看不行,动手实操最重要,哪怕看了半本书也不会。

     

    n = 0
    number = eval(input())
    while number != 1 :
        n = n + 1
        if number % 2 == 0:
            number = number/2
        else:
            number = (number * 3 + 1)/2
    print(n)

      终端运行结果图:

    AC截图:(C++编写为历史提交)

     

        1002 写出这个数 (20分)

        解题思路:很简单,就是模拟类型,咋说咋做。结果用时41分钟。。。

        难点:体现出Python的优势了,大数处理不在话下,10的100次方也没问题,不过Python有些东西真的和C语言不一样,C语言做整数除法结果是整数,Python想要得到整数要用//才行。在进行程序调试的时候及时添加输出语句或者使用IDE断点调试可以很快找出bug。

        

    n = 0
    number = eval(input())
    while number != 0:
        n = n + number % 10
        number = number // 10
    def change(value):
        switcher = {
            0: "ling",
            1: "yi",
            2: "er",
            3: "san",
            4: "si",
            5: "wu",
            6: "liu",
            7: "qi",
            8: "ba",
            9: "jiu"
        }
        return switcher.get(value)
    nu = str(n)
    for i in nu[:-1]:
        print(change(eval(i)), end=' ')
    print(change(eval(nu[-1])))

     运行结果图:

     

         1006 换个格式输出整数 (15分)

        解题思路:字符串处理。

        难点:要熟练运用Python字符串处理,我开始想用for循环输出的,结果发现原来字符串乘数字就可以完成拼接。

    number = int(input())
    Bai = number//100
    Shi = (number%100)//10
    Ge = number%10
    print("B"*Bai,end='')
    print("S"*Shi,end='')
    for i in range(1,Ge+1):
        print(i,end='')

    运行结果:

     结尾为啥多出百分号?AC了已经,后来查了半天资料才知道:

    原文链接:https://aoenian.github.io/2019/06/30/python-zsh-percent-prompt/

    (4)控制台应用 (15分)

    要求在博客中给出测试数据。参照上一题中“控制台”的知识,给出运行时从控制台读入测试数据和向控制台输出的截图。

    图表过小、字迹不清、错别字、句子不通顺的,教师会因为读不懂而对此题扣分。

    1001 害死人不偿命的(3n+1)猜想
    测试数据:(正整数,1为边界数据)
    1
    3

    测试结果截图:



    1002 写出这个数
    测试数据:(题目要求10的100次方以内)

    123000000000000000000000000000000000000000000000004

    测试结果截图:




    1006 换个格式输出整数
    测试数据:(1000以内)
    135

    测试结果截图:



    (5) PSP(8分)

      预计花费时间  实际花费时间 花费时间差距 原因
    题目1001 10min 17min 7min 不熟悉Python语法,基本语法也需要现查现用。
    题目1002 15min 41min 26min 输出格式不对,总是部分正确,没发现这个问题还以为算法有问题,以为Python不支持10的100次方,反复调整没错的地方,导致浪费大量时间。
    题目1006 10min 19min 9min Python语法不熟悉,尤其是字符串处理,需要重新看书,并加强练习。

     

     











  • 相关阅读:
    Head First Java pdf下载
    【ARC068F】Solitaire(dp,计数,思维)
    【BZOJ3270】博物馆(概率dp,高斯消元)
    【BZOJ3143】【HNOI2013】游走(期望dp,高斯消元)
    【BZOJ3622】已经没什么好害怕的了(dp,容斥原理,二项式反演)
    【BJWC2018】上学路线(dp,Lucas,crt)
    【BZOJ4987】Tree(树形dp)
    【SDOI201】黑白棋 /【XSY3064】小奇的博弈(博弈,nim,dp,组合数)
    【HNOI2017】礼物(FFT)
    【BZOJ2502】清理雪道(最大费用最大流)
  • 原文地址:https://www.cnblogs.com/lhbat/p/13663406.html
Copyright © 2011-2022 走看看