(在线等)用C++实现大小写转化,改程序,谢谢

#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
int i=0;
char c;
while(cin>>c)
{
if(c>='A' && c<= 'Z')
{
str[i]=c+32;
i++;
}
else if (c>='a'&&c<='z')
{
str[i]=c-32;
i++;
}
else
{
str[i]=c;
i++;
}
}

}
cout<<str<<endl;
return 0;
}
希望改一下就好,最好不要自己写,因为这是整个程序的一小部分,谢谢啦

#include<iostream>

#include<string>

using namespace std;

int main()

{

string str = "";

char c;

while(1)

{

cin>>c;

if(c == '#'){ //如果输入#,结束循环。因为cin>>c 并不是输入一个,执行一次循环,电脑会先把键盘的输入信息放在 一个缓存里面,缓存满了,或者按回车了才一次性执行循环。

break;

}

if(c>='A' && c<= 'Z')

{

str +=c+32;

}

else if (c>='a'&&c<='z')

{

str +=c-32; 

}

else 

{

str +=c;

}

}



cout<<str<<endl;

return 0;

}



错误分析:

你的程序出的错有一下两个

    访问空地址

    你在程序里面用了str[i]。然而str变量在初始分配的时候里面什么都没有,即是一个长度为0的字符串,或者说是一个长度为0的数组,光有一个头指针,没有分配变量。所以你用str[i]访问的是一个非法内存地址NULL。

        

        发现方法:你遇到这种一执行就出现“终止”对话框的程序 就点调试。调试的时候会出现错误对话框的。这个问题的错误对话框里面就有一段类似于“0x000005”的16进制数。这就是NULL的地址。而且调试的黄色箭头直接指向str[i]。这就告诉你str[i]指向的是一个NULL 非法地址,是不能赋值的

2. cin>>c

我知道你的意思是想一直输入,知道检测到\0  但是你在实际运行的时候是不会真正输入\0的。\0是字符串里面的结束标志,是不能通过键盘输入进去的。键盘直接输入的“空格”其实是ASCII码32

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-27
for(;a[i];i++)
{
if(a[i]>'a'&&a[i]<'z')
a[i]-=32;
else if(a[i]>'A'&&a[i]<'Z')
a[i]+=32;
}追问

改一下~不需要重新写,后边还有一堆程序

追答

你把两个if语句删掉,把for语句直接放在while外面不就行了,

追问

……

追答

不是很好懂么。。、for就是遍历语句啊。
你肯定是if里面条件出错了啊

(在线等)用C++实现大小写转化,改程序,谢谢
你在程序里面用了str[i]。然而str变量在初始分配的时候里面什么都没有,即是一个长度为0的字符串,或者说是一个长度为0的数组,光有一个头指针,没有分配变量。所以你用str[i]访问的是一个非法内存地址NULL。发现方法:你遇到这种一执行就出现“终止”对话框的程序 就点调试。调试的时候会出现错误...

用C++编写一个转换字符串中大小写字母的程序
C语言实现如下:#include<stdio.h>#include<stdlib.h>void main(){char c;scanf("%c",&c); \/\/输入一个字母。if ((c>='A')&&(c<='Z')) c+=32;\/\/判断是否为大写字母,是则转换为小写字母。else if((c>='a')&&(c<='z')) c-=32;\/\/否则判断是否为小写字母,是则转换为大写...

C++怎么把字符串中的大写变为小写啊,麻烦写个简单的程序,谢谢
字母大小写转换函数的声明包含在string.h头文件中,函数的原型如下:char*strupr(char *string)功能:将字符串string中的小写字母转换为大写,并返回指向string的指针。char*strlwr(char *string)功能:将字符串string中的大写字母转换为小写,并返回指向string的指针。程序举例:#include<iostream.h>include<s...

c++大小写字母转换代码
1、打开软件VisualC++6.0,新建一个C源程序,书写C语言程序。具体方法如下图所示:2、首先定义两个字符型变量,代码:charc1,c2;从键盘中输入一个大写字母,代码:c1=getchar();3、大写字母与小写字母的ASCII值相差32,代码:c2=c1+32;。将大写字母转化成小写字母。4、连接编译程序。点击工具栏按...

c++ 字母大小写转换代码,在一个字符串里大写转为小写,小写转为...
include<stdio.h> int main(){ int I=2;\/\/赋值使I不为零 while(I)\/\/当括号内表达式不为零时实现后面的循环 { charb;scanf("%c",&b);if(b>='A'&&b<='Z'){ b=b+32;printf("%c",b);} elseif(b>='a'&&b<='z'){ b=b-32;printf("%c",b);} } return0;} ...

用C++编写一个大小写转换小程序
int main(){ string s;char *p;int d=0,x=0; \/\/存放大写与小写的变量 cin>>s;for(p=s.begin();p!=s.end();p++){ if(*p>='A'&&*p<='Z'){ *p=*p+32;x+=1 if(*p>='a'&&*p<='z') *p=*p-32;d+=1 } cout<<s<<endl;cout<<"共"<<d<<"个大写字母"<<x<<"个...

c++语言解决字母大小写转换的程序?
include<stdio.h> include<stdlib.h> include<string.h> defineN100 int main(){ chara[N];inti;scanf("%s",a);for(i=0;a[i]!='\\0';i++){ if('A'<=a[i]&&a[i]<='Z')printf("%c",a[i]-32);else printf("%c",a[i]);} return0;} ...

用c++编程,用switch编小写输入大写输入的程序。还有输入一段长的字符...
第一个程序,小写转换成大写:完整的代码:include <iostream>using namespace std;int main(){ char str[100]; cin.getline(str,100); int i=0; while(str[i]!='\\0') { if((str[i] >= 'a')&&(str[i] <= 'z')) \/\/判断是否是小写 cout<<char(str[i]+'A'-'...

怎样用C++写出 输入一个大写字母。输出时变成小写
单个大写字母输出小写的实现过程如下:1、设计思路:在C语言中,每一个常用字符都有一个对应的ASCII值,大写字母A~Z对应的ASCII为65~90,小写字母a~z对应的ASCII值为97~122。大写字母与小写字母的ASCII值相差32,故可以通过这一点实现大写字母与小写字母的转换。2、实现代码如下:3、测试结果:...

怎么实现C++中大小写字母的转换
简单:如果是小写变大写的话就在后面就加个“A”-“a”;例如:M=m+“A”-“a”;同理m=M-(“A”-“a”);大概思想就是这样啦!

相似回答