解法一:
void fun (char *w,int m)
{
int i,j;
char temp; //临时变量
for(i=1;i<=m;i++) //移动的次数,不是遍历数组
{
temp=w[0];
for(j=1;w[j]!='\0';j++) //遍历字符串
{
w[j-1]=w[j]; //移动
}
w[j-1]=temp; //最后一个元素赋值
}
}
解法二:
void fun (char *w,int m)
{
int i,j;
char temp;
int len=strlen(w);
for(i=1;i<=m;i++)
{
temp=w[0];
for(j=1;j<=len-1;j++)
{
w[j-1]=w[j];
}
w[j-1]=temp;
}
}
/*相比于遍历整形数组,字符串数组有很多不一样的地方
1.数组遍历的方式
对于整形数组;
for(int i=0;i<n;i++)
{}
对于字符串数组;
for(j=0;w[j]!='\0';j++)
{}
2.
赋值的方式
对于整形数组,有int temp;
w[n-1]=temp;
对于字符串数组,有char temp;
w[j]=temp;这里借助的是j,因为w[j]!='\0',所以在退出循环的时候w[j]表示的是数组的最后一个。
*/
/*
解法一二的区别在于判断循环的条件:
解一在于判断元素是否为'\0';
解二通过求出字符串长度进而得到对j的值的限定
*/
C语言 精选真题16
于 2024-11-13 16:10:31 首次发布