注册 登录
编程论坛 C++教室

大小英文字母的互换怎样定义???我想知道为什么。。。

Love小小白 发布于 2012-12-20 00:04, 643 次点击
#include<iostream.h>
void main()
{
    static char c[]="CHINA";
    char *p=c;
    while (*p)
        cout<<(char)(*p+++32);
    cout<<endl;
}
额~我知道输出的答案是“china”,我想知道是怎样做到的,也就是“ cout<<(char)(*p+++32);”是怎样工作的。还有就是,如果我想输入“china”的时候输出“CHINA”又该怎样定义呢?希望各位可以“慷慨解囊”,感激不尽呐~~
15 回复
#2
qunxingw2012-12-20 08:16
要了解ASCII码英文小字母比对应的大写字母大32,利用指针对字符数组循环操作每个字符+32,直到'\0'止
#3
wp2319572012-12-20 08:34
先baidu基本了解一下ascii码  不用背诵下来  知道怎么回事就行
#4
mmmmmmmmmmmm2012-12-20 10:07
还有就是,如果我想输入“china”的时候输出“CHINA”又该怎样定义呢?

修改为 cout<<(char)(*p++-32);
#5
额外覆盖2012-12-20 11:37
就是ASCII值之间的转换
#6
Love小小白2012-12-20 12:27
回复 4楼 mmmmmmmmmmmm
额~我问一下哈,这是适用于所有的字母(单词),还是说字母不同时代码也不同啊?
#7
Love小小白2012-12-20 12:28
回复 3楼 wp231957
额~本人太笨,看不懂
#8
Love小小白2012-12-20 12:32
回复 2楼 qunxingw
额~很小白地问一句,为什么要用3个“+”,还有就是,直到“/0”是什么意思?
#9
wp2319572012-12-20 13:35
以下是引用Love小小白在2012-12-20 12:28:48的发言:

额~本人太笨,看不懂
每一个可见字符都对应一个码值    比如你输入字母a  电脑并不认识它   但是当电脑接收到一个1100001的值时
它会把它自动变成字符a
但是我们记忆二进制 也有困难,所以我们记字符a 或者 10进制码值97 或者16进制61

所以 学编程  进制转换  ascii  都是基本的 必须会的
#10
mmmmmmmmmmmm2012-12-20 13:51
回复 6楼 Love小小白
是的
#11
额外覆盖2012-12-20 14:15
回复 8楼 Love小小白
*p+++32相当于(*p++)+32;或者为
*p+32;p++;'\0'是空,字符数组的结束标志
#12
qunxingw2012-12-20 17:03
前2个+是P自加,后一个是加上32的数
#13
Love小小白2012-12-20 18:24
回复 9楼 wp231957
太谢谢你了~~唉,感觉自己好无知啊,,看来我学编程的路不好走。。。。
#14
Love小小白2012-12-20 18:29
回复 11楼 额外覆盖
谢谢你了~   =
#15
Love小小白2012-12-20 18:29
回复 12楼 qunxingw
谢谢你喽~~~
#16
Love小小白2012-12-20 18:35
回复 10楼 mmmmmmmmmmmm
谢谢了~
1