今天练习了一个程序,是输出fibonacci数组取余的数,发现了自己的许多问题:
1.动态数组分配内存的问题,之前我一直以为程序只要能出结果就可以,原来还要考虑内存出错的问题;
而且我记不住C语言里面怎样动态分配内存,每次都要上网查。默写一下(例如用int)
int *a;
a=(int*)malloc(sizeof(int)*n);
2.选择数据类型的问题,我一直是盲选的因为我记不住每种类型的范围。
然后我刚刚去找了各种数据类型的范围,希望我能记住
B = byte 即字节 (1 byte = 8 bit)
b = bit 即比特
短整型short:
范围:-32768~32767 (-2^15~2^15-1)
所占内存大小:2byte=16bit;
整型int:
范围:-2147483648~2147483647;(即-2^31~2^31-1)
占内存大小:4byte=32bit;
unsigned:
范围:0~4294967295;(即0~2^32-1)
所占内存大小:4byte=32bit;
长整型long:
范围:-2147483648~2147483647;(即-2^31~2^31-1)
所占内存大小:4byte=32bit;
unsigned long: 所占内存大小:4byte=32bit;
范围:0~4294967295;(即0~2^32-1)
3.居然忘记了数组是从0开始的o(╥﹏╥)o
下面是练习的代码
#include <malloc.h>
int main()
{
unsigned long *Fn;
unsigned long n;
scanf_s("%ld", &n);
Fn = (unsigned long*)malloc((n + 1)*sizeof(unsigned long));
Fn[0] = 1;
Fn[1] = 1;
if (n > 2)
{
int i = 2;
for (i; i <=n; i++)
{
Fn[i] =( Fn[i - 2] + Fn[i - 1])%10007;
}
}
printf("%ld", Fn[n-1]);
free(Fn);
return 0;
}