输入一句英文存入数组,翻转所有单词的顺序然后存回数组.(单词本身不翻转,单词之间有空格分割) (10分)
例:how are you ==> you are how
算法如下:先将整个字符串反序存储,然后在将每个单词一一反向存储即可
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 32
my_strreverse(char *p, int n)
{
int i;
int j = 1;
char tmp;
for(i = 0; i < n / 2; i++)
{
tmp = *(p + i);
*(p + i) = *(p + n -i - 2);
*(p + n -i - 2) = tmp;
}
return 0;
}
my_reverse(char *p, int n)
{
int i = 0;
int j = 1;
int k;
int a[32]; //用来记录空格在字符串中的位置
a[0] = -1;
while(*(p + i) != '\n')
{
if(*(p + i) == ' ')
a [j++] = i;
i ++;
}
a[j] = n - 1;
for(k = 0;k < j; k++)
{
for(i = -1; i < n; i++)
{
if(i == a[k])
my_strreverse((p + a[k] + 1), (a[k + 1] - a[k]));
}
}
return 0;
}
int main(void)
{
char src[SIZE];
char *p = src;
printf("please in put the src: ");
fgets(src, SIZE, stdin);
printf("src: %s", src);
my_strreverse(p, strlen(src));
printf("src: %s", src);
my_reverse(p, strlen(src));
printf("src: %s", src);
return 0;
}
希望对大家有所帮助,谢谢!