吉林大学计算机/软件考研考过很多次的题目。求各位数字之和的题目。
下面给到3个代码:
第一个代码,是最基本的思路,将每位数存到数字中,遍历累加数组就是各位数字之和。
第二个代码,是第一个的改进,不存入数组,直接累加到sum中。
第三个代码,因为前面两个代码都是用int存n,位数很低,最多也就几位数。所以这里用字符串数组做的,这个能运行的位数比较多。但题目如果没有位数要求,推荐第二种。
#include <iostream>
using namespace std;
void main()
{
long n;
int i = 0;
int sum = 0;
cin >> n;
int a[10000] = {0};
while (n != 0) //把每一位存入数组
{
a[i++] = n % 10; //每次取末位 存入a[]后 i++
n = n / 10; //除10降一位
}
for (int j = 0; j < i; j++) //输出数组之和
{
sum += a[j];
}
cout << sum << endl;
}
#include <iostream>
using namespace std;
void main()
{
int n, sum = 0;
cin >> n;
while (n)
{
sum += n % 10;
n /= 10;
}
cout << sum << endl;
}
#include <iostream>
using namespace std;
void main()
{
char array[100];
int sum = 0;
cin >> array;
for (int i = 0; array[i]; i++)
{
sum += (array[i] - '0');
}
cout << sum;
}
PS:代码三,字符串数组,这里用asiii码减法,例如 ‘9’-‘0’=9(不太明白的话,可以转int再减也是OK的)。