代码改变世界

蛇形添数解题报告。

2012-12-10 17:20  Dr.Ray  阅读(81)  评论(0)    收藏  举报

方法积累:

1.将矩阵初始化为0,以标明方向。

使用代码:memset(a,0,sizeof(a));,使用前包含string.h

2判断程序停止条件:

    我开始是使用当矩阵所有数都不为0时停止,于是就要在最后一个操作点判断其上下左右都不为0,还要考虑填入最后一个操作点。此方法太麻烦。

于是我用了验证填入数字是否等于n^2很快就解决了问题。

最后看书上的优秀代码,修改为可以直接在循环语句的条件判断部分进行判断。

 

错误记录:

1.填完一个周期后,只用修改纵坐标,我粗心吧把横坐标也修改了。

 

新知识:

memset(a,0,sizeof(a));

a是指针,0是初始化的值,sizeof(a)是a指向的内存的大小。

将a指向的内存块全部赋值为0

此函数通常用于给较大内存块赋初值

memset按字节赋值:

  如int a[5],
    memset(a,0,20)

   则a数组被成功初始化为0,若memset(a,0,5)则乱码。

 

memset源码(来自C标准库)

#include<string.h>

void*(memset)(void*s,int c,size_t n)不理解*(memset)

{

const unsigned char uc=c;不理解const

unsigned char *su;

for(su=s;0<n;++su,--n)

*su=uc;

return (s);

}