来自菜鸟的日程-------c语言基础篇4

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值