1.交换两个数组

//交换两个数组
int a[] = { 1,2,3,4,5,6 };
int b[] = { 6,5,4,3,2,1 };
int tep = 0;
int sz = sizeof(a) / sizeof(a[0]);
for (int i = 0; i <sz ; i++)
{
	tep = a[i];
	a[i]=b[i];
	b[i] = a[i];
}

2.求字符串的长度(指针版):

//指针求字符串的长度
int my_str(char* str) {
	char* start = str;
	char* end = str;
	while (*end !='\0')
	{
  end++;
	}
	return end-start;//返回数组个数
}
//加强版
int my_strlen(const char* sr) {
	int count = 0;
	assert(*sr != NULL);
	while (*sr!='\0')
	{
  sr++;
  count++;
	}
	return count;
}

3.sizeof返回的是无符号数,当int类型与unsigned进行判断或者运算的时候,int类型会转化成unsigned无符号数。

全局变量不初始化默认是0

C的一些题目_数组

所以i=-1的时候再计算机中的补码是11111111111111111111111111111111,这个数当成unsigned是一个超级大的数,所以这个结果是打印>


4.求一个数的补码中有几个1:

int count_bit(int a) {
	int i = 1;  
	int count = 0;
	int times = 32;
	while (times)
	{
  if (a & i) {
  	count++;
  }
  a = a >> 1;
  times--;
	}
	return count;
}

!!!一个很重要的知识点n=n&(n-1)它的作用是每次把n补码上最右边的1变成0.

改进型:

C的一些题目_数组_02