先来了解一下ASCLL码表:

这就是字符。
字符类型:
输入输出方法:
· 输入:cin>>a或scanf("%c",&a) 或者a=getchar();
· 输出:cout<<a;或printf("%c",a)或者putchar(a);



只能在赋初值这样写


字符数组





经典习题:
8843:A替换字母
输入两行内容,第1行是原文(长度不超过200个字符),第2行包含以空格
分隔的两个字符A和B,要求将原文中所有的字符A都替换成字符B,
注意:区分大小写字母
cin.getline(s,sizeof(s)); //输入原文
scanf(“%c %c”,&A, &B); // 输入A 和B
for(int i=0; s[i]!='\0’; i++){
if (A==s[i]) s[i]=B; //挨个判断,替换
}
printf("%s",s);
8845:B过滤空格
一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。
句子的头和尾都没有空格

分析:如果有多个空格,只保留一个空格
做法:如果当前字符是空格,如果前一个字符也是空格,则不输出.
for(int i=0; a[i] !='\0’; i++){
if(a[i] ==' ' && a[i-1] ==' ‘)
continue;
else printf("%c",a[i]);
}
8847:C输出亲朋字符串
求给定字符串s的亲朋字符串s1。
字符串s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲
朋字符; 给定字符串s的第二个字符的ASCII值加第三个字符的ASCII值,
得到第二个亲朋字符;依此类推,直到给定字符串s的倒数第二个字符。
亲朋字符串的最后一个字符由给定字符串s的最后一个字符ASCII值加s的
第一个字符的ASCII值。
分析:根据题意得:
前面的亲朋字符:s1[i] = s[i] + s[i+1] (i<=len-2)
最后一位亲朋字符:s1[i] = s[i] + s[0] (i = len -1)
8850:D将字符串中的小写字母转换成大写字母
H将字符串中的小写字母转换成大写字母。
字符串(长度不超过100,可能包含空格)。

拓展:
isalpha(C):用来字符C是否为字母
isalnum(C):用来字符C是否为数字或者字母,即判断是否属于a~z||A~Z||0~9。
islower(C):用来字符C是否为小写字母,即是否属于a~z。
isupper(C):用来字符C是否为大写字母,即是否属于A~Z。
toupper(C): 如果字符C是小写字母,则转换为对应的大写字母
tolower(C): 如果字符C是大写字母,则转换为对应的小写字母
1037:E【字符串】比较大小
输入两个数a和b,比较这两个数的大小,输出比较的结果;
若a大于b输出“>” ,若a等于b输出“ = ” ,若a小于b,输出“<”输入数字的位数不超过200位
思路:
不能把输入看成一个double类型或者float类型的数,因为这两种类型表示的数据范
围是有限的,200位整数位或者小数位根本无法表示。
因此将输入的两个数当做字符串处理。
1. 将输入的两个数当做字符串处理
2. 字符串比较:strcmp(a,b) 能够按照字典序对字符串进行比较
3. 因为有小数点’.’ 不能直接将两个字符串进行比较
4. 将字符串通过小数点的位置,得到整数部分的长度。
5. 整数部分的长度,越长代表数越大
6. 如果整数部分长度相等,则按照字符串的方式进行比较


5965:Z 754
分析:依次获取三位数字字符,将其分别看做百位,十位,个位数,
再与753进行比较,并记录结果ans(即最小的绝对值)
记录最小:则ans初始化为一个足够大的数: ans = 80000;
35753: abs(357-753) = 396 ; ans = 396;
35753: abs(575-753) = 178 ; ans = 178;
35753: abs(753-753) = 0 ; ans = 0;
for(int i=0;i<len-2;i++){
int x=(a[i]-'0')*100 + (a[i+1]-'0')*10 + (a[i+2]-’0’)*1;
if(abs(753 -x) > ans) ans = abs(753-x);
}
所学总结与反思
BYE~~