解题思路:
一开始没想那么多,直接是想把int类型的每一位取余求出来求和 ,但是int的长度不够。
决定把输入放到string字符串里,字符数字的值等于这个数字的ascii码减去0的acsii码
通过进行str.lenght()次循环,可以很简单的求出每位数字的和
注意事项:
1.注意每种类型的表示范围
int -2147483648~2147483647
long -2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
2.得到字符数字的值的大小直接减去0
如:char a='8';//此时的8是以ASCII码的形式存放
int s=a-'0'; //这时s为8
参考代码:
#include<iostream> #include<cmath> using namespace std; void qushu(long n) { int x=0;//x是n的位数 int a=n; int num=0; while(a>0) //算出n的位数x { a=a/10; x++; } for(int i=0;i<x;i++) { num=num+n%10; n=n/10; } cout<<num<<endl; } int main() { long n;//存放整数的地方 while(cin>>n) { qushu(n); } return 0; }
0.0分
0 人评分