tools.cpp
#include"tools.h"
void swap(char& x,char& y)//交换
{
char t = x;
x = y;
y = t;
}
int strlength_1(char a[])//计算长度方法1:数组
{
int i;
for (i = 0; a[i] != 0; i++);
return i;
}
int strlength_2(char *a)//计算长度方法2:指针
{
char* p = a;//首元素的地址 相当于*p=a[0]
while (*++p);
return(p - a);
}
int reverse(char a[])//颠倒
{
char* l, * r;
l = a, r = a;
while (*++r);
r--;//此时r存了a最后一个内容
while (l < r)// 前后交换
{
swap(*l, *r);
l++;
r--;
}
return 0;//int有返回值要return void没有返回值不用return
}
void leftmove_1(char a[])//左移方法1:数组
{
char t = a[0];
int i = 0;
for (; a[i + 1]; i++)//整体从首开始向左移
{
a[i] = a[i + 1];
}
a[i] = t;//首给尾
}
void rightmove_1(char a[])//右移方法1:数组
{
int i=0;
while (a[i + 1])
++i;
char t = a[i];
for(;a[i-1];i--)//整体从尾开始向右移
{
a[i] = a[i-1];
}
a[0] = t;
}
void rightmove_2(char *a)//右移方法2:指针
{
char* p = a;
while (*++p);
p--;
char t = *p;
while (p > a)
{
*p = *(p - 1);
p--;
}
*p = t;//尾给首
}
tools.h
void swap(char& x, char& y);
int strlength_1(char a[]);
int strlength_2(char *a);
int reverse(char a[]);
void leftmove_1(char a[]);
void rightmove_1(char a[]);
void rightmove_2(char *a);
text.cpp
#include<iostream>
#include"tools.h"
using namespace std;//使用命令空间std
void textstrlength_1()
{
char a[100] = "zyzyzy";
int n = strlength_1(a);//&s[0]????????????????????????
cout << n << endl;//cout输出;endl换行
}
void textstrlength_2()
{
char a[] = "zyzyzy";
int n = strlength_2(a);//&s[0]????????????????????????
cout << n << endl;//cout输出;endl换行
}
void textreverse()
{
char a[] = "0123456";
int n=reverse(a);//reverse有返回值不能直接调用
cout << a << endl;
}
void textleftmove_1()
{
char a[] = "0123456";
leftmove_1(a);//leftmove_1没有返回值可以直接调用
cout << a << endl;
}
void textrightmove_1()
{
char a[] = "0123456";
rightmove_1(a);
cout << a << endl;
}
void textrightmove_2()
{
char a[] = "0123456";
rightmove_2(a);
cout << a << endl;
}
int main()
{
textstrlength_1();
textstrlength_2();//调用测试zyzyzy
textreverse();
textleftmove_1();
textrightmove_1();
textrightmove_2();
}
显示结果
6
6
6543210
1234560
6012345
6012345