1.二维数组中的查找
在一个数组中,每一行都按照从左至右递增、从上到下递增的顺序排列,请完成一个函数,输入这样一个二维数组和整数,判断这个整数是否在数组中。
//二维数组实际上是连续存放的
bool Find(const int *a, int x, int y, int &key)
{
assert(a);
while (x < M&&x >= 0 && y < N&&y >= 0)
{
int num = a[x*M + y];
if (key>num)//如果查找的数字大于某一行最后一个数字,则x++;
{
x++;
}
else if (key<num)//如果查找的数字小于某一行最后一个数字,则y--;
{
y--;
}
else
{
return true;
}
}
return false;
}
2.求数组所有元素的和
(1)非递归
int main()
{
int sum = 0;
int arr[5] = {1,2,4,5,6};
int len = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < len; i++)
{
sum += arr[i];
}
printf("sum = %d\n",sum);
return 0;
}
(2)递归
int Get_Sum(int *arr,int len)
{
return len == 0 ? 0 : Get_Sum(arr, len - 1) + arr[len - 1];
}
int main()
{
int arr[5] = {1,2,4,5,6};
int len = sizeof(arr) / sizeof(arr[0]);
printf("sum= %d\n",Get_Sum(arr, len));
return 0;
}
3.写一个函数,将一维数组中的元素逆序存放
void reverseChar(char strs[]){
//strlen()方法在string.h的头文件中,所以这里要include <string.h>
size_t count = strlen(strs);
//定义一个指针指向strs的内存地址
char *p = strs;
char tmp;
for (int i = 0; i < count / 2; i++) {
tmp = *(p + i);
*(p + i) = *(p + count - 1 - i);
*(p + count - 1 - i) = tmp;
}
}
int main()
{
//C语言是没有String类型的 它用char的数组来表示字符串
char strs[] = "ios_php_java";
printf("倒序前的字符串为:%s\n", strs);
reverseChar(strs);
printf("倒序后的字符串为:%s\n", strs);
return 0;
}