首字母变大写
Problem Description
输入一个英文句子,将每个单词的第一个字母改成大写字母。
Input
输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。
Output
请输出按照要求改写后的英文句子。
Sample Input
i like acm
i want to get an accepted
Sample Output
I Like Acm
I Want To Get An Accepted
Author
lcy
Source
C语言程序设计练习(四)
解题思路
大概考察的是对于空格的判断,以及小写字符转大写。
通过对ASCII码的查询可知,大小写字符间的差距与空格一样,都是32。
记得使用getchar()吃掉回车,不然会自动跳出循环。
AC
#include<iostream>
#include<string>
using namespace std;
int main()
{
char s[105];
int point;
while (cin.get(s, 105)) {
point = 1;
s[0] -= 32;
while (s[point] != '\0') {
if (s[point] == 32) {
point++;
s[point] -= 32;
}
else {
point++;
}
}
cout << s << endl;
memset(s, 0, sizeof(s));
getchar();
}
return 0;
}
2024.03.12
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
char sentence[105];
int gap = 'a' - 'A';
int pointer;
while (cin.getline(sentence, 105)) {
pointer = 0;
if (sentence[0] >= 'a' && sentence[0] <= 'z')
sentence[0] -= gap;
while (sentence[pointer] != '\0') {
if (sentence[pointer] == ' ')
sentence[++pointer] -= gap;
else
pointer++;
}
for (int i = 0; i < strlen(sentence); i++) {
printf("%c", sentence[i]);
}
printf("\n");
memset(sentence, 0, sizeof(sentence));
}
return 0;
}