这是我写的代码。当我输入一个小写字符,如'a'时,它给我一个空白字符,但之后它运作良好。你能告诉我我做错了什么吗?谢谢。 :)
#include <iostream>
#include <string>
using namespace std;
int main()
{
char letter;
cout << "You will be asked to enter a character.";
cout << "\nIf it is a lowercase character, it will be converted to uppercase.";
cout << "\n\nEnter a character. Press . to stop: ";
cin >> letter;
if(islower(letter))
{
letter = isupper(letter);
cout << letter;
}
while(letter != '.')
{
cout << "\n\nEnter a character. Press . to stop: ";
cin >> letter;
if(islower(letter))
{
letter = toupper(letter);
cout << letter;
}
}
return 0;
}
答案 0 :(得分:6)
答案 1 :(得分:2)
看这里:
if(islower(letter))
{
letter = isupper(letter);
cout << letter;
}
如果字符较低,则为其指定返回值isupper
。那应该是0.所以你打印一个空字符。
为什么不为你输入的每个角色拨打toupper
?如果它低于它将转换它,如果它已经高,它不会做任何事情。
答案 2 :(得分:0)
如果您想拥有自己的算法:
ace-builds
答案 3 :(得分:0)
通常来说,要将小写字符转换为大写字符,您只需从小写字符中减去32,因为此数字是大写字符和小写字符之间的ASCII码差,例如'a'-'A'=97-67=32
。
char c = 'b';
c -= 32; // c is now 'B'
printf("c=%c\n", c);
另一种简单的方法是先将小写字符映射到英文字母0-25
范围内的偏移量,即'a'为索引'0','z'为索引'25',然后重新映射变成大写字母。
char c = 'b';
c = c - 'a' + 'A'; // c is now 'B'
printf("c=%c\n", c);
答案 4 :(得分:0)
#include <iostream>
using namespace std;
main()
{
string name ;
cout<<"Lower Case: ";
cin>>name;
int size_of_string = name.size(); // to detrmine the looping times
cout<<"Upper case: ";
for(int i = 0 ,n = size_of_string ; i < n ; i++)
{
//check if the str[i] is lowercase
if(name[i] >= 'a' && name[i]<='z' )
{
//convert the Lowercase to uppercase via ASCI Chart
char a = name[i] - 32 ;
cout<<a;
}
//the user input was upperCase
else
cout<<name[i];
}
cout<<"\n Good Bye!"<<endl;
return 0;
}
答案 5 :(得分:-1)
在letter = isupper(letter);
中,检查变量letter
是否大写,要将其转换为大写必须使用函数toupper()
letter = toupper(letter);