sxy504

导航

孙晓宇 20190905-3 命令行和控制台编程

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

1.熟悉 命令行和控制台

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

 a.exe < b.txt > c.txt

答:将b.txt在a.exe中执行,经过执行后,结果保存在c.txt中,如下图所示。

 

 请用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"
void main() {
    int a,b,c;
        scanf("a=%d b=%d c=%d",&a,&b,&c);
        printf("%d\n%d\n%d\n",a,b,c);
}

 

执行效果图如下:

 

 

 

 

 

 2.熟悉 测试用例

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

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

(3)代码解读。

答:

(2)

 

 

 

 

 

(3)代码解读:

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

重难点:此题重点要读清楚题意,理解清楚题,刚开始做的时候由于审题不清,以为先将奇偶数区分开来然后按照相应的公式循环,并没有放在同一个大循环中来执行,导致奇数执行不出结果,偶数结果错误。之后放在同一个循环中,判断奇数还是偶数,奇数进行(3n+1)/2的计算,偶数进行n/2的计算,程序运行正确。

重要代码:

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

 

 1006题——换个格式输出整数

重难点:(1)取出百位数、十位数、个位数;(2)将个位数按1234...n的格式输出。

重要代码:

    scanf("%d",&n);
    a=n/100;
    b=n%100/10;
    c=n%10;
    while(a--){
        printf("B");
    }
    while(b--){
        printf("S");
    }
    while(c--){
        printf("%d",i);
        i++;
    }

 

 1056题——组合数的和

重难点:如果将N个数的和,一个个排列组合,那么这个程序将会有很多的循环,也会特别的麻烦。但是如果想清楚,这N个数,每一个数都会在个位出现(N-1)次,也会在十位出现(N-1)次,就会变得很简单。

for(int i = 0; i < N; i++)
    {
        scanf("%d", &a);
        sum=sum+a*(N-1)*11;
    }

 

 (4)PSP

原因分析:(1)语法不熟练,做题的时候会查看着语法规则和函数用法做题;(2)很简单的题可是做起来却没那么简单,并且会出很多的错误,调试很多次才能运行好;(3)做题的时候出现了没有认真读题的情况,导致程序运行出错,检查好几遍才发现错误。

posted on 2019-09-10 22:47  sxy504  阅读(162)  评论(2编辑  收藏  举报