字符与数字的相互转换

一、字符转数字

char类型字符转换为数字,其实是转换为ASCII码值

有两种方式:

1.强制类型转换,结果为对应的ASCII码值

 char v1 = 'a';
 char v2 = 'z';
 char v3 = '1';
 char v4 = '9';

 int num1 = (int)v1;
 int num2 = (int)v2;
 int num3 = (int)v3;
 int num4 = (int)v4;

 printf("%d %d %d %d\n", num1, num2, num3, num4);

运行结果

2.字符相减得到ASCII码的差值

字符减去字符得到的是它们ASCII码的差值(字符减去字符本身是0,再加上所需数字即可)

举例1:

将字符A~Z分别置为1~26,因为字符A减去字符A的结果是0,再加1即可将字符A置为1,将字符A作为根基。其他所有字母由于ASCII码值比字符A大,也都减去字符A再加1即可得到相对应的数字。

char arr[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int i = 0; i < strlen(arr); i++)
{
    printf("%d ", arr[i] - 'A' + 1);
}

举例2:

将字符型数字转换为对应的整型数字,只需要将字符型数字减去 ‘0’,因为他们的ASCII码差值正好是对应的整型数字值

int v1 = '1' - '0';
int v2 = '2' - '0';

printf("%d %d", v1, v2);

整型数字转字符型数字:+ ‘0’

二、数字转字符 

1.加上某字符

数字加上某字符可以理解为某字符加上该数字,其实就是在该字符的ASCII码值加上数字,结果就是新的ASCII码值对应的字符

举例1:

将数字转换为对应的字符数字,只需加上字符‘0’即可

	char v1 = 1 + '0';
	char v2 = 9 + '0';

	printf("%d %d", v1, v2);

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的示例程序,可以实现字符串与数字之间的相互转换: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char str[20]; // 用于存储字符串的数组 int num; // 用于存储数字的变量 // 字符串转数字 printf("请输入一个数字:"); fgets(str, 20, stdin); // 从标准输入读取字符串 num = atoi(str); // 使用atoi函数将字符转换为整数 printf("转换后的数字为:%d\n", num); // 数字字符串 printf("请输入一个数字:"); scanf("%d", &num); // 从标准输入读取数字 sprintf(str, "%d", num); // 使用sprintf函数将数字转换字符串 printf("转换后的字符串为:%s\n", str); return 0; } ``` 在上面的程序中,我们使用了两个函数来完成字符串与数字转换: - atoi函数:将一个字符转换为整数。它的原型为`int atoi(const char *str)`,其中str为待转换字符串,返回值为转换后的整数。如果无法转换,则返回0。 - sprintf函数:将一个数字转换字符串。它的原型为`int sprintf(char *str, const char *format, ...)`,其中str为存储结果的字符串数组,format为格式化字符串,后面的省略号表示要输出的参数。该函数将format字符串中的格式标记替换为对应的参数值,并将结果保存在str中。函数返回值为输出的字符数。 需要注意的是,在使用fgets函数读取字符串时,我们指定了最大读取字符数为20,以避免数组溢出;而在使用scanf函数读取数字时,我们使用了`%d`格式标记,表示要读取一个整数。此外,为了方便输出结果,我们使用了printf函数来输出转换后的数字字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南林yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值