这个C++程序哪错了?

来源:百度知道 编辑:UC知道 时间:2024/05/29 02:06:12
#include<iostream>
using namespace std;
char toBig (char c);
int main()
{
char arraychar[51];
cout<<"Please int put the chars:(<=50)"<<endl;
cin>>arraychar;

for(int i=0;i<49;i++)
{
cout<<toBig(arraychar[i]);
}

}
char toBig(char c)
{
if(c>='a'&& c<='z')
return c+'A'-'a';
return c;
}
输入字符后的确能变大写但会多出现很多乱码汉字

你应该要知道输入字符串的长度,所以要用strlen().
#include<iostream>
#include <string.h>
using namespace std;
char toBig (char c);
int main()
{
char arraychar[51];
cout<<"Please int put the chars:(<=50)"<<endl;
cin>>arraychar;

for(int i=0;i<strlen(arraychar);i++)
{
cout<<toBig(arraychar[i]);
}
cout<<endl;

return 0;
}
char toBig(char c)
{
if(c>='a'&& c<='z')
return c+'A'-'a';
return c;
}

for(int i=0;i<49;i++)
{
cout<<toBig(arraychar[i]);
}
----for循环这里循环了49次,而你输入的字符串可能没有49个,所以后面的会出现乱码,应该用先获得输入字符串的长度int len=strlen(arraychar);(使用strlen函数,得先#include <string.h>)

另外转换为大写建议用toUpper~~~,main函数建议最后加上return 0;(ANSI C++标准哦)

for(int i=0;i<strlen(arraychar);i++) //只处理实际的字符,不处理'\0'
{
cout<<toB