• 董亚辉 20190905 命令行和控制台编程


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

    1.熟悉 命令行和控制台

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

      a.exe < b.txt > c.txt   

      答:控制台命令的作用是将文本文件b中的内容作为a程序的数据流入,然后a将流入的数据写入文本文件c。数据流图如下所示:

       

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

      d.exe a=1 b=2 c=3

      1

      2

      3

     代码:

    #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);
        return 0;
    }

    测试截图:

    2.熟悉 测试用例

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

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

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

     

     

    1009 说反话 

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

    输入格式:

    测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。

    输出格式:

    每个测试用例的输出占一行,输出倒序后的句子。

    输入样例:Hello World Here I Come

    输出样例: Come I Here World Hello

     重要代码如下所示:

    public class two {
    
        public static void main(String[] args) {
                Scanner scanner = new Scanner(System.in);
                String abc= scanner.nextLine();    //接收输入的整段语句,以回车结束
                String[] zfc = abc.split(" ");        //利用split函数将字符串分割为一个一维数组
                for(int i=zfc.length-1;i>=0;i--){     //将数组逆向输出
                    System.out.print(zfc[i]);
                    if(i!=0)System.out.print(" ");
                }
            }
        }

    运行结果

    难点:这个题目本身难度不是太大,主要的难点就是如何将输入的一句话重新切割,放入一个数组中,之前自己想了不少办法,经过在网上搜寻和查看java开发文档,找到了split函数。split函数的作用就是拆分字符串,通过指定分隔符对字符串进行切片。正好满足了题目需求。

    1016 部分A+B

    正整数 A 的“D​A​​(为 1 位整数)部分”定义为由 A 中所有 D​A​​ 组成的新整数 P​A​​。例如:给定 A=3862767,D​A​​=6,则 A 的“6 部分”P​A​​ 是 66,因为 A 中有 2 个 6。

     现给定 A、DA、B、DB请编写程序计算 PA+PB

    输入格式:输入在一行中依次给出 A、D​A​​、B、D​B​​,中间以空格分隔,其中 0<A,B<10​10​​。

     输出格式:在一行中输出 P​A​​+P​B的值。

     输入样例:3862767 6 13530293 3

     输出样例: 399

            for(int i=0;i<num1;i++) 
            {
                if((A.charAt(i)-48) == DA) //利用charAt截取A里面的单一字符,因为其为数字字符形式需要减去48确保数值对应
                {
                    a1++;                   //累加A中相同字符个数
                }
            }
            for(int j=0;j<num2;j++) {
                if((B.charAt(j)-48) == DB) {  //用利用charAt截取B里面的单一字符,同样减去48
                    b1++;                     //累加B中相同字符个数
                }
            }
            int PA=0,PB=0;
            for(int i=0;i<a1;i++) {
                PA = PA*10+DA;            //将A中相同的数值拼接成一个整数
            }
            for(int j=0;j<b1;j++) {
                PB = PB*10+DB;          //将B中相同的数值拼接成一个整数
            }
            System.out.println(PA+PB);  

    输出截图:

     

    难点:按照题目的需要,如果将输入的A和B以整数形式接收,没法满足需求,只能以字符串形式,所以需要将字符串拆分为一个一个的字符,但是接收的字符串不能当作一个字符数组来使用,会出现语法错误。寻找这个解决办法确实花费了太长时间,主要也是自己学艺不精的原因。Java本身有一个charAt函数可以对字符串进行切分,很好的解决了问题,同时也给自己增加了知识点。

    1087 有多少不同的值

    当自然数 n 依次取 1、2、3、……、N 时,算式 ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少个不同的值?(注:⌊x⌋ 为取整函数,表示不超过 x 的最大自然数,即 x 的整数部分。)

    输入格式:输入给出一个正整数 N(2≤N≤104)。

    输出格式:在一行中输出题面中算式取到的不同值的个数。

    输入样例:2017

    输出样例:1480

    部分代码:

    public class three {
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int num = scanner.nextInt();
            int[] a = new int[3*num];
            int count = 0,sum=0;
            for(int i=1;i<=num;i++)
            {
                sum = i/2+i/3+i/5;
                if(a[sum]==0) {              
                    count++;
                    a[sum]=1;
                }
            }
            System.out.print(count);
        }
    
    }

    输出截图:

    难点:这道题基本算是简单的,因为之前自己做过类似的,做起来还是比较顺利的,这道题主要注意的地方有两个,一是数组a的容量一定要大点,因为小了容易造成容量不足:二是if中的判断条件,需要确保a数组没有数值。

    PSP表格:

     

    原因:

       (1)对语法十分不熟练,全部都忘的一干二净,有点高估自己(2)查找资料的时候,花费时间较多,自己的查找方法有问题 (3)对PTA平台不熟悉,提交时频频出错。

        这次作业确实给自己提醒了一次警钟,无论做什么基础最重要,一定要认清自己的实力,从实际出发,一步一个脚印,踏实学习。

  • 相关阅读:
    Spring编译AOP项目报错
    Intellij新建Spring项目引入用户目录下的Spring jar包
    python如何安装第三方库
    sizeof and strlen整理
    数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。
    百度笔试题--最长回文字串
    微软笔试题
    人群智商差不多,是什么引起了差距?
    低层次“努力学习”和学习的本质
    集成 solr6.5.1到 tomcat7(8) 中 (解决java.lang.NoSuchMethodError问题)
  • 原文地址:https://www.cnblogs.com/dongyahui/p/11506732.html
Copyright © 2020-2023  润新知