1、break与continue的区别:
break : 结束所有循环
continue:结束本次循环
2、聚合类型:相同类型的数据集合
struct 结构体
3、数组存放在哪个位置??方法内
4、数组什么时候确定大小? 编译
5、什么时候给数组分配内存?? 运行
6、数组越界的原理是什么???
7、最多分配多大的内存???栈大小 1M-2M
8、sizeof();
sizeof(arr):代表整个数组的字节数
int len = sizeof(arr)/sizeof(arr[0]);//数组长度计算公式
9、,p[i]==*(p+i); *解引用 []:自带解引用
10、int *p;//野指针(没有被初始化)
11、int *p = NULL;//0号地址 不能访问0号地址
12、数组初始化只有一次机会
13、int crr[5] = arr;//arr: 数组首元素的首地址
(一)求一个数字的二进制数中1的个数
法一:(移位)
int NumOf1(int n)
{
int count = 0;
while(n != 0)
{
if(n & 1)
{
count++;
}
n = n >> 1;
}
return count;
}
法二:
int NumOfOne(int n)
{
int count = 0;
while(n != 0)
{
count++;
n = n & (n-1) ;
}
return count;
}
(二)给定一个数字,求这个数字是几位数?
顺序打印每一位数字 逆序打印每一位数字
int NumCount(int n)
{
int count = 0;
while(n != 0)
{
count++;
n /= 10;
}
return count;
}
//顺序打印数字
void PrintOrder(int n)
{
if(n == 0)
{
printf("0\n");
return;
}
if(n < 0)
{
printf("- ");
n = -n;
}
int figures = NumCount(n);//123 == >3
int power = (int)pow((float)10,(float)(figures-1)); //100 10^2 figures-1
int tmp = 0;//存储每一位数字,n == 123 power 100
while(power != 0)
{
tmp = n/power;//123/100==1 23/10==2 3/1==3
printf("%d ",tmp);//1 2 3
n = n % power;//123%100 ==23 23 % 10 ==3 3 % 1 == 0
power /= 10;//10 1 1/10 == 0
}
printf("\n");
}
//逆序
//123 3 2 1
//123 % 10 3 12 % 10 2 1 %10 1
//123/10 12 12/10 1
void PrintRever(int n)
{
if(n == 0)
{
printf("0\n");
return;
}
if(n < 0)
{
printf("- ");
n = -n;
}
int tmp = 0;
while(n != 0)
{
tmp = n % 10;//123 % 10 == 3
printf("%d ",tmp);
n /= 10;//123 /10 = 12
}
printf("\n");
}
int main()
{
PrintRever(123);
PrintRever(-123);
PrintRever(0);
return 0;
}
(三)求斐波那契数列的第40项多少?
int Fabonacci(int n)
{
int f1 = 1;
int f2 =1;
int f3 = 1;
int i;
for(i = 3;i <= n;i++)
{
f3 = f1+f2;
f1 = f2;
f2 = f3;
}
return f3;
}