对于初学者来说,ascll码并不好记。但其实ascll码并不需要都记住,一般只需要记住几个常用的就可以了:
*数字(0-9):48-57 共10个;
*字母:A:65
a:97
完整的ascll码如下表所示:
简单来说,ASCLL码表里的对应数字就相当于对应字符的编号,每个字符都有自己的编号。因此,字符所对应的编号就可以被拿来做比较,运算等等。
下面举几个例子来说说:
1. 字符串处理:
C语言中的字符串实际上是以字符数组的形式存储的,而ASCII码用于表示每个字符。通过ASCII码,可以对字符串进行比较、拼接、截取等操作。
下面介绍字符串的比较(每位):
#include<stdio.h> int main(void) { char a[] = "helloworld"; char b[] = "helloworlf"; for (int i = 0; i < sizeof(a); i++) { if (a[i] > b[i]) printf("a>b\n"); else if (a[i] < b[i]) printf("a<b\n"); else printf("a=b\n"); } return 0; }
输出如下:
a=b a=b a=b a=b a=b a=b a=b a=b a=b a<b//d和f的比较结果 :d<f a=b//属于最后一个终止符的比较
2. 输入输出:
C语言中的输入输出函数(如printf和scanf)可以使用ASCII码来读取和输出字符。例如,使用%c格式说明符可以读取和输出字符。
#include<stdio.h> int main(void) { char s = 'a'; printf("%d\n", s);//97 int s1 = 48; printf("%c", s1);//'0' return 0; }
3. 字符操作:
C语言提供了一些字符操作函数,如isalpha、isdigit、toupper、tolower等,这些函数可以通过ASCII码来判断字符的类型或进行大小写转换。
1. isalpha(char c):判断字符c是否为字母。
如果c是字母(大写或小写),返回非零值(true),否则返回0(false)。
2. isdigit(char c):判断字符c是否为数字。
如果c是数字字符(0-9),返回非零值(true),否则返回0(false)。
3. toupper(char c):将字符c转换为大写字母。
如果c是小写字母,返回对应的大写字母;如果c不是小写字母,则返回原字符c。
4. tolower(char c):将字符c转换为小写字母。
如果c是大写字母,返回对应的小写字母;如果c不是大写字母,则返回原字符c。
这些函数都是通过ASCII码来进行判断和转换的。例如,isalpha函数会检查字符的ASCII码值是否在大写字母或小写字母的范围内,isdigit函数会检查字符的ASCII码值是否在数字字符的范围内。toupper和tolower函数则是通过ASCII码的增减来实现大小写转换。
这些字符操作函数在处理文本和字符时非常有用,可以根据需要进行字符类型判断或大小写转换,从而实现更灵活的字符处理功能。
//当输入一个字符时,我们可以使用这些字符操作函数来判断字符的类型或进行大小写转换。以下是一些示例: #include <stdio.h> #include <ctype.h> int main() { char c; printf("请输入一个字符:"); scanf("%c", &c); if (isalpha(c)) { printf("输入的字符是字母\n"); if (isupper(c)) { printf("转换为小写字母:%c\n", tolower(c)); } else { printf("转换为大写字母:%c\n", toupper(c)); } } else if (isdigit(c)) { printf("输入的字符是数字\n"); } else { printf("输入的字符既不是字母也不是数字\n"); } return 0; } /* 在上面的示例中,我们首先使用scanf函数读取一个字符,然后使用isalpha函数判断字符是否为字母。如果是字母,我们使用isupper函数判断字符是否为大写字母,然后使用tolower函数将大写字母转换为小写字母,或使用toupper函数将小写字母转换为大写字母。如果不是字母,则使用isdigit函数判断字符是否为数字。最后,根据判断结果输出相应的信息。 例如,当输入字符'A'时,输出如下: ``` 请输入一个字符:A 输入的字符是字母 转换为小写字母:a ``` 当输入字符'5'时,输出如下: ``` 请输入一个字符:5 输入的字符是数字 ``` 当输入字符'%'时,输出如下: ``` 请输入一个字符:% 输入的字符既不是字母也不是数字 ``` */
除此之外,字符大小写转换还可以这样进行: 因为a-A=b-B----->a=b-B+A ; A+1=B;
4. 条件语句和循环:
在C语言中,可以使用ASCII码来进行条件判断和循环控制。例如,可以使用字符的ASCII码值作为条件判断的依据,或者使用for循环来遍历一定范围内的ASCII码。
//1. 使用ASCII码值作为条件判断的依据: #include <stdio.h> int main() { char c; printf("请输入一个字符:"); scanf("%c", &c); if (c >= 'A' && c <= 'Z') { printf("输入的字符是大写字母\n"); } else if (c >= 'a' && c <= 'z') { printf("输入的字符是小写字母\n"); } else if (c >= '0' && c <= '9') { printf("输入的字符是数字\n"); } else { printf("输入的字符既不是字母也不是数字\n"); } return 0; } /*在上面的示例中,我们使用字符的ASCII码值作为条件判断的依据。通过比较字符c与大写字母、小写字母、数字字符的ASCII码范围,来判断输入的字符的类型。*/ //2. 使用for循环遍历一定范围内的ASCII码: #include <stdio.h> int main() { int i; printf("大写字母的ASCII码:\n"); for (i = 'A'; i <= 'Z'; i++) { printf("%c ", i); } printf("\n小写字母的ASCII码:\n"); for (i = 'a'; i <= 'z'; i++) { printf("%c ", i); } printf("\n数字字符的ASCII码:\n"); for (i = '0'; i <= '9'; i++) { printf("%c ", i); } return 0; } /* 在上面的示例中,我们使用for循环遍历了大写字母、小写字母和数字字符的ASCII码范围,然后将每个ASCII码对应的字符输出。 */
5. 数字和字符的转换:
C语言中提供了一些函数,如atoi和itoa,可以将数字和字符之间进行转换。通过ASCII码,可以将字符转换为对应的数字,或者将数字转换为对应的字符。
//1. `atoi`函数:将字符串转换为整数。 #include <stdio.h> #include <stdlib.h> int main() { char str[] = "12345"; int num = atoi(str); printf("转换后的整数:%d\n", num); return 0; } //在上面的示例中,我们使用`atoi`函数将字符串`"12345"`转换为整数。输出结果为`12345`。 //2. `itoa`函数:将整数转换为字符串。 #include <stdio.h> #include <stdlib.h> int main() { int num = 12345; char str[10]; itoa(num, str, 10); printf("转换后的字符串:%s\n", str); return 0; } //在上面的示例中,我们使用`itoa`函数将整数`12345`转换为字符串。输出结果为`12345`。 //3. 将字符转换为对应的数字:可以使用ASCII码进行转换。 #include <stdio.h> int main() { char c = '5'; int num = c - '0'; printf("转换后的数字:%d\n", num); return 0; } /* 在上面的示例中,我们将字符`'5'`转换为对应的数字。由于字符`'5'`的ASCII码值为53,而字符`'0'`的ASCII码值为48,所以我们可以通过`c - '0'`的方式将字符转换为数字。输出结果为`5`。 */ //4. 将数字转换为对应的字符:可以使用ASCII码进行转换。 #include <stdio.h> int main() { int num = 5; char c = num + '0'; printf("转换后的字符:%c\n", c); return 0; } /* 在上面的示例中,我们将数字`5`转换为对应的字符。由于字符`'0'`的ASCII码值为48,而数字`5`加上字符`'0'`的ASCII码值为53,所以我们可以通过`num + '0'`的方式将数字转换为字符。输出结果为`5`。 */
这些只是C语言中一些常见的应用场景,实际上,ASCII码在C语言中几乎无处不在,它是处理字符和文本的基础。