为什么模数运算符不适用于该代码
Why modulus operator does not work on that code?
#include <iostream>
#include <string>
using namespace std;
int main() {
int n = 12;
int i, res;
string digits = to_string(n);
for(i = 0; i < digits.length(); i++){
res = 0;
res = n % digits[i];
if (res != 0){
res = false;
break;
}
if (res == 0){
res = true;
}
}
数字[0]是1,因此:12%1=0=res。然而,当我运行程序时,res=12,因此以下条件如果不能正常工作。怎么了?
感谢
digits[0]
包含字符'1'
,其数值为49。您正在评估12 % 49
,它实际上是12。
如果要将数字字符转换为其值,可以像(digits[i] - '0')
一样执行。
更改
res = n % digits[i];
至
res = n % (digits[i] - '0');
但前提是您确信digits
将只包含数字字符。
ASCII字符代码可以通过谷歌搜索找到。这一页看起来不错。
https://www.asciitable.xyz/
相关文章:
- OpenGL - 在 NDC 中计算位置适用于着色器,但不适用于'regular'程序
- 使用模板参数重载C++方法:如何使其适用于模板的子类?
- 如何修复我的最大公约数代码?它适用于除零和零以外的所有数字
- 选择排序C++(已修改)并非适用于所有情况
- 无法让"std::enable_if"适用于无作用域枚举
- 请找出我的代码中的错误,它在提交得到错误答案的同时仍然适用于我的所有测试用例
- 代码适用于调试,但不适用于发布
- 如何析构单例实例,或者为什么以下代码适用于析构函数?
- std::sort / 适用于测试代码,但无法推断出模板
- 代码似乎不适用于较大的输入,但适用于较小的输入
- 我的代码仅适用于一个输入.请指教
- 动态强制转换适用于模板成员函数内的共享指针和弱指针,无需代码重复
- 我需要转换一些代码,以便它适用于输入和输出文件文本
- GPU cuda 代码是否适用于多个 GPU 卡而无需任何实现
- 计算 c# 中二进制文件符号的频率不起作用,但适用于等效的 c++ 代码
- 防火墙异常代码仅适用于传出连接
- 试图理解得墨忒耳定律,因为它适用于我的代码
- 如何使此代码适用于不同计算机上的服务器和客户端
- -std=c++11是否适用于使用gcc 4.8.1的生产代码
- 为什么代码适用于第二种情况