标题:大一新生 学校oj上的问题 实在不知道哪里错了 大佬们能帮我解决一下吗?
只看楼主
zhumogao
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-11-8
结帖率:100%
已结贴  问题点数:20 回复次数:10 
大一新生 学校oj上的问题 实在不知道哪里错了 大佬们能帮我解决一下吗?
#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
搜索更多相关主题的帖子: 字符串 学校 max 大一新生 字符 
2019-11-08 13:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
while(scanf("%d",&n)!=EOF) 对应着题目要求的哪一句话?你还是把题目贴全吧
2019-11-08 13:42
zerglurker
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-7-23
得分:0 
是不是你们学校的测试集有换行符输入
你要看看测试集输入了一些什么
2019-11-08 14:02
zhumogao
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-11-8
得分:0 
回复 3楼 zerglurker
测试集就给了一个例子 这个例子我试了是对的 其他测试集的不知道啊

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

2019-11-08 14:11
zhumogao
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-11-8
得分:0 
回复 3楼 zerglurker
样例输入:
abcdcba
1234
xyz
gggh
样例输出:
abcd1234cba
xyzgggh

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

2019-11-08 14:12
zhumogao
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-11-8
得分:0 
回复 2楼 rjsp
完整的题目就是这个啊,老师说如果题目没给明确的组数就这样

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

2019-11-08 14:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用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;
}

2019-11-08 14:47
zhumogao
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-11-8
得分:0 
回复 7楼 rjsp
样例输入:
abcdcba
1234
xyz
gggh
样例输出:
abcd1234cba
xyzgggh
这个是样例输入输出 大佬你写的这个以我的水平看不懂啊
2019-11-08 15:03
zhumogao
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-11-8
得分:0 
回复 7楼 rjsp
我发现我的问题所在了大佬
我输入的第一个数组如果开头是数字就会错误
请问这种情况是什么原因呢
2019-11-08 16:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 9楼 zhumogao
我回复了两次(不包括本次),每次都讲了你代码中神奇的 while(scanf("%d",&n)!=EOF),你就看一眼吧
2019-11-08 17:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497677-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030446 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved