1.题目:
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
#include<stdio.h>
void Change(int*p,int sz)
{
int on = 0;//求奇数的个数
int* q = p;
for (int i = 0; i < sz; i++)
{
if ((*q) % 2 != 0)//余数不为0则是奇数
{
on++;//是奇数,则on+1
}
q++;
}
int* m = p;
while(on)//p和q中的地址相同时,循环结束
{
if ((*m) % 2 != 0)
{
int tmp = *p;
*p = *m;//奇数依次放入数组前on个位置
*m = tmp;
p++;
on--;//找到一个奇数,on就减一
}
m++;
}
}
int main()
{
int arr[8] = { 4,6,5,8,9,2,2,7 };
int sz = sizeof(arr) / sizeof(arr[0]);
Change(arr, sz);
for (int i = 0; i < sz; i++)
{
printf("%d", arr[i]);
}
return 0;
}
2. 实现一个函数,可以左旋字符串中的k个字符。
例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
void Turn(int k)
{
char arr[] = "\0";
scanf("%s", arr);
size_t sz = strlen(arr);
while (k)
{
int i = 0;
char tmp = arr[i];
for (int j = 0; j + 1 < sz; j++)
{
arr[j] = arr[j + 1];
}
arr[sz - 1] = tmp;
k--;
}
for (int i = 0; i < sz; i++)
{
printf("%c", arr[i]);
}
}
int main()
{
Turn(2);
return 0;
}