21年4月24小练习(一)
1. my_strcmp函数实现
int my_strcmp(const char* fs, const char* sc) { assert(fs != nullptr && sc != nullptr); /*while ('\0' != *fs++ && '\0' != *sc++)*/ //这一句错了,后置++执行后,才进入循环体 //这样漏掉了字符串第一个字符的比较 while ('\0' != *fs && '\0' != *sc) { if (*fs == *sc) { fs++; sc++; } else { break; } } return *fs - *sc; }
2. 两次反转数组左右移
/*数学方法,两次对调,实现数组左移右移*/ #if 0 void ResArray(int *br,int left,int right) { assert(br!=nullptr); while (left<right) { int a = br[right]; br[right] = br[left]; br[left] = a; left++; right--; } } void leftArrMove_K(int *ap,int n,int k) { k = k % n; ResArray(ap, 0, k-1); ResArray(ap, k, n-1); ResArray(ap, 0, n-1); } void RighttArrMove_K(int* ap, int n, int k) { k = k % n; ResArray(ap,n-k,n-1); ResArray(ap, 0, n-k-1); ResArray(ap, 0, n - 1); } int main() { const int size = 5; int ar[size] = { 1,2,3,4,5 }; RighttArrMove_K(ar, size,5); for (int i = 0;i < 5;i++) { printf("%d",ar[i]); } return 0; }
3. 结构体数组左右移
Linux学习笔记