32 条题解
-
-1
这一题除了用课上教的整除再取余,还可以用char (字符)。 因为用char输入时会分开截取每一个字符(这里就是数字)所以可以用它来输入。 char转int,可以直接用char类型减去 '0' 具体怎么减,就是用对应的ASCII码相减。 上代码:
#include <bits/stdc++.h> using namespace std; int main() { char c; int sum = 0; cin >> c; while (c != ' ') { sum += c-'0'; cin >> c; } cout << sum; return 0; }
拿走!~~
bi~~~~ 这个是有一个问题的:运行会报错
ExitCode: 9 (Killed)
所以将while括号里的改成cin >> c就好了。因为cin >> c如果是空的,就会自动返回0(false)。 改正以后的代码(这次没有坑):
#include <bits/stdc++.h> using namespace std; int main() { char c; int sum = 0; while (cin >> c) sum += c-'0'; cout << sum; return 0; }
拿走!~~~
-
-2
1、这道题是一道数位拆分的题目。
2、遇到这样的题目,我们可以从数字的最末位开始拆:- (1)先对10取余得到数字的个位;
- (2)把这个数字除以10,得到除了个位以外的前几位数,得到的新数继续对10取余得到新的个位,也就是原来数字的十位;
- (3)重复前两步直到这个数字为0;
举例说明:假设 N = 21437,
- (1) 21437 % 10 = 7, 21437 / 10 = 2143;
- (2) 2143 % 10 = 3, 2143 / 10 = 214;
- (3) 214 % 10 = 4, 214 / 10 = 21;
- (4) 21 % 10 = 1, 21 / 10 = 2;
- (5) 2 % 10 = 2, 2 / 10 = 0,
循环结束。我们可以看到上面的过程依次得到了21437的个位7,3,4,1,2,把它们加在一起即是各位数之和。
4、核心代码入下while(n > 0) { s += n % 10; n /= 10; }
-
-3
#include <iostream> using namespace std; int main() { int num, sum = 0; cin >> num; // 将数字转换为字符串,然后逐位相加 sum += num % 10; // 取个位数字 num /= 10; sum += num % 10; // 取十位数字 num /= 10; sum += num % 10; // 取百位数字 num /= 10; sum += num % 10; // 取千位数字 num /= 10; sum += num % 10; // 取万位数字 cout <<sum << endl; return 0; }
信息
- ID
- 415
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 3
- 标签
- 递交数
- 2393
- 已通过
- 1304
- 上传者