第二次预备作业 20155325

你有什么技能比大多人(超过90%以上)更好?

绘画

针对这个技能的获取你有什么成功的经验?

  • 欣赏它
    不论是在创作的过程中还是结束创作欣赏作品的时候,都能感受到绘画的美感。颜色、线条、构图、意境……浓淡之间,点滴之别,不论是写意还是工笔,都能给人很大的想象空间,而想象,总是能创造美好的灵感。
  • 喜爱它
    兴趣总是最好的导师,当喜爱它的时候,就不会感受到漫长练习时间的痛苦,会更加积极地寻找让它变得更可爱的方法。
  • 塑造它
    我在画画的时候,非常追求细节和完美,可以说每一幅完成稿都尽了我当时的最大能力,所以我每次画完画都被自己折磨得心力交瘁,不过,还是很喜欢它啊(摊手)

与老师博客中的学习经验有什么共通之处?

  • 需要思考
    绘画不是单纯的线条变化和色彩填涂。怎样去运笔?用什么样的纸张?怎样的擦拭程度能够达到什么样的绘图效果?笔的吸水量和它的材料有关,纸张同样是能够赋予绘画不同生命力的基调。
    行为背后的原理,支撑工具的理论-都是在学习过程中需要思考并熟识的。
  • 技能分层
    毋庸置疑,“新手/高级初学者/合格者/精通/专家”也是适用于绘画。
  • 质变引起量变
    Practise makes perfect!
  • 刻意训练弱项
    当你为别人画的人物惟妙惟肖而感叹的时候,不能因为为此需要练习的骨骼肌肉的难度而望洋兴叹,止步不前,空空遗恨。
    所以,当我学习java遇到薄弱之处的时候,不能避之不练。反而应该“哪里痛,就往哪里按。”
  • 反馈
    往往很尴尬的事情就是,当我完成到某一层的时候,我总觉得哪里不对劲,可又说不上来,这个时候,就需要懂行的人的指导,如果能有更专业的指导,或许就此我的水平会得到质的飞跃。

C语言

你是怎么学习C语言的?与你的高超技能相比,C语言的学习有什么经验和教训?

  • 上课认真听课,好好完成作业,总结笔记,和小伙伴交流学习。
  • 经验:好好听课。在基本语法学会之后,更应注重对自己逻辑思维的培养。
    另外,单步调试很重要!
  • 教训:其实说实话,当时在学习的时候对C语言的时候单纯把它当做考试项目对待。才学C语言的时候我连“在控制面板彻底删除程序”都不会(一丝苦笑),英语底子也不怎么好,一看见未知的软件和满篇英文就内心抗拒。回过头来剖析自己,其实是因为胆怯、不够有信心导致的潜意识抗拒。所以我当时给自己的目标定得并不高,也没有做额外的练习。
    所以在今后的学习中我应该静下心来好好直面自己的短板,同时尽量让自己的学习变得有趣一些。

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

我已经下了git,并且正在努力学习它……
我的代码数排在大家的中间吧,或许。
链表、文件

你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?

数组指针是指向数组地址的指针,其本质为指针。可断句为:数组(修饰语) 指针(本体)
指针数组是数组元素为指针的数组(例如 int *p[3],定义了p[0],p[1],p[2]三个指针),其本质为数组。可断句为:指针(修饰语) 数组(本体)
函数指针是指向函数的指针变量。本体是指针
指针函数,指针函数是指带指针的函数。本体是一个函数。

虽然“本体”是我自己不准确的用法,但是这个词大概是我的一个记忆标记,让我迅速回忆起某些内容,也不知道自己是什么脑回路,摊手。(哎呀,别打我)我是为了以后自己看博客时能够回忆起某些知识。。。

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

  • 文件和流

文件

是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
存储介质:文件是指在各种存储介质上(如硬盘、可移动磁盘、CD等)永久存储的数据的有序集合,它是进行数据读写操作的基本对象。
特性:每个文件都有文件名、文件所在路径、创建时间及访问仅限等属性。
是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。
存储介质:除了和磁盘文件直接相关的文件流以外,流还有多种类型。流可以分布在网络中、内存中或者是磁带中。摘自http://blog.csdn.net/ghevinn/article/details/8525818

  • 区别文本文件和二进制文件:二进制文件中,数据以二进制形式储存,文本文件中数据的每一位数字作为一个字符以其ASCII码形式储存。——定义来自《C语言程序设计(第3版)》

  • 用fopen()打开文件,方式为:"r"、"w"、"a"、"+"、"b",用fopen()关闭文件。 读写方式:按字符和按格式。

