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函数输出在同一行,在查询此用法时花费点时间。

 

原文地址:https://www.cnblogs.com/wangzw822/p/11485302.html