大家好我对这段代码有疑问我正在练习cstrings。我制作了一个程序,将用户输入的句子的第一个字母大写。我假设用户在放置一段时间后会放一个空格,所以如果用户输入“im from。seattle”,输出将是“Im from。Seattle”。但是如果用户在句点之后没有放置空格,那么第二个字母将被大写,而不是第一个像“Im from.sEattle”那样的字母。如何将第一个字母大写,而不管间距是多少?
#include <iostream>
#include <cctype> //strlen, touper
#include <cstring>
using namespace std;
void funct(){
int length = 50;
char input[length];
cout << "Sentence Capitalization Machine Mk.1.\n";
cout << "Type a sentence for me to capitalize." << endl;
cin.getline(input, length);
cout << endl;
input[0] = toupper(input[0]);
int i=0;
while (i < strlen(input)){
i++;
if (input[i] == '.'){
input[ i + 2 ] = toupper(input[ i + 2 ]);
}
};
cout << input << endl;
}
int main(){
funct();
return 0;
}
答案 0 :(得分:0)
试试这个
#include <iostream>
#include <cctype> //strlen, touper
#include <cstring>
using namespace std;
void funct(){
int length = 50;
char input[length];
cout << "Sentence Capitalization Machine Mk.1.\n";
cout << "Type a sentence for me to capitalize." << endl;
cin.getline(input, length);
cout << endl;
input[0] = toupper(input[0]);
int i=0;
while (i++ < strlen(input)){
if (input[i] == '.' && input[i+1] == ' ' && i+2<strlen(input)){
input[ i + 2 ] = toupper(input[ i + 2 ]);
}else if(input[i] == '.' && i+1<strlen(input)){
input[ i + 1 ] = toupper(input[ i + 1 ]);
}
};
cout << input << endl;
}
int main(){
funct();
return 0;
}