题目

攻克点
- 如何将字符转化为数字
- 如何将10转化为X
- 如何判断数组中各数字加起来是否等于末尾
原理
将字符转化为数字
实现字符转化为数字的关键在于字符的ASCII值(或字符编码)与数字的ASCII值之间的关系。
在计算机内部,每一个字符都有对应的数字编码(ASCII),例如:
- 字符
'0'的ASCII值是 48 - 字符
'1'的ASCII值是 49 - 字符
'2'的ASCII值是 50 - 依此类推,到字符
'9'的ASCII值是 57
可通过执行 减去 '0' ,即做两个字符的ASCII值之间的减法操作,例如:
- 字符
'3',它的ASCII值是 51。 '0'的ASCII值是 48。- 所以,
'3' - '0'计算过程是:51 - 48 = 3。
这种方式可以方便地将字符表示的数字转化为整数,以便进行数学运算
将10转化为X
- 可定义一个数组,第十个即为X
判断数组中各数字加起来是否等于末尾
- 将编码存储于数组中
- for循环,遇到
'-'即跳过 - 若不跳过,将各个字符转化为数字后与对应位置数字相乘后加起来
代码分析
定义两个数组,一个用来存储号码,另一个用来存储识别码
char a[14], mod[12] = "0123456789X"; scanf("%s", a);在C / C++ 中以字符串末尾有不可见 '\0', 所以开数组存储字符的时候一定要多 + 1位留给计算机自动补 '\0';
定义for循环中的变量,并用for循坏计算各个数经过处理后的总和,遇到
'-'跳过int i, j = 1, t = 0; for (i = 0; i < 12; i++) { if (a[i] == '-') continue; t += (a[i] - '0') * j++; }判断识别码是否正觉,若不正确,更改
if (mod[t % 11] == a[12]) { printf("Right\n"); } else { a[12] = mod[t % 11]; printf("%s\n", a); }
完整代码
#include <stdio.h>
int main()
{
char a[14], mod[12] = "0123456789X";
scanf("%s", a);
int i, j = 1, t = 0;
for (i = 0; i < 12; i++)
{
if (a[i] == '-')
continue;
t += (a[i] - '0') * j++;
}
if (mod[t % 11] == a[12])
{
printf("Right\n");
}
else
{
a[12] = mod[t % 11];
printf("%s\n", a);
}
return 0;
}
19 条评论
果博东方客服开户联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方公司客服电话联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方开户流程【182-8836-2750—】?薇- cxs20250806】
果博东方客服怎么联系【182-8836-2750—】?薇- cxs20250806】
最后的晚餐
武松
碧血剑
托尼和蒂娜的婚礼
狮子王国
绝境
孽恋狂情
黑帮女孩
新大头儿子和小头爸爸之秘密计划
完美perfect
第一类型危险
无主之地
关于琼
高跟鞋
你的才华让人惊叹,你是我的榜样。 https://www.yonboz.com/video/19259.html
《加百利的地狱3》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/129053.html
《小姐不藏私》港台综艺高清在线免费观看:https://www.jgz518.com/xingkong/30083.html
你的文章让我感受到了不一样的视角,非常精彩。 http://www.55baobei.com/526ZMpiKyK.html