0

我必须按“ZOJ”顺序输出每个字符串。字符串的长度是从 1 到 100。“E”表示输入的结尾。

我用 gcc 测试我的程序。我尝试了很多例子,输出很好。然而,网上的判断竟然是错误的答案。

例子:

输入:

ZZOOOJJJ

ZZZZOOOOOOJJJ

动物园

输出:

ZOJZOJOJ

ZOJZOJZOJZOO

ZOJOJO

谢谢!这是我的代码。

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

#define MAX_SIZE 100

main() {

char data[MAX_SIZE];
int len;
int z,o,j;
int i;
char c;

int z_index, o_index,j_index;

while(scanf("%s", data)!= EOF && (strlen(data)>=1 && data[0] != 'E')) {
    len = strlen(data);

    z = -1;
    o = -1;
    j = -1;
    z_index = -1;
    o_index = -1;
    j_index = -1;

    for(i=0; i<len; i++) {
        c = data[i];
        switch(c) {
            case 'Z':
                if(z==-1)
                    z_index=i,z=i;
                else
                    z = i;
                break;
            case 'O':
                if(o==-1)
                    o_index=i,o=i;
                else
                    o = i;
                break;
            case 'J':
                if(j==-1)
                    j_index=i,j=i;
                else
                    j = i;
                break;
        }

    }

    while(z_index!=-1 || o_index!=-1 || j_index!=-1) {
        if(z_index!=-1 && z_index<=z)
            putchar('Z'), z_index++;
        else
            z_index = -1;

        if(o_index!=-1 && o_index<=o)
            putchar('O'), o_index++;
        else
            o_index = -1;

        if(j_index!=-1 && j_index<=j)
            putchar('J'), j_index++;
        else
            j_index = -1;

    }
    putchar('\n');
}

}

4

1 回答 1

0

你真的应该让你的函数 int main() 而不仅仅是 main() 因此你应该在最后返回 0 。

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

#define MAX_SIZE 100

int main() {
    char data[MAX_SIZE];
    int len;
    int z,o,j;
    int i;
    char c;

    int z_index, o_index,j_index;

    while(scanf("%s", data)!= EOF && (strlen(data)>=1 && data[0] != 'E')) {
        len = strlen(data);

        z = -1;
        o = -1;
        j = -1;
        z_index = -1;
        o_index = -1;
        j_index = -1;

        for(i=0; i<len; i++) {
            c = data[i];
            switch(c) {
                case 'Z':
                    if(z==-1)
                    z_index=i,z=i;
                    else
                    z = i;
                    break;
                case 'O':
                    if(o==-1)
                    o_index=i,o=i;
                    else
                    o = i;
                    break;
                case 'J':
                    if(j==-1)
                        j_index=i,j=i;
                    else
                        j = i;
                    break;
            }
        }

        while(z_index!=-1 || o_index!=-1 || j_index!=-1) {
            if(z_index!=-1 && z_index<=z)
                putchar('Z'), z_index++;
            else
                z_index = -1;

            if(o_index!=-1 && o_index<=o)
                putchar('O'), o_index++;
            else
                o_index = -1;

            if(j_index!=-1 && j_index<=j)
                putchar('J'), j_index++;
            else
                j_index = -1;
        }
        putchar('\n');
    }
    return 0;
}
于 2012-08-22T09:07:33.313 回答