| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2474 人关注过本帖
标题:[求助]小写字母变成大写字母,运行后有问题
只看楼主 加入收藏
荏绮鲥攻
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-10-12
收藏
 问题点数:0 回复次数:12 
[求助]小写字母变成大写字母,运行后有问题

小写字母变成大写字母,第一次输入的没问题,但是没有像一般的程序那样结束,而是继续运行,再次输入后第一个字符不是大写,类似于乱码。。。
请问,为什么?

#include<iostream>
using namespace std;
int main()
{
char c;
do
{
c=getchar();
c=c-32;
cout<<c;
}while(c!='\n');
return 0;
}

搜索更多相关主题的帖子: 字母 小写 运行 
2007-10-29 13:57
zj51991
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-24
收藏
得分:0 

#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之间


[qq]252986030[/qq]
2007-10-29 15:29
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
#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;
}

[此贴子已经被作者于2007-10-29 16:19:13编辑过]


天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2007-10-29 16:18
魔城侠客
Rank: 1
等 级:新手上路
帖 子:200
专家分:0
注 册:2006-4-4
收藏
得分:0 
#include<iostream>
using namespace std;
int main()
{
char c;
do
{
c=getchar();
c=c-32;
cout<<c;
c=getchar(); 接收上面的回车
}while(c!='\n');
return 0;
}

West and east,home is best……
2007-10-29 17:24
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 

#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
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge)论坛:[/url] http://yzfy.org/
Blog: http://yzfy.programfan.com

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url] [url=http://blog.programfan.com/article.asp?id=24801]请不要写出非int声明的main函数[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=181314]C++编写的Windows界面游戏[/url]

2007-10-29 17:33
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
大小写之间的差值是32.所以用小写减32得到大写.

倚天照海花无数,流水高山心自知。
2007-10-29 20:04
csmenglei951
Rank: 1
等 级:新手上路
威 望:1
帖 子:77
专家分:0
注 册:2007-9-30
收藏
得分:0 
你这只有一个特例,就是输入"*"时,C减32会得到'/n',这样才能跳出do while循环.否则不会正常结束
2007-10-29 20:32
荏绮鲥攻
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-10-12
收藏
得分:0 
回复:(csmenglei951)你这只有一个特例,就是输入
谢谢~~~
我明白了。。。因为c=c-32的时候,原来'/n'已经变为,'/n'-32...
我把while里的改成 while(c!=('\n'-32));
就可以了只运行一次了。。
不过,缺陷就是'/n'-32也在运行的时候被显示了。。


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

[此贴子已经被作者于2007-10-29 22:32:25编辑过]


2007-10-29 22:26
荏绮鲥攻
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-10-12
收藏
得分:0 
回复:(雨中飞燕)#includeusing na...

刚才调试了一下,觉得这个代码的代码很好~~~~谢谢。。。

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

我明白了问题的所在!

[此贴子已经被作者于2007-10-29 22:37:03编辑过]


2007-10-29 22:28
TLZL
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-10-18
收藏
得分:0 
#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;
}

2007-10-29 22:41
快速回复:[求助]小写字母变成大写字母,运行后有问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025320 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved