解题思路:
一开始没想那么多,直接是想把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语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:552 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:590 |
1017题解浏览:663 |
字符逆序 (C语言代码)浏览:506 |
C二级辅导-求偶数和 (C语言代码)浏览:707 |
格式化数据输出 (C语言代码)浏览:882 |
数列排序 (C语言代码)浏览:674 |
小O的数字 (C语言代码)浏览:1490 |
母牛的故事 (C语言代码)浏览:519 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:456 |