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