| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1890 人关注过本帖
标题:为什么出现运行错误:段错误?(ACM)
只看楼主 加入收藏
赤云
Rank: 2
等 级:论坛游民
帖 子:82
专家分:35
注 册:2014-12-29
结帖率:64.71%
收藏
已结贴  问题点数:20 回复次数:3 
为什么出现运行错误:段错误?(ACM)
题目描述
小C很喜欢倒着写单词,现在给你一行小C写的文本,你能把每个单词都反转并输出它们吗?
输入
输入包含多组测试样例。第一行为一个整数T,代表测试样例的数量,后面跟着T个测试样例。
每个测试样例占一行,包含多个单词。一行最多有1000个字符。
输出
对于每一个测试样例,你应该输出转换后的文本。
样例输入
3
olleh !dlrow
I ekil .bulcmca
I evol .mca
样例输出
hello world!
I like acmclub.
I love acm.

问题代码:
#include"stdio.h"
void set(){
    char a[1000];
    char t0,t;
    int i,j;
    int n=0;//记录单词的个数
    //输入一个单词,倒序并输出
    do{
        i=0;
        scanf("%c",&t);//输入每个单词
        while(t!=' '&&t!='\n'){
            a[i++]=t;
            scanf("%c",&t);
            if(t==' ')
                n++;
        }//i的值即为a中所存字符串的长度
        //printf("m=%d",m);
        for(j=0;j<i/2;j++){//吧每个单词倒叙
            t0=a[j];
            a[j]=a[i-j-1];
            a[i-j-1]=t0;
        }
        for(j=0;j<i;j++){
            printf("%c",a[j]);
        }
        if(t!='\n')
            printf(" ");
        if(t=='\n')
            printf("\n");
    }while(n--);
}
int main(){
    int T;
    scanf("%d",&T);
    getchar();
    while(T--)
    {
        set();
    }
    return 0;
}
搜索更多相关主题的帖子: hello include 单词 world 
2015-07-21 10:08
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:10 
for(j=0;j<i/2;j++){//吧每个单词倒叙
            t0=a[j];
            a[j]=a[i-j-1];
            a[i-j-1]=t0;
        }
这段数组下标在第二个单词就说不通了

剑栈风樯各苦辛,别时冰雪到时春
2015-07-21 10:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
代码怎么会这么长?
另外,起先char a[1000];就错了吧,应该是char a[1000+1];
2015-07-21 12:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>

void foo( char s[] )
{
    for( int i=0,a,b; b=0,sscanf(s+i," %n%*s%n",&a,&b),b!=0; i+=b )
    {
        for( int c=a+i,d=b+i-1; c<d; ++c,--d )
        {
            char temp = s[c];
            s[c] = s[d];
            s[d] = temp;
        }
    }
}

int main(void)
{
    char line[1001];
    for( int T=atoi(fgets(line,1001,stdin)); T>0; --T )
    {
        fgets( line, 1001, stdin );
        foo( line );
        fputs( line, stdout );
    }

    return 0;
}
2015-07-21 13:34
快速回复:为什么出现运行错误:段错误?(ACM)
数据加载中...
 
   



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

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