求各位大牛帮忙!!!杭电2564题,很水的一道题,为什么WA?

词组缩写TimeLimit:2000/1000MS(Java/Others)MemoryLimit:32768/32768K(Java/Others)TotalSubmi... 词组缩写
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3722 Accepted Submission(s): 1210

Problem Description
定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写。
比如,C语言里常用的EOF就是end of file的缩写。

Input
输入的第一行是一个整数T,表示一共有T组测试数据;
接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成;
单词长度不超过10,由一个或多个空格分隔这些单词。

Output
请为每组测试数据输出规定的缩写,每组输出占一行。

Sample Input
1
end of file

Sample Output
EOF

Author
lemon

代码是
#include<stdio.h>
#include<string.h>
main()
{
int ri,repeat,i,n,m;
char a[200];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)

{ m=0;
if(ri==1)
getchar();
gets(a);
n=strlen(a);
if(a[0]>='A'&&a[0]<='Z')
printf("%c",a[0]);
else if(a[0]>='a'&&a[0]<='z')
printf("%c",a[0]-32);
for(i=1;i<n;i++)
{
if(a[i]==' '&&a[i+1]!=' ')
if(a[i+1]>='A'&&a[i+1]<='Z')
printf("%c",a[i+1]);
else
{ printf("%c",a[i+1]-32);
m++;
if(m>=9)
break;

}
}
printf("\n");
}

}
展开
 我来答
百度网友b0e28cae4
推荐于2016-03-16 · TA获得超过4016个赞
知道大有可为答主
回答量:1275
采纳率:85%
帮助的人:614万
展开全部
1)第一个字母可能也是空格。
2) if(a[i]==' '&&a[i+1]!=' ')
if(a[i+1]>='A'&&a[i+1]<='Z')
printf("%c",a[i+1]);
else
printf("%c",a[i+1]-32);
a[i+1] 有可能是等于 ‘\0’ ,比如字符串"a b ",i=3时,a[i]=' ',a[i+1]='\0',会执行 printf(“%c”,a[i+1]-32)

参考程序:
#include <stdio.h>
int main(int argc, char *argv[])
{
char str[2000];
int T;
scanf("%d",&T);
getchar();
int i,isStart;
while(T--)
{
gets(str);
for(i=0,isStart=1;str[i]!='\0';i++)
{
if(str[i] == ' ')
{
isStart = 1;
continue;
}
else
{
if(isStart)
{
if(str[i]>='A'&&str[i]<='Z')
{
printf("%c",str[i]);
}
else
{
printf("%c",str[i]-('a'-'A'));
}
isStart = 0;
}
}
}
printf("\n");
}
return 0;
}
只会做土豆配西红柿
2011-09-22 · 超过28用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:42.3万
展开全部
#include<stdio.h>
#include<string.h>
void main()
{
int ri,repeat,i,n;
char a[200];
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
// m=0;
if(ri==1)
getchar();
gets(a);
n=strlen(a);
if(a[0]>='A'&&a[0]<='Z')
printf("%c",a[0]);
else if(a[0]>='a'&&a[0]<='z')
printf("%c",a[0]-32);
for(i=1;i<n;i++)
{
// if(a[i]==' '&&a[i+1]!=' ')
if(a[i-1]==' '&& a[i]!=' ')
// if(a[i+1]>='A'&&a[i+1]<='Z')
if(a[i]>='A'&&a[i]<='Z')
printf("%c",a[i]);
else
{
printf("%c",a[i]-32);
// m++;
// if(m>=9)
// break;

}
}
printf("\n");
}
}
可能有多个空格,这样改就可以过啦Accepted 2564 0MS 220K 771 B C++
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式