注册 登录
编程论坛 C语言论坛

大一新生 学校oj上的问题 实在不知道哪里错了 大佬们能帮我解决一下吗?

zhumogao 发布于 2019-11-08 13:17, 2470 次点击
#include<stdio.h>
#include<string.h>
int main()
{
    int len2,len1,i,max,n;
    while(scanf("%d",&n)!=EOF)
    {
        char s1[2000]={0},s2[1000]={0};
        gets(s1);
        gets(s2);
        len1=strlen(s1);
        max=0;
        for(i=1;i<len1;i++)//寻找一串字符中最大的字符
        {
            if(s1[i]>s1[max])
            max=i;
        }
        len2=strlen(s2);
        for(i=len1-1;i>=max+1;i--)//将s1字符串中最大字符后面的字符移动len2个位置
        {
            s1[i+len2]=s1[i];
        }
        for(i=max+1;i<=max+len2;i++)//将s2中的字符插入到s1当中
        {
            s1[i]=s2[i-max-1];
        }
        puts(s1);
    }
    return 0;
}
问题:给定两个字符串s和t,在s字符串中的最大字符后边插入字符串t。
输入:测试数据有多组,每组包含两个字符串s和t,分别占两行,均不超过100个字符。
输出:对于每组测试数据,输出插入后的新字符串,单独占一行。若有多个最大字符,则插在第一个之后。
我试了很多组数据都对了(用的dev c++),但是在学校的oj上还是wa
10 回复
#2
rjsp2019-11-08 13:42
while(scanf("%d",&n)!=EOF) 对应着题目要求的哪一句话?你还是把题目贴全吧
#3
zerglurker2019-11-08 14:02
是不是你们学校的测试集有换行符输入
你要看看测试集输入了一些什么
#4
zhumogao2019-11-08 14:11
回复 3楼 zerglurker
测试集就给了一个例子 这个例子我试了是对的 其他测试集的不知道啊

[此贴子已经被作者于2019-11-8 14:22编辑过]

#5
zhumogao2019-11-08 14:12
回复 3楼 zerglurker
样例输入:
abcdcba
1234
xyz
gggh
样例输出:
abcd1234cba
xyzgggh

[此贴子已经被作者于2019-11-8 14:15编辑过]

#6
zhumogao2019-11-08 14:14
回复 2楼 rjsp
完整的题目就是这个啊,老师说如果题目没给明确的组数就这样

[此贴子已经被作者于2019-11-8 14:21编辑过]

#7
rjsp2019-11-08 14:47
以下是引用zhumogao在2019-11-8 14:14:02的发言:

完整的题目就是这个啊
完整的题目包括 样例输入、样例输出 等。

以下是引用zhumogao在2019-11-8 14:14:02的发言:

老师说如果题目没给明确的组数就这样
可是你的 while(scanf("%d",&n)!=EOF) 意义何在?对每个样例都读入一个整数,然后又不使用它。
我猜你老师的意思是
unsigned n;
scanf("%u",&n);
while( n-- )
{
    …………
}




程序代码:
#include <stdio.h>

int main( void )
{
    for( char a[101],b[101]; scanf("%[^\n]%*c",a)==1 && scanf("%[^\n]%*c",b)==1; )
    {
        size_t index = 0;
        for( size_t i=0; a[i]; ++i )
            if( a[index] < a[i] )
                index = i;

        printf( "%.*s%s%s\n", (int)(index+1), a, b, a+index+1 );
    }

    return 0;
}

#8
zhumogao2019-11-08 15:03
回复 7楼 rjsp
样例输入:
abcdcba
1234
xyz
gggh
样例输出:
abcd1234cba
xyzgggh
这个是样例输入输出 大佬你写的这个以我的水平看不懂啊
#9
zhumogao2019-11-08 16:40
回复 7楼 rjsp
我发现我的问题所在了大佬
我输入的第一个数组如果开头是数字就会错误
请问这种情况是什么原因呢
#10
rjsp2019-11-08 17:05
回复 9楼 zhumogao
我回复了两次(不包括本次),每次都讲了你代码中神奇的 while(scanf("%d",&n)!=EOF),你就看一眼吧
#11
zhumogao2019-11-08 17:42
回复 10楼 rjsp
谢谢大佬已经解决了
1