一道C++题的疑问:??
//设计函数,将小写英文字符变为对应的大写字符。#include<iostream>usingnamespacestd;charcapitalize(charch){if...
//设计函数,将小写英文字符变为对应的大写字符。
#include<iostream>
using namespace std;
char capitalize(char ch)
{
if (ch>='a'&& ch<='z')
return ch-32;
else return ch;
}
int main()
{
int i;
char cha[30];
cout<<"请输入一个英文句子"<<endl;
cin.getline(cha,30);
for(i=0;i<30;i++)
{
if(cha[i]!='\0');
cout<<capitalize(cha[i]);
}
cout<<endl;
return 0;
}
为什么输入一些单词,输出后会有好几个中文“烫烫烫”输出呢?
望高手解答。。。。。。。。。。
为了不输出乱码,要怎么更改呢?望高手解答(用for循环,不用while) 展开
#include<iostream>
using namespace std;
char capitalize(char ch)
{
if (ch>='a'&& ch<='z')
return ch-32;
else return ch;
}
int main()
{
int i;
char cha[30];
cout<<"请输入一个英文句子"<<endl;
cin.getline(cha,30);
for(i=0;i<30;i++)
{
if(cha[i]!='\0');
cout<<capitalize(cha[i]);
}
cout<<endl;
return 0;
}
为什么输入一些单词,输出后会有好几个中文“烫烫烫”输出呢?
望高手解答。。。。。。。。。。
为了不输出乱码,要怎么更改呢?望高手解答(用for循环,不用while) 展开
展开全部
#include<iostream>
using namespace std;
char capitalize(char ch)
{
if (ch>='a'&& ch<='z')
return ch-32;
else return ch;
}
int main()
{
int i;
char cha[30];
cout<<"请输入一个英文尘纳句子"<<endl;
cin.getline(cha,30);
for (i=0;i<30;i++) {
if (cha[i]=='\0')//当字谈升符串结束的时候跳出循环派侍没
break;
cout<<capitalize(cha[i]);
}
cout<<endl;
return 0;
}
using namespace std;
char capitalize(char ch)
{
if (ch>='a'&& ch<='z')
return ch-32;
else return ch;
}
int main()
{
int i;
char cha[30];
cout<<"请输入一个英文尘纳句子"<<endl;
cin.getline(cha,30);
for (i=0;i<30;i++) {
if (cha[i]=='\0')//当字谈升符串结束的时候跳出循环派侍没
break;
cout<<capitalize(cha[i]);
}
cout<<endl;
return 0;
}
展开全部
楼上的改后还是有乱码
原因在这里
char cha[30];
你声明了30个char的数组,
但是如果你在输入的时候,没有输入那么多字母,比如只输入abc,cha数组后慎培燃宽虚面的元素就会存放其他数据(未定义).所以最后会造成输出出中则现乱码.
如果你只输入29个字母,你会发现你的程序其实是对的.完成了小写转化为大写的功能.
原因在这里
char cha[30];
你声明了30个char的数组,
但是如果你在输入的时候,没有输入那么多字母,比如只输入abc,cha数组后慎培燃宽虚面的元素就会存放其他数据(未定义).所以最后会造成输出出中则现乱码.
如果你只输入29个字母,你会发现你的程序其实是对的.完成了小写转化为大写的功能.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是因为你定义的答乱伏cha[30]后都有值呢!
使用memset(cha,0,30)之后,后边儿就都致成空的清携了。
一般建立数组的时候,如陪和果需要置空,用这个函数的效率比较高。
使用memset(cha,0,30)之后,后边儿就都致成空的清携了。
一般建立数组的时候,如陪和果需要置空,用这个函数的效率比较高。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(i=0;i<30;i++)
{
if(cha[i]!='\0'); //这里多了个分号源粗,并雹丛镇且到了0之后你没有break
cout<<capitalize(cha[i]);
}
改成这样:
if (cha[i] == 0)
break;
else
cout<郑脊<capitalize(cha[i]);
{
if(cha[i]!='\0'); //这里多了个分号源粗,并雹丛镇且到了0之后你没有break
cout<<capitalize(cha[i]);
}
改成这样:
if (cha[i] == 0)
break;
else
cout<郑脊<capitalize(cha[i]);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询