华为的机试题

字符串反转

输入 wo ai ni zhong guo 

输出 ow ia in gnohz oug

 

我的代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int fanzhuan(char *a);

int main()
{
    //输入一串带有空格的字符
    char val[1000] = { 0 };
    gets(val);

    //输入字符串的总长度
    int len_val = strlen(val);
    //新的数组,用来存放转置后的单词
    char new_val[100][100] = { 0 };
    //数组中空格的数量 计算出单词的个数 没有空格时单词为1个
    int space_world = 1;
    //k是老字符串的下标,i是新字符串的行,j是新字符串的列
    int k = 0;
    //读取每一个单词并写入新的字符串数组
    for (int i = 0; i < len_val; i++)
    {
        if (val[k]<'A' || val[k]>'z')
        {
            break;
        }
        for (int j = 0;j<1000; j++)
        {
            if (val[k] == ' ')
            {
                k++;
                space_world++;
                break;
            }
            new_val[i][j] = val[k];
            k++;
        }

    }

    for (int i = 0; i < space_world; i++)
    {
        fanzhuan(new_val[i]);
        //判断下是否是最后一个单词,如果不是,输出空格并且继续下一个单词;如果是,则不再输出空格同时跳出循环
        if (new_val[i + 1][0]>='a'&&new_val[i + 1][0]<='z' || new_val[i + 1][0]>='A'&&new_val[i + 1][0]<='Z')
        {
            printf(" ");
        }
        else
        {
            break;
        }
    }

    return 0;
}

//把所有字符反转过来
int fanzhuan(char a[])
{
    int len = strlen(a);
    for (int i = len-1; i >= 0; i--)
    {
        printf("%c", a[i]);
    }
}

 

posted @ 2019-11-12 20:53  祁峰_1024  阅读(227)  评论(0编辑  收藏  举报