比如字符串”hello, I am a student!“ ,将其反转成”student!a am I hello,”,不能使用字符串函数。
思路:先将整个字符串反转,然后再将字符串中每个单词反转
代码:
#include<stdio.h>
void reverse(char *ch , int begin , int end);
int main()
{
char p[] = "I am a student!";
char *ch = p;
int length = 0;
while(*(p+length)!='\0') { length++;}
reverse(ch , 0 , length);
int j,k=0;
char *q = ch;
for(j = 0 ; j<length ; j++)
{
while(*q!='\0' && *q!=' '){ k++; q++;}
reverse(ch , j , k);
j = k;
if(*q!='\0') q++;
k++;
}
printf("%s\n" , ch);
return 0;
}
void reverse(char *ch , int begin ,int end)
{
if(end-begin>1)
{
int i = begin , j = end-1;
while(i<=j)
{
char temp;
temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
i++ ; j--;
}
}
}