OJ题:输入一个多位的数字,求各数位相加。

来源:互联网 发布:ichart.js下载 编辑:程序博客网 时间:2024/06/02 04:28

题目内容:输入一个多位的数字,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 ;}



0 0
原创粉丝点击