第一次使用博客以及一些入门问题的回答。。

    在人生技能道路上,你有没有专长的高超技能获取的成功经验(学习,棋类,球类,乐器,艺术,游戏,......)可以结合一下,特别要和下学期的《面向对象程序设计》课程要结合起来。  你有什么技能比大多人(超过70%以上)更好?
针对这个技能的获取你有什么成功的经验?

  答:  关于这个问题 , 我认为自己是比较普通,没什么高超技能也没什么特长可以好讲的,硬是要说些什么的话,从小就对电脑方面比较感兴趣,无论是游戏还是一些技术,都比较擅长点。  游戏的话,要想玩的好:

  • 首先就得去了解这个游戏的游戏规则
  • 其次是找出通关的条件
  • 最后就是靠技术多练,多玩去熟悉游戏。

       所以,我认为对于下学期所要学习的课程《面向对象程序设计》我想也是差不多的,学习相比于游戏,学习大纲就差不多是游戏规则,学习目标就是游戏通关的条件,达到目标也就意味着你学会了这门课程,然后就是多练多敲代码,熟悉它。除了游戏,我还会一些mysql渗透之类的技术,不过也只是略懂。这些也都是靠搜索引擎可以找到的,学一门新课程,新知识,难免会有不懂的,所以多看课外资料,多看大神们的代码,也是很有必要的,要知道获取新知识就是螺旋式上升的过程,游戏失败了可以重来,学习也一样,坚持不要放弃很关键。

 有关C语言学习的调查
你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
目前为止估算自己写过多少行C代码?理解的情况如何?

  答: 学习c语言的话 , 刚开始我是先去看格式, 就是一个代码是长什么样的,就像你小学刚开始写作文,你总得知道自己要写些什么才算一篇作文吧。知道了何为一个有效的代码,接来下就是多练多去做题,题目做的越来越多之后,我就会发觉自己的懂的就越少,能用的算法也寥寥无几,这时候我就去接着看书看资料,数据结构、二叉树、前序遍历、图之类的内容。后面的话,说是在学习C语言更确切的是在学c++ ,因为c 是入门嘛。 跟游戏相比,就好像你通过了第一关,第二关开启,又是一片新地图,新内容。经验之谈,就是多做题目,习惯思想。 

         代码的话,如果算上以前敲的,五六千行左右吧,中间有段空白期,具体也不清楚。 理解的话,基础知识应该都能掌握了。

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

  答:  先看数组指针跟指针数组这组名词, 就举个例子来看吧。  int (*a) [6]   、int *a[6] 前者是数组指针后者是指针数组, 也就是着重点在后两个字上,数组指针也就是指针,这个指针指向的是数组a ,而指针数组呢,就是数组a,用来存放int型的指针。函数指针跟指针函数也是同理,函数指针也就是指向函数的一个指针,声明的方法就是 int (*f)(int a, int b)   这里可以看出函数名是一个指针了,而指针函数是返回值为指针的函数,声明的方法 int*  f(int a,int b) 可以很清楚的看到 int跟*连在一起,也就是指针的类型。

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

  答:  这两个名词我也只是听过,具体什么区别联系我也不懂。这里我只能通过网上查找的一些资料总结之后得出。

  • 文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。  
  • 是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。

  • 1. 能存储的数据类型不同
    文本文件只能存储char型字符变量。
    二进制文件可以存储char/int/short/long/float/……各种变量值。

    2. 每条数据的长度
    文本文件每条数据通常是固定长度的。以ASCII为例,每条数据(每个字符)都是1个字节。
    二进制文件每条数据不固定。如short占两个字节,int占四个字节,float占8个字节……

    3. 读取的软件不同
    文本文件编辑器就可以读写。比如记事本、NotePad++、Vim等。
    二进制文件需要特别的解码器。比如bmp文件需要图像查看器,rmvb需要播放器……

    4. 操作系统对换行符(' ')的处理不同(不重要)
    文本文件,操作系统会对' '进行一些隐式变换,因此文本文件直接跨平台使用会出问题。
    • 在Windows下,写入' '时,操作系统会隐式的将' '转换为" ",再写入到文件中;读的时候,会把“ ”隐式转化为' ',再读到变量中。
    • 在Linux下,写入' '时,操作系统不做隐式变换。

    二进制文件,操作系统不会对' '进行隐式变换,很多二进制文件(如电影、图片等)可以跨平台使用。

       参考资料 有兴趣的自己也可以看看。

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

  答:打个比方 ,你做一道菜过程是洗菜,开火,放油,放菜,炒菜.......然后面向过程就是针对这些一个一个过程具体分析,火的温度要多少,洗菜用什么水洗,放油放一勺还是两勺......如此如此的。解决问题的话,就是先分析这个问题有几个步骤,排列取值交换运算?考虑完步骤后用函数吧每一步都实现就ok了。

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

  答:在C语言里模块和多个源文件我都还没写过,但是学java的时候写过。模块这个具体什么含义,我也讲不清楚,就暂且认为是一个函数,模块编程也就是用一个一个不同功能的函数来实现最终目的的编程。而且多个源文件的程序的话,我在c里面没写过,java里倒是经常写,比如一个team,每个人都写了各自的代码,但是我看你的有个函数写的很好,总不能,我去找你的文件然后复制粘贴吧,当然这也是一种方法,不过如果代码很多很复杂呢,再加上又是别人写的,看都看的一脸懵逼别说找出关键要用的代码了。这时候就可以用include来共享代码,也就是引用别人代码里的函数(一个模块)。(前提要放在一个文件夹下)

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

  答:这个名词我也不是很懂,还是需要去查阅资料。(之前提到的经验,搜索引擎真的很强大)

  •   耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
  •   内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。

  由此看来,高内聚、低耦合原则就是让一个程序每个模块的独立性更强。

  •  在模块划分时,要遵循“一个模块,一个功能”的原则,尽可能使模块达到功能内聚。(这个是为了做到高内聚)
  •  若模块间必须存在耦合,应尽量使用数据耦合,少用控制耦合,慎用或有控制地使用公共耦合,并限制公共耦合的范围,尽量避免内容耦合。(这个是为了做到低耦合)

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

  答:把数组A的内容复制到数组B中的话,就直接同时进行扫描然后复制。查找数组A中有没有数字5,也同理扫描然后判断数组中的值。排序呢也有很多种方法,冒泡快排选择排序等等,具体看我贴的代码。

