LESSON_2级_06_ASCII编码(课件)

2025-07-10
| 31页
| 32人阅读
| 0人下载
普通

内容正文:

CCF-GESP C++二级 CCF-GESP C++二级 编程能力等级认证 1 ASCII编码 ASCII编码 第六课 2 ASCII编码 01 01 3 ASCII编码表 阿拉伯数字0:48 大写字母A:65 小写字母a:97 重点记忆: ASCII码值:0~127 知识讲解 计算机中,信息都以整数的形式进行存储,所以计算机的科学家们就想了个办法。计算机存储这些字符进行编码,使用一个整数来表示对应的字符,例如整数65表示大写字母A,计算机中存储就是整数65,65就是字符A的编码。编码的方式是统一的。 ASC编码是最古老、最常见的编码方式,ASCII编码是国际通用的编码规则,也是最常见的编码方式。ASCII编码表中,使用了128个整数对128个字符进行编码,包括0~9阿拉伯数字,26个英文大小写字母,以及常用符号。在ASCII码表种有33个控制字符无法显示,剩余95个字符可以正常显示。 我们再来看一下ASCII编码表,ASCII编码值字符对应的编码,范围从0到127,对128个字符进行了编码,码值右边就是编码对应的字符,其中有我们常用的就是阿拉伯数字,大小写字母。其中需要我们重点记忆0、A、a的ASCII码。0的ASCII码为48,A的ASCII码为65,a的ASCII码为97。 4 判断题 (样题)汉字没有对应的ASCII码。 正确 错误 真题解析 C++2级样例试题 解析:在ASCII码中包括0~9阿拉伯数字,26个英文大小写字母,以及常用符号,没有汉字。 5 选择题 (2023年6月)如果 a 为 char 类型的变量,下列哪个表达式可以正确判断"a 是数字"?( ) A. '0' <= a && a <= '9' B. '1' <= a && a <= '0' C. '0' <= a <= '9' D. '1' <= a <= '0' A 真题解析 解析:本题考察 C++中的比较运算以及数字字符的 ASCII 码;判断两个条件是 否同时成立时,需要把两个条件用&&符号连接起来,C、D 选项不符合要求;数 字字符的 ASCII 码最小的是'0',最大的是'9',所以本题正确答案为 A。 6 字符与数字运算 字符类型数据可以像整数一样进行运算。 参与运算的实际上是字符的ASCII码,都是整数。 char a = 'A'; cout << a+3 << endl; char b = 'B'; cout << b-2 << endl; 68 64 字符与整数之间进行运算的结果是整数!!! 知识讲解 字符类型数据可以像整数一样进行运算,参与运算的实际上是字符的ASCII码。例如:定义char类型的变量a,存储字符A,计算a+3,其实计算字符A对应的ASCII码加3。字符A的ASCII码为65,也就是65+3等于68。因此输出的计算结果为68。定义char类型的变量b,存储字符B,计算b-2,其实计算字符A对应的ASCII码减2。字符A的BSCII码为66,也就是66-2等于64。因此输出的计算结果为64。注意字符与整数之间进行运算的结果是整数,不是字符。 7 选择题 (2023年3月)如果a是char类型的变量,且a的值为'2',则下列哪条语句执行后,a的值不会变为'3'?( ) a=a+1; a+1; a=1+a; ++a; B 真题解析 解析:B 选项中并未对 a + 1 的结果进行任何处理,变量 a 在计算过程中未发生改变,所以本题正确答案为 B。 8 选择题 (2023年3月)在下列代码的横线处填写( ),可以使得输出是5。 D #include <iostream> using namespace std; int main(){     int cnt=0;     for(char ch='1'; ch<='9'; ch++)         if(_______) //此处填入代码             cnt++;     cout<<cnt<<endl;     return 0; } ch<'5' ch>=5 ch>='4' ch%2==1 真题解析 解析:cnt初始值为0,最终输出cnt的值是5,证明循环的次数为5次。循环的范围是从字符1到字符9,如果if的条件为ch<'5',则循环次数为4次,ch>=5,循环次数为9次,ch>='4',循环次数为6次。ch%2==1,也就是找ASCII码为奇数的字符个数,字符1到字符9之间,有5个字符符合要求,所以循环次数为5次,所以应该选择选项D 9 判断题 (2023年6月)如果a为char类型的变量,且取值为大写字母'F',则执行语句a=a+1;后,a的值会变为大写字母'G'。 正确 错误 真题解析 解析:a的值为大写字母F,加1之后的值再次保存到了字符变量中,所以结果是比字符F的ASCII码大1的字符G 10 选择题 (2023年6月)如果a为char类型的变量,且a的值为'C'(已知'C'的ASCII码为67)则执行cout<<(a+2);会输出( )。 D E C+2 C2 69 真题解析 解析: a+2相当于a的ASCII码加2,字符与整数运算的结果是整数,结果应该是69。 11 字符与字符运算 字符类型数据之间也可以进行运算。 参与运算的实际上也是字符的ASCII码,都是整数。 char c1 = 'c'; char c2 = 'a'; cout << c1-c2 << endl; 2 196 cout << c1+c2 << endl; 字符与字符之间进行运算的结果也是整数!!! 知识讲解 字符除了能跟整数进行运算之外,字符之间也能进行运算。 例如:定义变量c1存储字符c,定义变量c2,存储字符a。令c1-c2,就是使用字符c的ASCII码减字符a的ASCII码,也就是99-97等于2,因此输出结果为2。再令c1+c2,就是使用字符c的ASCII码加字符a的ASCII码,也就是99+97等于196,因此输出结果为196。 由此我们能够看出,字符之间进行运算的结果也是整数!!!并不是字符。 12 判断题 (2023年3月)如果a为char类型的变量,且取值为小写字母,则执行语句a=a-'a'+'A';后,a的值会变为与原值对应的大写字母。 正确 错误 真题解析 解析:算式:a-'a'+'A',可以调整计算顺序为a+('A'-'a'),大小写字母的ASCII码相差32,所以算式可以简化为a-32,由于变量a的值为小写字母,所以ASCII码值减小32之后变为对应的大写字母。 13 数据类型转换 02 02 14 赋值运算时的自动转换: 自动数据类型转换 int a='5'; cout<<a<<endl; 53 int类型 char c=66; cout<<c<<endl; B char类型 int b=3.125; cout<<b <<endl; 3 int类型 double d='A'; cout<<d<<endl; 65.0 double类型 知识讲解 什么情况下会发生自动数据类型转换呢?第一种情况是在赋值运算时,会发生自动转换。 例如: 1)定义int类型变量a,存储字符5,此时输出a的值为字符5的ASCII码值53,是一个int类型的数据。这种情况下就发生了自动数据类型转换,char类型的数据转换成了int类型的数据。 2)定义int类型变量b,存储小数3.14,此时输出b的值为3,是一个int类型的数据。这种情况下也发生了自动数据类型转换,double类型的数据转换成了int类型的数据。 3)定义char类型的变量c,存储整数66,输出c的值为字符‘B’,这是将int类型的数据转换为了char类型。 4)定义double类型的变量d,存储字符‘A’,输出d的值为65.0,这是将char类型的数据转换为了double类型。 这些情况下都是发生了自动数据类型转换。 15 自动数据类型转换 算术运算时的自动转换: 转换规则:小类型向大类型转换 char int long long float double int a=5; double b=3.14 ; cout<<a+b<<endl; 8.14 double类型 char c='A'; cout<<a+c<<endl; 70 int类型 cout<<a+b+c<<endl; 73.14 double类型 char s; s='A'+5; cout<<s<<endl; F char类型 知识讲解 还有一种情况,就是在我们进行多种类型的算术运算时,会发生自动数据类型转换。转换的规则是小类型向大类型转换。 例如: 1)定义int类型变量a,存储整数5,定义double类型变量b,存储小数3.14,两个变量相加之后的结果为8.14,结果为double类型。再这个过程中发生了自动转换,int类型的数据转换为了double类型的数据,计算的结果自然也是double类型。 2)定义char类型变量c,存储字符A,a+c的结果为70,是int类型的数据。这个过程中也是发生了自动转换,char类型的数据,转为了int类型的数据,结果自然也是int类型的数据。 3)当计算a+b+c时,三种类型的数据同时参加运算,结果为double类型。此时char类型和int类型的数据都自动转换成了double类型的数据。 如果当遇到算术运算和赋值运算结合的情况下,此时可能会发生多次数据类型转换。 例如: 定义char类型变量s,将字符A加5的结果赋值给s,‘A’+5,的结果为70,此时发生了一次数据类型转换,char类型转为int类型。整数70保存到char类型的变量中,输出s的值为字符F,此时又发生了一次数据类型转换,int类型转换成了char类型。 16 判断题 (2023年3月)表达式(10.0 / 2)的计算结果为5.0,且结果类型为double。 正确 错误 真题解析 解析:10.0是double类型,2是int类型,结果过程中会将int转为double,结果为5.0,结果类型为double类型。 17 选择题 (2023年3月)如果a、b、c和d都是int类型的变量,则下列哪个表达式能够正确计算他们的平均值?( ) (a+b+c+d)/4 (a+b+c+d)%4 (a+b+c+d)/4.0 (a+b+c+d)%4.0 C 真题解析 解析:计算a、b、c、d的均值需要利用他们的和除4,所以BD选项排除,由于平均值可能是小数,a、b、c、d相加的结果为整数,4也为整数,相除的结果依旧是整数,所以选项A错误。只有选项C是正确的,利用一个整数除小数,得到的结果是小数。 18 选择题 (2023年6月)下列关于C++语言的叙述,正确的是?( ) char类型变量不能赋值给int类型的变量。 两个int类型变量相乘,计算结果还是int类型。 计算两个int类型变量相乘时,如果乘积超出了int类型的取值范围,程序会报错崩溃。 计算两个double类型变量相除时,如果除数的值为0.0,程序会报错崩溃。 B 真题解析 解析:选项A:char类型变量可以赋值给int类型的变量,int类型的变量也同样可以赋值给char类型,所以A错误。选项C:当保存到int类型变量中的数据超出int类型的取值范围时,程序不会崩溃报错,只会丢失一部分数据,所以C错误。选项D:这种情况下,程序不会保存崩溃,输出结果依然是0.0。 19 选择题 (2023年6月)如果用两个int类型的变量a和b分别表达平行四边形的两条边长,用int类型的变量h表达a边对应的高,则下列哪个表达式不能用来计算b边对应的高?( ) a/b*(0.0+h) (0.0+a*h)/b a*h/(b+0.0) (a+0.0)*h/b A 真题解析 解析:本题可以借助平行四边形的面积。平行四边形面积=边长*高。通过边长a和对应的高相乘可以计算机平行四边形的面积。再用该面积除b,即可得到b边对应的高。其中只有选项A是错误的。 20 判断题 (2023年9月)C++表达式 7.8 / 2 的值为 3.9 ,类型为float。 正确 错误 真题解析 解析:7.8是double类型,2是int类型,结果过程中会将int转为double,结果为3.9,结果类型为double类型,是不是float类型。 21 强制数据类型转换 //将变量a的值转化为char类型 int a=65; cout<<(char) a<<endl; //将数值65转化为char类型 cout<<(char) 65<<endl; A A 强制数据类型转换格式一: (数据类型)变量 //将变量a的值转化为char类型 int a=65; cout<<char (a)<<endl; //将表达式a+b的结果转化为char类型 int b=1; cout<<char (a+b)<<endl; A B 强制数据类型转换格式二: 数据类型(变量或表达式) 知识讲解 除了自动数据类型转换以外,我们还能够进行强制数据类型转换。 有两种转换的方式,第一种的格式为:(数据类型)变量。 例如: 1)定义int类型变量a,赋值为65,可以通过(char)a将65强制转换为字符A,注意转换之后a中保存的内容是不变的。 2)另外还可以直接通过(char)65 将数值65转换为字符A。 除了上述讲解的方式还有一种强制数据类型转换的格式: 数据类型(变量或表达式) 例如: 1)定义int类型变量a,赋值为65,可以通过char (a) 将变量a的值转成char类型,输出结果为字符A。 2)另外这种写法还可以转换表达式的结果。定义int类型变量a,赋值为1,可以通过char (a+b),将表达式的结果转换为char类型,输出的结果为字符B。 22 判断题 (2023年6月)如果a是double类型的变量,而且值为3.5,则表达式a*10的计算结果为35,且结果类型为int 。 正确 错误 真题解析 解析:a为doule类型的变量,10为int类型的数据,a*10会发生数据类型转换,结果依旧为double类型。 23 (2023年6月)如果a为int类型的变量,b为char类型的变量,则下列哪个语句不符合C++语法( )。 a=a+1.0; a=(int)(b-'0'); b=(char)(a+'0')。 (int)b=a; D 选择题 真题解析 解析:本题主要考察 C++中数据类型转换的规则;强制类型转换得到的是改变类型的值,不再是能被赋值的变量;所以本题正确答案为 D。 24 选择题 (2023年6月)在下列代码的横线处填写( ),使得输出是9。 D (a+b) (a+b-'0') (char)(a+b) (char)(a+b-'0') #include <iostream> using namespace std; int main(){     char a='3', b='6';     cout<<________; //此处填入代码     return 0; } 真题解析 解析: 在C++中,字符'3'和'6'在内存中是以ASCII码的形式存储的。'3'的ASCII码是51,'6'的ASCII码是54。因此,a+b的结果是51 + 54 = 105。 选项D中的表达式(char)(a+b-'0'): a+b的结果是105。 '0'的ASCII码是48,所以'0'被减去后,结果是105 - 48 = 57。 57对应的字符是'9',因此程序输出结果为9。 所以,正确答案是选项D。 25 选择题 (2023年9月)C++表达式 int(-123.123 / 10) 的值是( )。 D -124 -123 -13 -12 真题解析 解析:-123.123/10的结果为-12.3123,使用int()会将数据-12.3123强制转换为-12。 26 变换密码 【问题描述】 一密码变换规则如下:一个正整数对应一个字符; 如果该数对123取余的值在97-122范围,将余数作为变换后字符密码的ASCII码,此时变换后的字符密码为小写字母; 如果变换不了小写字母,将该数对91取余,若余数在65-90范围,依旧将余数作为变换后字符密码的ASCII码,此时变换后的字符密码为大写字母; 如果变换不了大小写字母,直接变换为"*"。 输入一个正整数,输出变换后的字符。 【输入描述】 输入一个正整数n(1≤n≤1000),表示原始密码。 【输出描述】 输出变换后的密码。 【输入样例】 42 【输出样例】 * 97 ≤ 42%123 ≤ 122 65 ≤ 42%91 ≤ 90 课堂练习 27 思路分析 1、创建变量n保存整数密码。 int n; cin>>n; 2、将整数密码变换成字符密码。 变换规则: 如果 97 ≤ (n%123) ≤ 122 变换后字符密码的ASCII码:n%123; 否则如果 65 ≤ (n%91) ≤ 90 变换后字符密码的ASCII码:n%91; 否则 变换为"*" 课堂练习 28 思路分析 2、将整数密码变换成字符密码。 char b; //存储字符密码     if(n%123>=97&&n%123<=122)         b=n%123;     else if(n%91>=65&&n%91<=90)         b=n%91;     else         b='*'; cout<<b; 变换规则: 如果 97 ≤ (n%123) ≤ 122 变换后字符密码的ASCII码:n%123; 否则如果 65 ≤ (n%91) ≤ 90 变换后字符密码的ASCII码:n%91; 否则 变换为"*" 课堂练习 【完整代码】 #include<iostream> using namespace std; int main(){     int n;     cin>>n;     char b;     if(n%123>=97&&n%123<=122)         b=n%123;     else if(n%91>=65&&n%91<=90)         b=n%91;     else         b='*';     cout<<b;     return 0; } 课堂练习 完整代码 30 感谢你的学习 31 $$

资源预览图

LESSON_2级_06_ASCII编码(课件)
1
LESSON_2级_06_ASCII编码(课件)
2
LESSON_2级_06_ASCII编码(课件)
3
LESSON_2级_06_ASCII编码(课件)
4
LESSON_2级_06_ASCII编码(课件)
5
LESSON_2级_06_ASCII编码(课件)
6
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。