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

    此作业的要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/5523]

    1.熟悉 命令行和控制台 

    (1)假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt,请以数据流图并辅助以文字说明下述控制台命令的作用是什么。(5分)

     a.exe < b.txt > c.txt

    答:此控制台命令的作用是将标准输入重定向为文件b.txt,标准输出重定向到c.txt,也就是说,数据基本流向为,由b经a到c,进一步可如下数据流图:

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

    d.exe a=1 b=2 c=3

    1

    2

    3

     

    d.exe a=11 b=22 c=33

    11

    22

    33

    答:代码及运行结果如下:

    #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
    
    ",a);//输出第一个参数
        printf("%d
    
    ",b);//输出第二个参数
        printf("%d",c);//输出第三个参数
    
        return 0;
    }

    2.熟悉 测试用例

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

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

    答:题目完成情况如图:

     

    (3)代码解读。(20分)

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

    答:

    ①题目1006: 换个格式输出整数

    题目要求参见[https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592]

    本题重点是要理清楚,对于此输入的整数,字符的输出规律与各位上的数字有直接的关系,因此也要会求百位、十位、个位上的数字。

    bai=n/100;//计算得到百位
    shi=n%100/10;//计算得到十位
    ge=n%10;//计算得到个位
    
    //控制输出B
    for(i=0;i<bai;i++)
    {
        printf("B");
    }
    //控制输出S
    for(i=0;i<shi;i++)
    {
        printf("S");
    }
    //控制输出数字
    for(i=0;i<ge;i++)
    {
        printf("%d",i+1);
    }

    ②题目1021:个位数统计

    题目要求参见[https://pintia.cn/problem-sets/994805260223102976/problems/994805300404535296]

    本题重点是要理清楚,对于位数很大的一个整数的输入,需要怎样处理接收,以及如何有效的统计各位数字的个数,并且保存起来进行累加;
    本程序缺点是,如果是各位数字几乎相同时,代码中的数组将有很多荒废空间没有利用,因此此处有改进空间

    //统计各位数的个数
    while((temp=getchar())!='
    ')
    {
        N=temp-'0';
        data[N]++;
    }
    
    //输出各位数
    for(i=0;i<10;i++)
    {
        if(data[i])
        {
            printf("%d:%d
    ",i,data[i]);
        }
    }

    ③题目1056:组合数的和

    题目要求参见[https://pintia.cn/problem-sets/994805260223102976/problems/994805271455449088]

    本题难点在于找求解规律,由于知道N个非0的个位数字,求所有他们组合出新的两位数之和,每个数字在十位出现的次数为N-1此,在个位出现的次数也为N-1次,因此只需要知道这个规律,就可以很快的求解所有组合的数字之和了

    for(i=0;i<N;i++)
    {
        scanf("%d",&data[i]);
    }
    for(i=0;i<N;i++)
    {
        for(j=0;j<N-1;j++)
        {
            count+=data[i]*10+data[i];
        }
    }

    (4) PSP(8分)

    在同一篇博客中,参照教材第35页表2-2和表2-3,为上述3个题目制作PSP阶段表格。

    PSP阶段表格第1列分类,如功能1、功能2、测试功能1等。 

    要求1 估算你对每个功能 (或/和子功能)的预计花费时间,填入PSP阶段表格,时间颗粒度为分钟。

    要求2 记录词频统计项目实际花费时间,填入PSP阶段表格,时间颗粒度要求分钟。

    要求3 对比要求1和要求2中每项时间花费的差距,分析原因。

     答:

  • 相关阅读:
    读后感
    mysql分库分表的基本方法
    pdo接口用法
    视频技术基础
    【原创】shell易错语法汇总
    php底层的运行机制
    mysql统计函数
    etc/shadow 登陆口令破解
    JAVA学习(方法重载)
    JAVA学习(方法的定义及调用)
  • 原文地址:https://www.cnblogs.com/liuxp775/p/11491428.html
Copyright © 2011-2022 走看看