C语言初体验(二)

来源:互联网 发布:阿里云app名师课堂 编辑:程序博客网 时间:2024/06/05 12:24

输入一句英文存入数组,翻转所有单词的顺序然后存回数组.(单词本身不翻转,单词之间有空格分割) (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;

}

 

希望对大家有所帮助,谢谢!