Problem Description
我们经常用一串短的字母代替一些长的单词。如ACM是Association for Computing Machinery的缩写。现在你用取首字母的办法得到一串单词的缩写。取首字母的办法是指把每个单词的首字母取出来用大写字母表示,然后把这些大写字母拼起来。但是也有些情况是例外的:一些情况在产生缩写是会被忽略,这些特殊情况见下面的规则:
1.常用的单词:and,for,the.
2.单词长度少于3的单词,如:a,of,to.
你现在的任务就是把给你的字符串用取首字母的办法得到它们的缩写。
Input
第一行是一个正整数T,表示测试用例数。每组测试用例包含一个长度小于100的字符串。这些单词只包含字母表中的字母。单词之间有一个空格。每行字符串的首尾没有空格。
Output
输出每组测试用例字符串的缩写。
Sample Input
5 Association for Computing Machinery Institute of Electrical and Electronics Engineers SUN YAT SEN UNIVERSITY The Lord of the Rings netease
Sample Output
ACM IEEE SYSU LR N
#include<stdio.h> #include <string.h> int main() { int t,i,j,len,k; char a[200],c[200]; scanf("%d",&t); getchar(); while(t--) { gets(a); len=strlen(a); i=0; k=0; while(i<len) { j=0; while(a[i]==' ') i++; while(a[i]!=' '&&a[i]) { c[j]=a[i]; i++; j++; } c[j]='\0'; k=strlen(c); strupr(c); // 转换大写字符串 ,需要VC编译器提交 头文件 string.h if(!(k<3||strcasecmp("AND",c)==0||strcmp("FOR",c)==0||strcmp("THE",c)==0)) { putchar(c[0]); } /* c[j]='\0'; k=strlen(c); //strcasecmp 不分大小写比较 头文件 string.h if(!(k<3||strcasecmp("AND",c)==0||strcasecmp("FOR",c)==0||strcasecmp("THE",c)==0)) { putchar(toupper(c[0])); } */ } printf("\n"); } return 0; }
时间: 2024-10-06 00:22:24