题目内容: 输入一个多位的数字,1求各数位相加。 例如输入12345,则计算1+2+3+4+5=15 输入格式: 一个整数 输出格式: 一个整数 输入样例: 1234567890 输出样例: 45 时间限制:500ms内存限制:32000kb
实现程序:
#include <stdio.h> #include <stdlib.h> #include <string.h> int cnt_count(int value) { int count = 0 , cnt = 0 , n = 1 ; while(value) { value /= 10 ; count++ ; } //上面算法是为了求得计数值count有表示传进来的value有多少位 if(count == 1) { cnt = 0 ; } else { //相应的有多少为就按照规律去累乘 while(cnt < count - 1) { n *= 10 ; cnt++ ; } } return n ;//比如6位数,那么就返回100000,5位就返回10000,依次类推 } int main(void) { int num , i , sum = 0 ; int value = 0 , ret = 1; int buffer[10] = {0};//定义空间为10的数组并清零 scanf("%d",&num);//输入一个数 value = num ;//将数赋值给变量value for(i = 0 ; i < 10 ; i++){//循环十次 ret = cnt_count(value) ;//先通过cnt_count确定输入的数是几位数 buffer[i] += value / ret ; //取到这个数的最高位并将其存到buffer里去 value = value % ret ;//接下来屏蔽最高一位,例如输入12345,最高位为1,屏蔽完就为2345 sum+=buffer[i];//累加数组内的元素 } printf("%d",sum);//输出累加结果 return 0 ; }