HDU 2564 词组缩写

词组缩写

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 14487    Accepted Submission(s): 4705

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

Source

绍兴托普信息技术职业技术学院——第二届电脑文化节程序设计竞赛

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2564

分析:这道题有点小坑啊!忘记吸掉空格,WA了一次!还要注意输出换行!

以下给出AC代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int T;
 6     char s[200];
 7     while(cin>>T)
 8     {
 9         getchar();//要注意吸掉空格,本人就是这个地方卡了好久,没看出来!
10         while(T--)
11         {
12             gets(s);
13             int len=strlen(s);
14             if(s[0]>=‘a‘&&s[0]<=‘z‘)
15             printf("%c",s[0]-32);
16             else if(s[0]>=‘A‘&&s[0]<=‘Z‘) printf("%c",s[0]);
17             for(int i=1;s[i]!=‘\0‘;i++)
18                 {
19                     if(s[i]==‘ ‘&&(s[i+1]>=‘a‘&&s[i+1]<=‘z‘))
20                 printf("%c",s[i+1]-32);
21                 else if(s[i]==‘ ‘&&(s[i+1]>=‘A‘&&s[i+1]<=‘Z‘))
22                     printf("%c",s[i+1]);
23                 }
24                 printf("\n");
25         }
26     }
27     return 0;
28 }

此题出现了一种新的东西,小写字母变大写字母,有一个函数可以很方便的做这道题--strupr()函数!

strupr,函数的一种,将字符串s转换为大写形式。

说明:只转换s中出现的小写字母,不改变其它字符。返回指向s的指针

兼容性说明:strupr不是标准C库函数,只能在VC中使用。在linux gcc环境下需要自行定义这个函数。

举例:

 1 // strupr.c
 2 #include <stdio.h>
 3 #include <string.h>
 4 int main()
 5 {
 6 char s[]="Copywrite 1999-2000 GGV Technologies";
 7 char* s2=strupr(s);//把s数组中的字符串转换成大写并且返回s用来初始化s2
 8 printf("%s",s2);
 9 printf("%s",s); //这个时候s和s2是相等的,指向同一个字符串。
10 // 注意:不能使用以下方式调用
11 // char* p="for test";
12 // strupr(p);
13 // 这样调用会产生异常,原因是:指针p 这里定义的是常量字串,而常量字串我们知道是不可以更改的
14 getchar();
15 return 0;
16 }

下面给出另外一种解法:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 char a[120],b[120];
 5 int main()
 6 {
 7     int T;
 8     int i;
 9     int len=0;
10     int k;
11     scanf("%d",&T);
12     getchar();
13     while(T--)
14     {
15         gets(a);
16         len=strlen(a);
17         strupr(a);
18         k=0;
19         for(i=0;i<len;i++)
20         {
21             if(i==0)
22             {
23                 if(a[i]==‘ ‘ && a[i+1]!=‘ ‘)
24                      b[k++]=a[i+1];
25                 else if(a[i]!=‘ ‘)
26                     b[k++]=a[i];
27             }
28             else
29             {
30                 if(a[i]==‘ ‘ && a[i+1])
31                     b[k++]=a[i+1];
32             }
33         }
34         for(i=0;i<k;i++)
35         {
36             if(b[i]!=‘ ‘)
37                 printf("%c",b[i]);
38         }
39         printf("\n");
40     }
41     return 0;
42 }
时间: 2024-10-10 16:48:13

HDU 2564 词组缩写的相关文章

HDOJ/HDU 2564 词组缩写(单词缩写)

Problem Description 定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写. 比如,C语言里常用的EOF就是end of file的缩写. Input 输入的第一行是一个整数T,表示一共有T组测试数据: 接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成:每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成: 单词长度不超过10,由一个或多个空格分隔这些单词. Output 请为每组测试数据输出规定的缩写,每组输出占一行. Sam

词组缩写

Problem Description 定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写.比如,C语言里常用的EOF就是end of file的缩写. Input 输入的第一行是一个整数T,表示一共有T组测试数据:接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成:每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成:单词长度不超过10,由一个或多个空格分隔这些单词. Output 请为每组测试数据输出规定的缩写,每组输出占一行. Sample

词组缩写(isalpha()的应用)

Problem Description 定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写.比如,C语言里常用的EOF就是end of file的缩写. Input 输入的第一行是一个整数T,表示一共有T组测试数据:接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成:每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成:单词长度不超过10,由一个或多个空格分隔这些单词. Output 请为每组测试数据输出规定的缩写,每组输出占一行. Sample

stringstream对象的使用

今天做了一道字符串转化大小写的题,做完之后突然想看一下别人是怎么写的,于是就发现了标题所述的一种用C++流的一种方法:感觉很方便,但是自己虽然学完C++这门课,竟然一(wu)点(li)也(to)不(cao)知(!)道,实在惭愧!!,看了是有必要好好回头在复习研究一番! 以下翻译自:click here 1stringstream对象的使用 #include<sstream> #include<iostream> using namespace std; int main() { s

HDU分类

模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 12

hdu 4521 小明系列问题——小明序列 (间隔至少为d的LIS 两种解法)

先附上资源地址:http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 1. 计算机的核心是CPU,它承担了所有的计算任务.它就像一座工厂,时刻在运行. 2. 假定工厂的电力有限,一次只能供给一个车间使用.也就是说,一个车间开工的时候,其他车间都必须停工

转载:hdu 题目分类 (侵删)

转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116

HDU——PKU题目分类

HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201

2895: 【基础】小X与缩写

题目: 时间限制 : 1 Sec 内存限制 : 128 Mb 提交 : 91 解决 : 50 题目描述 小X注意到,生活中有很多用到首字母缩写的例子.例如UOJ就是通用在线评测(Universal Online Judge)的缩写. 我们定义一个英文词组的首字母缩写为:取出词组中每个单词的第一个字母.全部转化成大写并顺次连接. 于是小X想请你帮忙写一个程序,读入一行英文句子,将用括号括出的词组替换为首字母缩写再输出. 输入 输入一行仅包含英文字母.英文逗号','.英文句号'.'.左右括号'()'