繁体   English   中英

将字符串转换为特殊字符串

[英]Convert the string into special string

输入:你好

输出:

奥列尔·埃里特(Olleh Ereht)

输入:

你好吗?

输出:

Woh Era?you

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

int main()
{
   char s[100], r[100];
   int n, c, d=0;
   int p=0,t=0;

   printf("Input a string\n");
   gets(s);

   //n = strlen(s);

    while(s[p]!= '\0'){
        while(s[p]!= ' ' || s[p]!= '\0'){
            p++;
        }

        for (c = p-1; c >= t; c--, d++)
            r[d] = s[c];

        r[d++] = ' ';

     // printf("%s\n", r);
        t=p;
        p++;
    }

    r[d]= '\0';
    printf("%s\n", r);
    return 0;
}

我遇到了超过时限的问题。.我不知道我要去哪里错。Plz为我提供解决方案。

我认为内部的while循环永远不会终止,因为条件永远不会给出false。 为了终止循环:

s [p]!=''s [p]!='\\ 0'都应为false。

也就是说

s [p] ==''s [p] =='\\ 0'都应该为true,这是不可能的。

这就是为什么您会收到超过时间限制的错误的原因。

也许像这样

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

int main(void){
    char s[100], r[100];
    int p = 0, d = -1;

    printf("Input a string\n");
    scanf("%99[^\n]", s);//gets(s);<-- "gets" already was obsolete.

    while(1){
        if(s[p] != ' ' && s[p] != '\0'){
            r[++d] = s[p];
        } else {
            if(d >= 0){
                putchar(toupper(r[d--]));
                while(d >= 0){
                    putchar(tolower(r[d--]));
                }
            }
            if(s[p] == ' ')
                putchar(' ');
            else
                break;
        }
        ++p;
    }

    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM