2017《面向对象程序设计》寒假作业一
前言
以前也有开过博客不过最后因为各种原因而放弃了,既然是随笔那我就随意的写一下啦。
1.在人生技能道路上,你有没有专长的高超技能获取的成功经验
你有什么技能比大多人(超过70%以上)更好?
针对这个技能的获取你有什么成功的经验?
有什么技能能比大多数人好?对于我来说有两方面,一个是表现在外面:短跑成绩;另一个属于性格特质:能坚持去做一件事。前者没有成功的经验吧,因为是天生的身体素质所造就的;后者成功的经验在于拥有不错的心态,不会因为一些挫折而轻易放弃。
2.有关C语言学习的调查
你是怎么学习C语言的?(作业,实验,教材,其他),与你的高超技能相比,C语言的学习有什么经验和教训?
目前为止估算自己写过多少行C代码?理解的情况如何?
我学习C语言的方式是自学为主,教师指导为辅助。与我的高超技能相比,我的C语言学习应该一样持之以恒并且以平和的心态来学习C语言,不要急功近利。我估计自己写了大概上千行代码了吧,我在C语言的学习过程中了解了顺序结构,条件结构和循环结构。在此之上,是对数值和计算机内存的操作,指针可以直接对内存操作,指针是C语言的根基。
大概有上千行了吧。
学过了C语言,你分的清数组指针,指针数组;函数指针,指针函数这些概念吗?
大致了解了:
数组指针:指向数组第一位数据的指针
指针数组:由指针类型组成的数组
函数指针:指向函数体的内存地址的指针
指针函数:传入数据或传出数据包含指针类型的函数
学过了C语言,你明白文件和流的区别和联系吗?如何区分文本文件和二进制文件?如何编程操作这两种文件?
文件应该是存储在存储器中的01序列,而流则是文件信息从一个地方到另一个地方的过程。文本文件是通过将二进制码转换成ASCLL码的文件,而二进制文件这是由01组成的文件,这在书上文件操作一章有提到。如何变成操作两种文件的话,在C的课本中讲是通过r和rb来操作的,rb代表二进制文件的读取。
学过了C语言,你知道什么叫面向过程程序设计吗?它解决问题的方法是什么?
面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。
在C语言里面,什么是模块?你写过多个源文件的程序吗?
按照功能将一个软件切分成许多部分单独开发,然后再组装起来,每一个部分即为模块 ,模块是在内核空间运行的程序,实际上是一种目标对象文件。我自己还没有尝试写过多个源文件的程序。
学过了C语言,你知道什么是“高内聚,低耦合”吗?这个原则如何应用到高质量程序设计中?
大概就是写的一段代码尽可能专一的完成一个任务,各段代码尽量模块化互相独立.不要像刚学写程序时那样从头写到尾只能完成当前任务,不能被移植倒其他任务中。
学过了C语言,你如何把数组A的内容复制到数组B中?如何查找整数数组A中有没有数字5?如何对整数数组A进行排序(从小到大,从大到小)?写出相应的程序。
把数组A的内容复制到数组B中:
for (i=1;i<=lengthOfArrayA;i++){
b[i]=a[i];
}
查找整数数组A中有没有数字5:
bool have5=false;
for(i=1;i<=lengthOfArrayA;i++){
if (a[i]==5) {
have5=true;
break;
}
}
对整数数组A进行排序(从小到大,从大到小):
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b){
return(*(int *)a-*(int *)b);
}
int main(){
int n=3;
int a[3]={1,3,2};
qsort(a,n,sizeof(a[0]),cmp);
printf("%d",a[1]);
}
写一个程序,统计自己C语言共写了多少行代码。(将上述多个程序的Github链接附在随笔上,可以在随笔上附上关键而非全部代码)
#include <stdio.h>
int main() {
int ch,lines;
FILE *fp;
char filename[FILENAME_MAX];
printf("输入文件名:");
while(scanf("%s",filename) == 1) {
fp = fopen(filename,"rt");
if(fp == NULL) {
printf("无法打开数据文件:%s\n",filename);
printf("输入文件名(or <Ctrl + Z>):");
continue;
}
lines = 0;
while((ch = fgetc(fp)) != EOF) {
if(ch == '\n') ++lines;
}
fclose(fp);
printf("%s : %d\n",filename,lines);
printf("输入文件名(or <Ctrl + Z>):");
}
return 0;
}
对比C语言的学习,你对《面向对象程序设计》的学习有什么具体目标?如何通过刻意训练提高程序设计能力和培养计算思维?如何通过“做中学”实现你的目标?
我希望通过《面向对象程序设计》的学习写出更高质量的代码,进一步提升自己的学习能力和水平。“做中学”我觉得大致意思就是实践为主,也就是自己多敲敲代码自己多研究琢磨新的技巧,自己一点一点积累经验。
毕业后大多数人从事的工作的要求是“提笔能写,开口能说,问策能对,遇事能办”,非常重要的技能是公文写作能力,你觉得自己写作能力如何?要怎么提高?
我觉得自己的写作能力比较平庸。写作能力我觉得在一定程度上和逻辑能力有关,因为写作的铺排和陈述都有讲究逻辑,一步一步如何下来的都有规律。因此我觉得,提升自己的逻辑能力,比如打打代码应该就可以在一定程度上提升一些,当然,适当的阅读量对自己的写作能力的提升也很有帮助。