我有两个数字,例如
char* N1;
char* N2;
N1 = "92345610172222";
N2 = "12351097654671";
我需要添加两个数字的MSD,即
9 +1 = 10
我通过类型转换和除数直到使用两个循环遇到一个数字来解决,求和并返回结果。
int sumMsd(char *N1, char *N2) {
int one = (int)*N1;
int two = (int)*N2;
while (one >= 10)
one /= 10;
while (two >= 10)
two /= 10;
return one+two;
}
当int大小很大时,逻辑将失败。因此,我需要在不使用库函数的情况下优化解决方案。我正在寻找C语言的解决方案。
答案 0 :(得分:2)
这应该有效。
int sumMsd(char *N1, char *N2) {
return (N1[0] - '0') + (N2[0] - '0');
}
让N1的第一位为'3'。那么'3'-'0'为3,即它们的ASCII值之差。