原题链接:Tom数
解题思路:
一开始没想那么多,直接是想把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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复