#include <iostream>
using namespace std;
int n;
void copy(int a[],int b[])
{
 int i;
 for(i=0;i<n;i++)
 {
   b[i]=a[i];
 }
}
int search(int a[],int m)
{
 int i;
 for(i=0;i<n;i++) 
  {
  if(a[i]==m)
    {
    return 1;
    break;          
    }
  else if(i==n-1)return 0;
  }
}
void sort(int a[])
{
  int i=1,lastchange,j,temp;
  while((i<n))
  {
    lastchange=n;
    for(j=n;j>=i;j--)//从后向前比较 
      if(a[j]<a[j-1])
      {
        temp=a[j];
        a[j]=a[j-1];
        a[j-1]=temp;
        lastchange=j;
      }
    i=lastchange;
  }
  for(i=1;i<=n;i++)
    cout<<a[i]<<' ';
 }
int main()
{
 int c,f,h;
 cout<<"先输入数组的大小:"<<endl; 
 cin>>n;
 int a[n],b[n];
 cout<<"输入数组A"<<endl;
 for(int i=0;i<n;i++)
 cin>>a[i];
 cout<<"输入你要进行的内容:1->复制 2->查找 3->排序"<<endl;
 cin>> c;
 switch(c)
 {
  case 1: copy(a,b); cout<<"复制完毕!"<<endl;
          for(h=0;h<n;h++)
          cout <<b[h]<<' '; 
           break;
  case 2: cout<<"输入你要查找的数"<<endl;
          cin>>f;
          if(search(a,f)){cout<<"存在"<<f<<endl;break;}
          else cout<<"不存在!!"<<endl;
          break;
  case 3: sort(a);break;
  default: exit(0);       
  }
  system("pause");
}

写一个程序,统计自己C语言共写了多少行代码。(这里我就写了一个最简单的程序,功能单一)

#include <iostream>

using namespace std;
int main()
{
 char c;
 int count=1;
 freopen("1.cpp","r",stdin);
 freopen("1的行数.txt","w",stdout);
 for(c=getchar();c!=EOF;c=getchar())
  if(c=='
')
    count ++ ;
 
 cout<<count<<endl;
 
}

你知道什么是断点吗?给出自己调试程序的例子。我就给出我上面代码在调试的截图。

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

  答:目标的话 就是把新知识学好学精,如何做的话 多说也无益,最主要就是多独立思考,并且坚持不放弃。

 

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

  答:文笔的话,我作为一个理工男,我觉得我写作能力非常差的,高中语文作文最高也就53、52。而且从上面随笔可以看出我也并不擅长写作。提高的话,我会多去看别人写的博客,看一些大神的书籍、论文,去学习他们的写作方式。

(第一次写博客,望指点)

原文地址:https://www.cnblogs.com/yyf031602438/p/6278846.html