找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1820|回复: 9

[求助]小写字母变成大写字母,运行后有问题

[复制链接]
发表于 2009-11-3 02:25:47 | 显示全部楼层 |阅读模式 IP:江苏扬州
小写字母变成大写字母,第一次输入的没问题,但是没有像一般的程序那样结束,而是继续运行,再次输入后第一个字符不是大写,类似于乱码。。。
请问,为什么?
#include<iostream>
using namespace std;
int main()
{
char c;
do
{
c=getchar();
c=c-32;
cout<<c;
}while(c!='\n');
return 0;
}
发表于 2009-11-3 02:25:52 | 显示全部楼层 IP:江苏扬州
#include<iostream>
using namespace std;
int main()
{
char c;
do
{
c=getchar();
c=c-32;
cout<<c<<'\n';
}while(c!='\n');
return 0;
}
最好前面加个判断是否a-c之间
回复

使用道具 举报

发表于 2009-11-3 02:25:54 | 显示全部楼层 IP:江苏扬州
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
string s;
char c;
getline(cin,s);
for(string::size_type index=0;index!=s.size();index++)
{
c=toupper(s[index]);
cout<<c;
}
cout<<endl;
system("pause");
return 0;
}
回复

使用道具 举报

发表于 2009-11-3 02:25:56 | 显示全部楼层 IP:江苏扬州
#include<iostream>
using namespace std;
int main()
{
char c;
do
{
c=getchar();
c=c-32;
cout<<c;
c=getchar(); 接收上面的回车
}while(c!='\n');
return 0;
}
回复

使用道具 举报

发表于 2009-11-3 02:25:58 | 显示全部楼层 IP:江苏扬州
#include<iostream>
using namespace std;
int main(void)
{
char c;
do
{
if((c=getchar())>='a' && c<='z')
{
c-=32;cout<<c;
}
}while(c!='\n');
getchar();
return 0;
}

by 雨中飞燕 C/C++学习讨论群:46520219
C/C++算法习题(OnlineJudge)论坛: http://yzfy.org/
Blog: http://yzfy.programfan.com

请大家不要用TC来学习C语言,点击此处查看原因 请不要写出非int声明的main函数
C++编写的Windows界面游戏
回复

使用道具 举报

发表于 2009-11-3 02:26:01 | 显示全部楼层 IP:江苏扬州
大小写之间的差值是32.所以用小写减32得到大写.
回复

使用道具 举报

发表于 2009-11-3 02:26:04 | 显示全部楼层 IP:江苏扬州
你这只有一个特例,就是输入"*"时,C减32会得到'/n',这样才能跳出do while循环.否则不会正常结束
回复

使用道具 举报

发表于 2009-11-3 02:26:08 | 显示全部楼层 IP:江苏扬州
谢谢~~~
我明白了。。。因为c=c-32的时候,原来'/n'已经变为,'/n'-32...
我把while里的改成 while(c!=('\n'-32));
就可以了只运行一次了。。
不过,缺陷就是'/n'-32也在运行的时候被显示了。。


回复:(魔城侠客)#include<iostream>using na...
编译的时候有问题。。不过,我没看出来为什么。。。继续研究一下
回复

使用道具 举报

发表于 2009-11-3 02:26:13 | 显示全部楼层 IP:江苏扬州
刚才调试了一下,觉得这个代码的代码很好~~~~谢谢。。。

随心的代码,我也试了一下...不过,我刚开始学C++,不明白你写的代码的~~~~~~原谅我现在的水平吧
另外,还是要谢谢楼上的各位~~~~

我明白了问题的所在!
回复

使用道具 举报

发表于 2009-11-3 02:26:16 | 显示全部楼层 IP:江苏扬州
#include<iostream>
using namespace std;//算法没有错,就是要控制回车,
int main()
{
char c;
do
{
c=getchar();//输入要转换的字符
getchar();//获取输入的回车
c=c-32;   
cout<<c;
getchar();//当输出大写字母以后,在输入回车,就可以输入下一个要转换的字符了
}while(c!='\n');
system("pause");
return 0;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 09:31 , Processed in 0.105829 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表