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]!=' ';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 }
- 【go语言】Goroutines 并发模式(二)
- 从零开始搭建Nginx和Tomcat的web集群环境
- 【翻译】为什么 goroutine 的栈内存无穷大?
- 从PowerVM,KVM到Docker:存储池的配置与调优---第一篇终结(第3子篇)
- goroutine背后的系统知识
- 从PowerVM,KVM到Docker:存储池的配置与调优---第一篇(第2子篇)
- 2017最后一天的学习-TensorFlow
- 从PowerVM,KVM到Docker:存储池的配置与调优---第一篇(第1子篇)
- 36小时,造一个亚马逊无人商店 | 实战教程+代码
- 使用Echarts来实现数据可视化
- 手把手教你用TensorFlow实现看图说话 | 教程+代码
- 自动化平台开发的几点总结
- epoll入门
- 使用Go开发一个简单的服务器程序
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python-leetcode977-双指针】有序数组的平方
- springboot分布式之springcloud-Eureka注册中心
- c++之类模板成员函数创建时机
- vuejs之v-on小例子之实现购买数量的增加和减少
- c++之类模板对象作函数参数
- vuejs之v-for
- c++类模板与继承
- c++之类模板成员函数的类外实现
- c++之类模板分文件编写
- c++之类模板和友元
- c++之类模板案例
- 【ICLR2020】Transformer Complex-order:一种新的位置编码方式
- 多角度理解CNN
- 【NLP保姆级教程】手把手带你CNN文本分类(附代码)
- 【NLP保姆级教程】手把手带你RNN文本分类(附代码)