• 20190905-3 命令行和控制台编程


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

    1.熟悉 命令行和控制台

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

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

      a.exe < b.txt > c.txt

     

      数据流图如下:

       将b文档中的数据输入到a程序中执行,输出得结果存储到c文档中。

    请用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 %d %d ",a,b,c);

    return 0;
    }

     2.熟悉 测试用例

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

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

     

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

     1.还死人不偿命的(3n+1)猜想

       部分代码片段:

     1     while(n != 1){
     2         if(n % 2 == 0){
     3             count++;
     4             n = n / 2; 
    5
    } 6 else { 7 count ++; 8 n = (3 * n + 1) / 2;
    9
    }

      

    运行结果:

     

     代码解读:

      本题目用C语言来编写的,其题目的重点是要明白奇数和偶数的判断方法及处理,n为偶数则n/2,为奇数则(3*n+1)/2 。if……else……尤为关键,通过while语句判断是否终止循环,直到n为1时终止,使用count累加进行计数。

      2.写出这个数

      部分代码片段:

    1 n = input()
    2 cnt = 0
    3 for i in n:
    4     cnt = cnt + int(i)
    5 temp = ['ling', 'yi', 'er', 'san', 'si', 'wu', 'liu', 'qi', 'ba', 'jiu']
    6 res = str(cnt)
    7 for i in res[:-1]:
    8     print(temp[int(i)], end = ' ')
    9 print(temp[int(res[-1])])

      运行结果:

       代码解读:

      这道题目我是用Python来编写的,由于刚刚自学了Python的基础部分,有些语法掌握的不是很熟练,因此想锻炼一下。Python编写代码比较通熟易懂,首先接受一串数字,通过 cnt = cnt + int(i)  对各个数字进行加法计算,temp定义一串拼音列表,把求和的数字用列表的方式通过for循环与拼音列表对应,最后输出。本题难点是[:-1]的使用,因为题目要求输出得最后一个字符后面没有空格,因此必须要保留最后一个字符不能参与循环,最后再单独输出。

      3.换个格式输出整数

      部分代码片段:

    1 num = int(input())
    2 B = num //100
    3 S = num % 100//10
    4 N = num % 10
    5 print("B"*B,end='')
    6 print("S"*S,end='')
    7 for i in range(N):
    8     print(i+1,end='')

      

    运行结果:

         代码解读:

      本题目继续使用Python编写的。本题目相对容易些,重点就是能把一个三位数字拆开成三个单独的数字,通过基本的算数运算符号就可解决。难点是要了解Python语法中字符与数字n相乘,即是输出n个字符,同时还要掌握Python的print函数自带换行功能,因此想要使用多个print函数输出一行字符就需要在函数中加入 end‘’  。最后应当注意for循环是从0开始的,输出结果应该加1。

    (4) PSP(8分)

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

    PSP阶段

    计划使用时间

    实际使用时间

    时间差额

    分析1

    5分钟

    3分钟

    2分钟

    功能1:判断奇数偶数并作出相应处理

    10分钟

    8分钟

    2分钟

    分析2

    7分钟

    10分钟

    3分钟

    功能2:输出除最后一个元素之外的所有元素

    10分钟

    15分钟

    5分钟

    分析3

    5分钟

    4分钟

    1分钟

    功能3:输出一行结果

    8分钟

    10分钟

    2分钟

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    功能1:担心C语言的语法忘记,实际做题过程中倒也不是想象中的那么困难,提前两分钟完成。

    功能2:Python语法不是太熟练,期间在网上有查看了语法。题目要求的最后一个字符后面不需要空格,又在网上查阅了[:-1]的用法。

    功能3:题目需要多个print函数输出在同一行,在查询此用法时花费点时间。

     

  • 相关阅读:
    asp.net mvc 国际化(2) 解决问题
    asp.net mvc 国际化(1) 国际化的基础
    Silverlight自学笔记布局基础
    ASP.NET MVC form验证
    Expression Tree 入门
    JQuery 思维导图
    HashMap的Put方法(二)
    HashMap的构造函数(三)
    HashMap的数据结构(一)
    HashMap之扩容resize(四)
  • 原文地址:https://www.cnblogs.com/wangzw822/p/11485302.html
Copyright © 2020-2023  润新知