单词倒排(C语言)

单词倒排(C语言),第1张

题目描述:

编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。

输入格式:

输入为一个字符串(字符串长度至多为100)。

输出格式:

输出为按要求排序后的字符串。

输入样例:

I am a student

输出样例:

student a am I

AC代码:

#include
#include
#include 
void flashback(char a[], int j, int p);    //倒序函数
int main(void)
{
    char a[10000];
    int j, i, k, end;
    char temp;
    gets(a);
    end = strlen(a)-1 ;
    for (i = 0; i < end+1; i++)                   //先处理特殊符号
        if (!isalpha(a[i]))                      //非字母将第一个符号替换为‘ ’
        {
            a[i] = ' ';
            j = 0;                               //j用来记录连续特殊带符号的个数
            if (i == 0)                          //如果是首字符   删除他
            { k = i;
            for (; k <= end - 1; k++)

                a[k] = a[k + 1];
            a[k] = '
'; } else k = i+1; //k为特殊符号后的下一字符 while (!isalpha(a[i])&&i<(end+1)) { i++; j++; } j--; if (i == (end+1) ) //如果特殊字符结尾,截断字符串 a[k - 1] = '

'; else { for (; k <= end - j; k++) //通过搬移数组去除掉连续的特殊字符 a[k] = a[k + j]; a[k] = '

'; } end=strlen(a)-1; } flashback(a, 0, end); //句子倒序 for (i = 0; i < end; i++) if (!isspace(a[i]) && i < end) { j = i++; while (!isspace(a[i]) && i < end) i++; if (i < end) k = --i; else k = end; flashback(a, j, k); } puts(a); } void flashback(char a[], int j, int p) { int i; char temp; for (i = j; i < p; i++, p--) { temp = a[p]; a[p] = a[i]; a[i] = temp; } }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1353357.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-14
下一篇 2022-06-14

发表评论

登录后才能评论

评论列表(0条)

保存