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进行比赛。
  • 首先就是要多刷题,积攒经验值;其次将每一道题都理解透彻,最好能找到最优解法;在课余时间多学习其他的语言等等
  • 在其他的评测网站上每天都做几道题,寻找技巧。

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

  • 目前我的写作能力一般,普通的文章应该没问题。
  • 要提高写作能力,首先要多看书,积累素材;其次多看新闻,时事评论,梳理自己的思路,在写文章时能够进行客观的分析,有话可说;最后,当然是要多练啦!
原文地址:https://www.cnblogs.com/gjx031602211/p/6283814.html