HOMEWORK-2
没什么超乎常人的技能吧,我想。关于C的学习之前一直是自学,上了大学也是吃老底(上一篇提到了),因为这个学期一直在学matlab,C除了帮人写过作业教过课自己也没写点什么。
- 指针的概念还算清楚,毕竟经常用嘛。stream的概念是在大学接触的,我形容不了,结构上就是个连续没有绝对位置的序列,对数据一视同仁。
- 将问题分解成一个一个的步骤,按部就班的做就是面对过程编程。之前上课讲的就是这样的。
- 在一个文件中提模块,肯定要提及static关键字的含义。这是之前上课被严重忽视的内容(反正我们老师没讲)。在网上看了许许多多解释,很多人认为是一个静态变量区(不知道侧重点是啥)。我能理解的是模块编程的模块,将程序的各个功能划分后通过调用实现,这样能做到在之后的修改中方便维护。同样的在一个项目中可以通过多个子程序实现目标。在java学习中曾听学长讲过一个图书管理系统的结构,初步有个了解。在C中写过.h文件来支持程序。在matlab中经常调用C的程序,如果说C编写的程序是为了实现某个功能,那对于我matlab想做的最终实现的而言C就是一个模块。
- “高内聚,低耦合”是面对对象编程中的特点,我需要进一步学习。
- 公文写作能力正是我欠缺的,希望通过写博客等方式加以锻炼,避免我每年写工作总结报告格式都要询问他人。
数组复制
方案一
#include<stdio.h>
#include<string.h>
int main()
{
int a[10]={6,5,4,3,7,8,9,1,0,2};
int b[10];
int i;
for (i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
memcpy(b,a,sizeof(int)*10);
for (i=0;i<10;i++)
printf("%d ",b[i]);
}
方案二
void copy(int a1[],int a2[])
{
int i;
for (i=0;i<10;i++)
a2[i]=a1[i];
return;
}
查询
int a[10]={6,5,4,3,7,8,9,1,0,2};
int b[10];
void check(int k,int t)
{
if (t == 0) {printf("Nope\n"); return; }
if (a[t] == k) {printf("Yes %d\n",t+1); return; }
check(k,t-1);
}
排序
int comp(const void*a,const void*b)
{
return *(int*)a-*(int*)b;
}
qsort(a, length(a), sizeof(type), comp);
统计文件个数
用system函数调用dos命令dir查找相关文件个数,之后逐个打开统计回车符个数。Linux调用find命令 find / -type f -name "*.cpp"