我必须以'ZOJ'的顺序输出每个字符串。字符串的长度是1到100.“E”表示输入的结束。
我用gcc测试我的程序。我尝试了很多例子,输出很好。然而,在线评判结果却是错误的答案。
示例:
输入:
ZZOOOJJJ
ZZZZOOOOOJJJ
ZOOOJJ
电子
输出:
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');
}
}
答案 0 :(得分: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;
}