zoukankan      html  css  js  c++  java
  • 20190905-3 命令行和控制台编程

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

    1.熟悉 命令行和控制台

    假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt,

    请以数据流图并辅助以文字说明下述控制台命令的作用是什么。(5分)

    a.exe < b.txt > c.txt


    作用:文档传入程序a,程序a运行将内容传给文档c。
    请用C语言开发应用程序d.exe,从控制台指令读入命令行参数,并在控制台分别打印出a、b、c的值。
    #include<stdio.h>
    int main()
    {
        int a,b,c;
        scanf("a=%d b=%d c=%d",&a,&b,&c);
        printf("%d
    %d
    %d
    ",a,b,c);
    }


     2.熟悉 测试用例

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

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

    (3)代码解读。

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

    1001 害死人不偿命的(3n+1)猜想:对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?

    此题的重点在于首先判断不等于1,否则会输出2步,与实际不符。其次是判断n为奇数/偶数的判断条件。

    #include<stdio.h>
    int main()
    {
        int n,count=0;
        scanf("%d",&n);
        while(n!=1)
        {
            if(n%2==0){
                n=n/2;
            }else{
                n=(3*n+1)/2;
            }
            count++;
        }
        printf("%d",count);
        return 0;
    }

    运行截图:

    1036 跟奥巴马一起编程:输入在一行中给出正方形边长 N(3N20)和组成正方形边的某种字符 C,间隔一个空格。

    此题是一道打印图案的题目,重点在于行、列的判断条件,分清(N+1)/2还是(N-1)/2。

    #include<stdio.h>
    int main()
    {
        int N,r,l;
        char s;
        scanf("%d %c",&N,&s);
        for(r=0;r<(N+1)/2;r++)
        {
            for(l=0;l<N;l++)
            {
                if( l==0 || l==N-1 || r==0 || r==(N-1)/2)
                    putchar(s);
                else
                printf(" ");
            }
            printf("
    ");
        }
        return 0;
    }

    运行截图:

    1047 编程团体赛 :输入第一行给出一个正整数 N(104​​),即所有参赛队员总数。随后 N 行,每行给出一位队员的成绩,格式为:队伍编号-队员编号 成绩,其中队伍编号为 1 到 1000 的正整数,队员编号为 1 到 10 的正整数,成绩为 0 到 100 的整数。

    输出要求:在一行中输出冠军队的编号和总成绩,其间以一个空格分隔。注意:题目保证冠军队是唯一的。

    此题重点在于(1)每个队员成绩的累加:运用加法赋值运算符进行累加计算。(2)选出分数最高队伍的部分:利用循环,将各个队伍的分数两两进行比较 ,最后输出最大的一队及其分数

    #include<stdio.h>
    int main()
    {
        int N,a,b,c,max=0,team[1000]={0};
        if(scanf("%d",&N) >0){}
        for(int i=0; i<N; i++)
        {
            scanf("%d-%d %d", &a,&b,&c);
            team[a-1] += c;
        }
        for(int j=0; j<1000; j++)
        if(team[j] > team[max])
        max=j;
        printf("%d %d",max +1,team[max]);
        return 0;
    }

    运行截图:

     

    (4) PSP(8分)

      预计花费时间  实际花费时间 花费时间差距 原因
    题目1001          10min  13min 3min

    题目本身思路不难,由于C语言使用不够熟练,实际时间超出了预计。

    题目1036 12min 17min 5min

    是绘制图案的题目,在if语句:判断行、列;回顾putchar()函数上费了一定时间。

    题目1047 20min 34min 14min

    题中涉及到的变量较多,还有两个循环语句,稍微比前两题复杂一些。前几次提交答案后网站一直显示scanf()返回值被忽略的错误,搜索了其他人的经验后,更正为if(scanf("%d",&N) >0){}才通过,浪费了部分时间。

     
  • 相关阅读:
    python,抓取百度搜索结果
    python关键字 with
    python 字符串处理
    采用主动模式进行文件的上传、下载
    系统的备份和恢复
    javascript中的defer
    程序调用批处理完成上传、下载
    vb.net中的ftp上传、拨号、socket通讯的源码
    CF1033G Chip Game
    LG3369 普通平衡树
  • 原文地址:https://www.cnblogs.com/wkf-/p/11484929.html
Copyright © 2011-2022 走看看