FILE *fp;
省略
if((fp = fopen("demo.bin","wb"))=NULL/*以二进制写方式打开文件*/

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

虽然我对于面向过程程序设计这一名词并不熟悉,但是实际上已经在运用这种思维进行编程了。
把运算过程分成一个个步骤,一块块完成。为了使流程更明了或者有重复使用的运算,常常会编写自编函数使用。

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

  • 模块,又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合(即程序代码和数据结构的集合体)。
  • 没写过多个源文件的程序

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

比如写一个自编函数,尽量使它在不依赖别的函数的情况下独立完成某一个功能。比如我要编写一个求最大公因数的函数A,我没有必要先调用一个求是否互素的自编函数B(如果互素直接返回1)。因为如果B或者两者之间的调用出了问题,则A就无法正常使用,而且如果要移植A则还要连B也一起打包带走,则显得有些笨重。

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

#include <stdio.h>
#include <stdlib.h>
#define QWE 5
int main()
{
    int i,a[QWE]={2,4,1,7,5},b[QWE],p = 5,flag = 1,t,j;/*若想使程序不局限于查找5,
    在后面用输入p的值改变所想查找的数*/
    char paixu;
//  int n;
//  printf("请输入数组A大小n:");
//  scanf("%d,&n);
//  while(n>QWE)//防溢出
//{
//    printf("数组A的容量为%d,n>数组A的容量,请重新输入n",QWE);
//    scanf("%d",&n);
//}
//  printf("请输入a[]:");
    for(i=0;i<QWE;i++)
    {
//        scanf("%d",a[i]);
        b[i]=a[i];/*如果a[]的值想靠人工赋值,则把之前的作为注释的语句去掉"//",
        并把for语句的QWE改为n*/
    }//完成把数组A的内容复制到数组B中
//    printf("请输入您想在数组A查找的数:");
    for(i=0;i<QWE;i++)
    {
        if(a[i]==p)
        {
            printf("数组A里有%d\n",p);
            flag = 0;
            break;
        }
    }
    if(flag)
    {
        printf("数组A里没有%d",p);
    }//查找结束
    for(i=0;i<QWE-1;i++)
    {
        for(j=i+1;j<QWE;j++)
        {
        if(a[i]>a[j])//该排列是从小到大的冒泡排序,如果要从大到小则把">"换成"<"
        {
            t = a[i];
            a[i] = a[j];
            a[j] = t;
        }
        }
    }//排序完成
    printf("数组B:\n");
    for(i=0;i<QWE;i++)
    {
        printf(" %d ",b[i]);
    }
        printf("\n数组A:\n");
    for(i=0;i<QWE;i++)
    {
        printf(" %d ",a[i]);
    }
}

结果如下图

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

#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fp;
    char name[20];
    char l;
    int n = 0;
    printf("您想打开什么文件呢?");
    scanf("%s",name);
    if((fp=fopen("name","r"))==NULL)
    {
        printf("Failure to open it,bye~");
        exit(0);
    }
    while((l = fgetc(fp)) != EOF)
    {
        if(l=='\n')
        {
            n = n+1;
        }
    }
    printf("一共%d行代码",l);
    fclose(fp);
    return 0;
}

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

拿上面那个程序举例,我并未用printf打出我的数组A。在将数组A的值赋给B之后,为了检测是否成功,进行了单步调试如下图

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

目标:更高的要求,更多的自学,更熟练地掌握。
方式:寒假回去自己初步了解Java;开学后结合课程加强对薄弱环节的练习;认真听课;刻意训练时由一个程序展开更丰富的联想然后编写出更多的功能;加大练习量;和同学相互交流;实在弄不明白的就去请教老师。

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

我觉得我的写作能力很一般。
方法:加大阅读量,从尝试模仿相应的文体写起,寒假练字的时候抄一抄古文。遇见很喜欢的书的话我大概会有灵感想一大堆字,放假时就不抑制自己了,把它写下来吧。

posted @ 2016-12-18 17:19  难能可贵成功犯傻  阅读(526)  评论(2编辑  收藏  举报