标题:无效内存引用
只看楼主
垆边看客
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-5-9
结帖率:100%
已结贴  问题点数:20 回复次数:11 
无效内存引用
各位大神你们好。我有一道编程题不知道哪里错了。这道题是学校老师布置的。有三个测试用例没有通过。其中一个是:错误的结果。另两个是:出现了无效内存引用。测试用例具体不知道。能帮忙看看吗
题目:
输入
输入3行:第1行为源串s (长度<=100), 第2行被替换串t (长度<=10), 第3行为替换串str(长度<=10)
输出
替换后的字符串(长度<=100)

          测试输入       期待的输出        时间限制     内存限制    额外进程

测试 1   文本显示         文本显示           1秒          64M        0
         1.abcdefg        1.abcdefg
         2.c
         3.123


测试2   文本显示         文本显示         1秒           64M         0
   
       1.1234567890    1.abcdefg4567890
       2.123
       3.abcdefg

#include<stdio.h>
#include<string.h>
int main()
{
char s[250],s1[250],s2[250],ss[250];
int i,j,k,l,n,p,q,m,u;
gets(s);
gets(s1);
gets(s2);
l=strlen(s1);
strcpy(ss,s);
for (i=0;s[i];i++)
{
n=0;
k=i;
for (j=0;s1[j];j++,k++)
if (s1[j]==s[k])   n++;
if (n==l)   
{
k=i;
for (p=0;p<k;p++)
ss[p]=s[p];
for (u=p;s[u+l];u++)
s[u]=s[u+l];
s[u]='\0';
m=p;
for (q=0;s2[q];q++,m++)
ss[m]=s2[q];
for (;s[p];p++,m++)
ss[m]=s[p];
ss[m]='\0';
strcpy(s,ss);
}
}
puts(ss);
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
char s[250],s1[250],s2[250],ss[250];
int i,j,k,l,n,p,q,m,u;
gets(s);
gets(s1);
gets(s2);
l=strlen(s1);
strcpy(ss,s);
for (i=0;s[i];i++)
{
n=0;
k=i;
for (j=0;s1[j];j++,k++)
if (s1[j]==s[k])   n++;
if (n==l)   
{
k=i;
for (p=0;p<k;p++)
ss[p]=s[p];
for (u=p;s[u+l];u++)
s[u]=s[u+l];
s[u]='\0';
m=p;
for (q=0;s2[q];q++,m++)
ss[m]=s2[q];
for (;s[p];p++,m++)
ss[m]=s[p];
ss[m]='\0';
strcpy(s,ss);
}
}
puts(ss);
return 0;
}
搜索更多相关主题的帖子: 字符串 学校 
2014-05-09 15:52
垆边看客
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-5-9
得分:0 
对不起,怎么重复发题了。
2014-05-09 15:59
垆边看客
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-5-9
得分:0 
各位大神帮帮忙,这题想了好几天,也没捣鼓出来,到底错在哪了?
2014-05-09 16:05
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:2 
代码要由缩进哦

[ 本帖最后由 wp231957 于 2014-5-9 16:18 编辑 ]

DO IT YOURSELF !
2014-05-09 16:16
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:2 
测试了2组案例  没发现啥不对的地方哦

DO IT YOURSELF !
2014-05-09 16:19
垆边看客
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-5-9
得分:0 
回复 4 楼 wp231957
这是我做的题,但有错误,测试结果一个是:“错误的结果”。另两个是:“出现了无效内存引用”,我不知错在哪?麻烦大神给看看
2014-05-09 16:21
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:2 
这是我用你的代码测试的3组案例  你看一下

程序代码:
D:\c_source\w4\Debug>w4
dfgdfsgs
dfgdfsg
5
5s

D:\c_source\w4\Debug>w4
234523452
a
sdfs
234523452

D:\c_source\w4\Debug>w4
abcdef
cd
123456789
ab123456789ef

DO IT YOURSELF !
2014-05-09 16:22
垆边看客
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-5-9
得分:0 
好的,谢谢大神,我好好看看
2014-05-09 16:24
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:2 
没有缩进,没有注释,变量命名全是单一的字母,没法看

总有那身价贱的人给作业贴回复完整的代码
2014-05-09 16:36
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
得分:10 
写得不够精简,可能问题是出在里层的循环,稍微改了一下,原来的就没有细看了。
程序代码:
#include<stdio.h>
#include<string.h>

int main()
{
    char src[250], pattern[250], replace[250], dst[250];
    int i, j, k, l;
    int pattern_len, match_len;
    printf ("Input src: ");
    gets( src );
    printf ("Input pattern: ");
    gets( pattern );
    printf ("Input replace: ");
    gets( replace );
    pattern_len = strlen( pattern );
    strcpy( dst, src );
    for ( i = 0; src[i]; i++ ) {
        for ( j = 0, k = i, match_len = 0; pattern[j]; j++, k++ )
            if ( pattern[j] == src[k] )   match_len++;
        if ( match_len == pattern_len ) {
            for ( k = 0; k < i; k++ )
                dst[k] = src[k];
            for ( l = 0; replace[l]; k++, l++ )
                dst[k] = replace[l];
            for ( l = i + match_len; src[l]; k++, l++ )
                dst[k] = src[l];
            dst[k] = '\0';
            break;
        }
    }
    puts( dst );
    return 0;
}
2014-05-09 18:11



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




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

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