技能收获与C语言学习

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

    • 我会的东西很多,喜欢的东西太多,但是很遗憾广而不专,会而不精。学了很多东西我都是为了娱乐,因为以前我们那里过于强调学习,很多爱好也都被扼杀在摇篮里。我觉得唯一可说的就是学习吧。
    • 中考考得差,虽然进了好学校但没进竞赛班,成绩还凑合,后来高二上再次分班分过了线但因为某些原因又在普通班,心里很不平衡,于是我下定决心要考到新开竞赛班的前十名,于是我制定了详细的学习,在高二的几次考试中几乎每次排名都能在竞赛班排前十,甚至前三,有的单科是全校第一。所以高二的时候我获得了参加中科大创新班的选拔的资格。
  • 针对这个技能的获取你有什么成功的经验?

    • 首先,我觉得最重要的是科学的学习计划。针对每一门课要怎么学,如何提高效率,并且计划在每一天都保证能得到落实是最重要的。
    • 其次,要注意保护自己身体。我当时每天坚持慢跑1km,因为慢跑是有氧运动,能让我感觉到放松,再加上跑步时听着音乐就很舒服。一直坚持慢跑几乎每天不停,高考那两天我都是每天晚上慢跑,知道来到北京每天不是雾霾就是大风才中断。体育锻炼不仅仅带来的是健康的身体,还有愉悦的心情,甚至还有更多意想不到的收获,这一点我和娄老师感同身受。
    • 接着,我觉得学习别人的经验,结合实际对计划在实行过程中进行改进。
    • 然后还有,在计划长期的进行中容易遇到瓶颈期,一般是人进入comfortable zone的时候,这时候容易遇到很多挫折,这就需要思考方法去突破瓶颈期。
    • 最后,我觉得要保持向前的热情,勇敢前行。
  • 与老师博客中的学习经验有什么共通之处?

    • 学习光靠低水平的重复是没用的,有些思维定式需要[刻意训练]。
    • 要摆脱[舒适区],进入[学习区]学习,只有经历痛苦才能取得进步。
    • 发现问题要找到根源,而不能搪塞过去,否则下次遇到问题又可能不知道怎么解决。

  • 有关C语言学习的调查

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

      • c语言学习主要是跟着老师学,然后下课看教材、网上的视频,做实验,学习优秀代码,实践主要以练习平台为主,但是现在想想那个平台的题普遍太简单了,我一直局限在那个学习平台,让我一直在[舒适区],而没有进入[学习区]。
    • 目前为止估算自己写过多少行C代码?理解的情况如何?

      • 代码行数肯定超过了5000行吧,写过的程序我都会弄懂。
    • 学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?

      • 我的理解是:
      • 数组指针:指向数组的指针。
      • 指针数组:包含指针的数组。
      • 函数指针:指向函数的指针。
      • 指针函数:函数返回类型是指针的函数。
    • 学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?

      • 文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。

        是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。

      • 文本文件和二进制文件无本质的差别,二进制文件中有对文件信息和解释方式,而文本文件中没有。

      • 文本文件中,fopen、fclose函数用于文件打开与关闭,fscanf、fgets函数用于文件读取,fprintf、fputs函数用于文件写入。二进制文件读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中。

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

      • 以过程为中心的编程。首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,最后使用的时候一个一个依次调用。
    • 在C语言里面,什么是模块?你写过多个源文件的程序吗?

      • 按照功能将一个软件切分成许多部分单独开发,每个部分即为模块。没有写过。
    • 学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?

      • 模块内代码相关性强,模块间相关性弱。将功能模块化,提炼可重复使用的代码。
    • 学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。

数组A的内容复制到数组B中

#include<stdio.h>
#include<string.h>
#define N 100
int main()
{
char string_a[N];
char string_b[N]="saldfjlaskdfj";
memcpy(string_b,string_a,strlen(string_b);
printf("%s\n",string_a);
return 0;
}

如何查找整数数组A中有没有数字5

int n,i,flag=0;
n=strlen(string);
for(i=0;i<n;i++)
{
if(5==string[i])
{
printf("yes");
flag=1;
break;
}
else
{
continue;
}
}
if(0==flag)
{
printf("no");
}

如何对整数数组A进行排序(从小到大,从大到小)?

for ( i=0; i<=8; i++ )
{
k=i;
for( j=k+1; j<10; j++ )
if ( a[k]>a[j] ) // if ( a[k]<a[j] )
{
k=j;
}
temp=a[i]; a[i]=a[k]; a[k]=temp;
}
for ( i=0; i<10; i++ )
{
printf("%4d",a[i]);
}

写一个程序,统计自己C语言共写了多少行代码。(待解决:去掉空行和注释行。完成搜索)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 1000 int main()
{
FILE *search=NULL;
char ch;
int n=0;
system("dir /a-d /b d:\\*.c/s >list.txt");
if((search=fopen("list.txt","r"))==NULL)
{
printf("未找到.c文件");
exit(0);
}
char path[N][N];
int i=0,j=0;
while((ch=fgetc(search))!=EOF)
{
if(ch=='\n')
{
n++;
path[i][j]='\0';
puts(path[i]);
i++;
j=0;
}
else
{
path[i][j]=ch;
j++;
}
}
fclose(search); int sum=0;
FILE *fp=NULL;
for(i=0;i<n;i++)
{
if((fp=fopen(path[i],"r"))==NULL)
{
printf("第%d个路径:%s",i,path[i]);
printf("错误\n");
continue;
}
while((ch=fgetc(fp))!=EOF)
{
if(ch=='\n')
{
sum++;
}
continue;
}
fclose(fp);
}
printf("代码共%d行",sum);
return 0;
}
  • 你知道什么是断点吗?给出自己调试程序的例子。
    • 断点就是人为在代码中设定的使得程序中断的地方,使得程序运行到暂停。测试者可以让程序一步一步运行,观察程序是否出错,以找到程序错误的地方。
  • 对比C语言的学习,你对《Java程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?

    • 我想能够更多的用java写一些有用的程序,而不是把实践局限在作业和实验。
    • 强制自己多写代码,寻找方法理清思路。
    • 多实践,多思考,更重要的是让自己爱上编程。
  • 毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?

    • 我觉得自己写作能力一般吧。我从小只愿意读不愿意写,现在看来如果只读不写,读的内容也不会记住,写作也得不到提升。我觉得提高写作能力,重要的是多读多写,还需要找“教练”给予指导。
上一篇:Linux下getsockopt/setsockopt 函数说明


下一篇:Django 2.0 学习(12):Django 模板语法