为什么出现运行错误:段错误?(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;
}