20200910-3 命令行和控制台编程

https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11185

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>
#include <stdlib.h>
int main(int argc,char *argv[])
{
    int i;
    for(i=1;i<argc;i++)
    {
        char *s;
        s=argv[i];
        if(*s!='=')
        {
            s++;
        }
        if(*s!=' ')
        {
            s++;
        }
        printf("%s\n",s);
    }

    return 0;
}

 

 

 

 

 

 2.熟悉 测试用例

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

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

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

 

 

 

 

(3)代码解读 (20分)

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

重点/难点:在于运用好while循环和if else的结合!

重要代码:

n=int(input("请输入一个整数:"))
i=0      #所需要的步数
while n!=1:
    if n%2 ==1:
        n=(3*n+1)/2
        i=i+1
    else:
        n/=2
        i=i+1
print(i)

效果执行图:

 

 

 

1004成绩排名

重点/难点:由于我还是python初学者,以下两个函数的应用对我来说是这题的重难点所在!

split() 通过指定分隔符对字符串进行切片
append()函数用于在列表末尾添加新的对象

重要代码:

n = input()
name = []
num = []
grade = []
for i in range(int(n)):
    a = input().split()
    name.append(a[0])
    num.append(a[1])
    grade.append(int(a[2]))
good = -1
bad = 101
goodn = -1
badn = -1
for i in range(len(grade)):
    if (grade[i]>good):
        good = grade[i]
        goodn = i
    if (grade[i]<bad):
        bad = grade[i]
        badn = i
print(name[goodn]+' '+num[goodn])
print(name[badn]+' '+num[badn])

效果执行图:

 

 

1006换个格式输出整数

重点/难点:在边界的判断上比较难,后来用循环嵌套的方式才得以完成!

重要代码:

num_i = input().strip()
def R(num_i):
    if len(num_i) > 3:
        return
    if len(num_i) == 3:
        l = []
        for i in num_i:
            l.append(i)
        print('%s%s' % ('B' * int(l[0]), 'S' * int(l[1])), end='')
        for i in range(1, int(l[2]) + 1):
            print(f'{i}', end='')

    elif len(num_i) == 2:
        l = []
        for i in num_i:
            l.append(i)
        print('%s' % ('S' * int(l[0])), end='')
        for i in range(1, int(l[1]) + 1):
            print(f'{i}', end='')

    else:
        for i in range(1, int(num_i) + 1):
            print(f'{i}', end='')

R(num_i)

效果执行图:

 

 

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

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

测试数据:3

测试结果:

 

 

1004成绩排名

测试数据:

3

蒋慧 0001 78

赵路遥 0002 89

小谭 0007 90

测试结果:

 

 

1006换个格式输出整数

测试数据:456

测试结果:

 

 

 

 

 (4) PSP(8分)

 

posted @ 2020-09-14 09:23  蒋慧  阅读(156)  评论(2编辑  收藏  举报