zoukankan      html  css  js  c++  java
  • 2017寒假第一篇随笔(寒假作业一)

    在人生技能道路上,你有没有专长的高超技能获取的成功经验?

    在高中时没有过多的兴趣爱好,只是喜欢在闲暇之余看一集美剧,长时间处于美式英语的“熏陶”之下,自然对英语产生了浓厚的兴趣,在高三之前打下了一个坚实的基础。所以之后英语给我带来了很大的优势(作业基本都不写了),而考试的分数也不低。

    进入大学之后,由于没有体育、音乐方面的特长,就参加了英语辩论社。参加这个社团不是喜欢辩论,而是希望有一天能够用英语清晰、流畅的表达出自己的想法,而不是只会写,不会说的“哑巴英语”。

    刚开始打模拟赛的时候也很困难,发音不准确、说话不流畅、观点不清晰。。。。。就是硬挺着去比赛,在不断积累中有了一些进步。虽然还不是很专业,但总是比之前好。

    image

    建议大家一定要有计划的去学英语(英语对计算机专业的人是很重要的),不要想着哪天我有时间再好好学英语,首先你没有那种时间,其次就算给你那么多的时间你也学不进去!

    • 坚持每天背50个单词,遇到常见动词要掌握其用法。
    • 每天看一集美剧或Ted的演讲,跟读然后模仿。
    • 每天坚持做一篇英语阅读。

    总之,学习英语就是要日积月累,临时突击肯定是行不通的。每天2个小时,你的进步吓到你的!

    有关C语言学习的调查

    你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?

    我进入福大计算机系之前完全零基础,也没有在假期自学c语言(我现在非常后悔!),所以一开始的学习很艰难。无论是看书还是听课都有很大的问题,只能向同学一点一点的请教,才能勉强跟上班级的进度。

    说到经验,自然还是要多练(熟能生巧嘛!)。其次是如果有时间最好能够想一下最优算法。无论是C语言还是上面提到的英语,都是要每天坚持学习,保持一种良好的学习状态,才能不断进步,而不是学完就忘!

    至于教训,我这学期完全就是一个典型的反面教材!平时练得少,到考前才突击,准备的不充分。而且前面的知识忘得差不多了,在期末复习时非常麻烦,下学期的首要任务就是要改掉这些坏毛病。毕竟,只有养成一个良好的学习习惯才有可能取得优异的成绩。

    目前为止估算自己写过多少行C代码?理解的情况如何?

    目前只写过大约1500行,虽然写的不多,但理解的还算透彻,在理解了基础算法后, 尽可能去想它的思路、题目的原型、涉及的知识点等等。争取下一次见到这种类型的题能够快速的解题。

    学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?

    • 数组指针:指向数组的指针
    • 指针数组:一个数组中的元素为指针类型。
    • 函数指针:指向函数的指针
    • 指针函数:是一个返回类型为指针的函数

    学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?

    文件和流
    • 一个文件通常就是磁盘上的一段命名的存储区。比如 stdio.h 就是一个包含一些有用信息的文件的名称。

    • C将文件看成是连续的字节序列,其中每一个字节都可以单独地读取。这与 UNIX 环境(C的发源地)中的文件结构是一致的。因为其他环境中的文件模型可能会有所不同,所以 ANSI C 提供了文件的两种视图:文本视图和二进制视图。

    • C将数据的输入输出看作是数据的流入和流出,不管是磁盘文件或者是物理设备都可看作一种流的源和目的,视他们为同一种东西,而不管其具体的物理 结构,即对他们的操作,就是数据的流入和流出。这种把数据的输入输出操作对象,抽象化为一种 ,而不管它的具体结构的方法很有利于编程,而涉及流的输出操作函数可用于各种对象,与其具体的实体无关,即具有通用性。

    文本文件和二进制文件
    • 文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。
      ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。

    • 二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。 输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称“流式文件”。

    如何编程操作这两种文件?
    • 这个我目前还不会,以后会补上。

    学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?

    • “面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。
    • 面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现

    在C语言里面,什么是模块?你写过多个源文件的程序吗?

    • C语言的一个优点就是可以模块化的编程,容易理解。比如你可以把所有的代码都写在main函数中,也可以用不同的函数实现不同的功能(也就是不同的模块),最后用main函数调用其他函数。可以非常科学详细地对整体进行划分,而且一个模块中各元素联系紧密(恰好执行一种功能),各模块间的联系相对小。就是高内聚低耦合
    • 我还不会写关于文件操作的代码,因此没有写过多个源文件的程序。以后会补上。

    学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?

    • 高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。
    • 内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
    • 所谓 高内聚 是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
    • 耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息
    • 对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。
    • 在程序设计中我们应该让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。

    学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。

    • 把数组A的内容复制到数组B中(int型、char型)
    (i=0;i<lengthofarray;i++)
       b[i]=a[i];
    
    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char a[1000],b[1000];
        gets(a);
        strcpy(b,a);
        puts(b);
        return 0;
    }
    
    • 查找整数数组A中有没有数字5
    #include<stdio.h>
    int main()
    {
        int a[10],i;
        for(i=0;i<10;i++)
            scanf("%d",&a[i]);
        for(i=0;i<10;i++)
            if(a[i]=5);break;
        if(i<10)printf("数组A中有数字5");
        else    printf("数组A中没有数字5");
        return 0;
    }
    
    • 如何对整数数组A进行排序(从小到大,从大到小)?
    #### /* 冒泡排序从小到大 */ 
    for(i=0;i<ilength;i++)
       for(j=0;j<length-i;j++)
          if(a[i]>a[i+1])
              {
                  temp=a[i];
                  a[i]=a[i+1];
                  a[i+1]=temp;
              }
    
    /* 冒泡排序从大到小 */
    for(i=0;i<ilength;i++)
       for(j=0;j<length-i;j++)
          if(a[i]<a[i+1])
              {
                  temp=a[i];
                  a[i]=a[i+1];
                  a[i+1]=temp;
              }
    

    写一个程序,统计自己C语言共写了多少行代码。

    #include<stdio.h>
    int main()
    {
        char c;
        c=getchar;
        int count=0;
        while(c!=EOF)
        {
            if(c=='\n')
               count++;
            else
               continue;
        }
        printf("%d",count);
        return 0;
    }
    

    你知道什么是断点吗?给出自己调试程序的例子。

    设置断点是一种程序调试方式,在程序运行时中断在需要的地方,方便我们看到数据的变化情况,可以用来debug。
    至于例子,目前没有,一直都是用肉眼debug.

    对比C语言的学习,你对《面向对象程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?

    • 目标就是通过不断的学习,成为一个计算机行业的高端人才,希望有机会能参加ACM进行比赛。
    • 首先就是要多刷题,积攒经验值;其次将每一道题都理解透彻,最好能找到最优解法;在课余时间多学习其他的语言等等
    • 在其他的评测网站上每天都做几道题,寻找技巧。

    毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?

    • 目前我的写作能力一般,普通的文章应该没问题。
    • 要提高写作能力,首先要多看书,积累素材;其次多看新闻,时事评论,梳理自己的思路,在写文章时能够进行客观的分析,有话可说;最后,当然是要多练啦!
  • 相关阅读:
    leetcode 86. Partition List
    leetcode 303. Range Sum Query
    leetcode 1310. XOR Queries of a Subarray
    leetcode 1309. Decrypt String from Alphabet to Integer Mapping
    leetcode 215. Kth Largest Element in an Array
    将numpy.ndarray写入excel
    leetcode 1021 Remove Outermost Parentheses
    leetcode 1306. Jump Game III
    leetcode 1305. All Elements in Two Binary Search Trees
    ICCV2019 oral:Wavelet Domain Style Transfer for an Effective Perception-distortion Tradeoff in Single Image Super-Resolution
  • 原文地址:https://www.cnblogs.com/gjx031602211/p/6283814.html
Copyright © 2011-2022 走看看