罗杨美慧 20190905-3 命令行和控制台编程

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

1.熟悉命令行和控制台

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

a.exe < b.txt > c.txt

数据流图:

b文本的内容是a程序输入的数据,a程序运行后得到结果再输出到c文本中。

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

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 a,b,c;
    while(scanf("a=%d b=%d c=%d",&a,&b,&c)){
        printf("%d
",a);
        printf("%d
",b);
        printf("%d
",c);
    }
    return 0;
}

执行效果截图:

 2.熟悉 测试用例

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

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

 

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

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

重点:首先判断n是奇数还是偶数,每次循环累加一次,循环终止条件是n=1.

重要代码片段:

int main(){
    int n;
    scanf("%d",&n);
    int s=0;
    while(n!=1){
        if(n%2==0){
            n=n/2;
            s++;
        }
        else{
            n=(3*n+1)/2;
            s++;
        }
    }
    printf("%d",s);
    return 0;
} 

执行效果截图:

1006 换个格式输出整数 

重点:输入一个三位数,计算出个位十位和百位数字,循环输出个数.

重要代码片段:

int main(){
    int n,B,S,G;
    scanf("%d",&n);
    B=n/100;
    S=n%100/10;
    G=n%10;
    for(int i=0;i<B;i++)  
        printf("B");
    for(int i=0;i<S;i++)  
        printf("S");
    for(int i=1;i<=G;i++) 
        printf("%d",i);
    return 0;
}

执行效果截图:

1011 A+B 和 C 

重点:输入测试次数,判断a+b是否大于c,循环多次输出结果.

重要代码片段:

int main()
{
    int num,i;
    scanf("%d",&num);
    long a,b,c;
    for(i=0;i<num;i++){
        scanf("%ld%ld%ld",&a,&b,&c);
        if(a+b>c)
            printf("Case #%d: true
",i+1);
        else
            printf("Case #%d: false
",i+1);
    }
    return 0;
}

执行效果截图:

 

(4) PSP

 

总结:本次作业选择的三道编程题难易程度其实不大,但对我来说还是比较困难,花费较长的时间来完成。很多编程题都是能够看懂代码但上手操作后就会出错,还是实际操作的次数太少,相信通过这门课以后也会有所改善,也是对自己的一种锻炼吧。

原文地址:https://www.cnblogs.com/lymh/p/11491355.html