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

题目内容:
输入一个多位的数字,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 ;
}
时间: 2024-11-05 11:48:17

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

任意输入一个4位正整数,调用函数(函数自定义)输出该正整数数的各位数 字组成的最大数。

/*任意输入一个4位正整数,调用函数(函数自定义)输出该正整数数的各位数字组成的最大数.*/#include <stdio.h>int numb(int a){ int i = 0, j = 0,sum = 0, b[4]; b[0] = a%10; b[1] = a/10%10; b[2] = a/100%10; b[3] = a/1000; for (i = 0 ;i < 4; i++) { for(j = 0;j < 3 - i; j++) { if(b[j] > b[

java循环练习:用户输入一个10以内的数字,通过运算求出该数字的阶乘

package practiceGO; import java.util.Scanner; /*  * 4.用户输入一个10以内的数字,通过运算求出该数字的阶乘  */ public class Cto { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个10以内的数字,由系统计算阶乘"); int num = sc.nextIn

输入一个三位整数,顺序打印个位、十位、百位上的数

l = int(input('请输入一个三位数的整数')) a = l // 100 b = l //10 % 10 c = l % 10 ret = c * 100 + b * 10 + a * 1 print(ret) 原文地址:https://www.cnblogs.com/chengxubo/p/9902294.html

输入一个整数,将各位数字反转后输出

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int inversion(unsigned int num) 5 { 6 int ret=0; //定义返回值 7 int remainder; //定义一个余数 8 9 while(num) //当num除10不为零时,循环 10 { 11 remainder = num % 10; //取余数 12 num = num / 10; 13 ret = ret*10 + remainde

盛大编程题 输入一个深度树 输出他的josn格式(ps 第一次写 写的不好请不要见怪,另外就是有错的地方,不合理的地方请指出。)

话不多说上源码. import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Test1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); List<Integer> index=new ArrayList<>(); List<String> st

求接题目:输入一个字符串输出大小写数字及其他字符的个数并逆序输出

9wwwp0b5mw啥睾约抑汕丶防内肯劝<http://weibo.com/p/230927987600061628162048> rvzxpb9vfd肿氨撩都币涡绰腔脚备<http://weibo.com/p/230927987600585677082624> 18o8arvl2k疽芈孔瞪收抡幻勘特婪<http://weibo.com/p/230927987599767041220608> q4y38xjw2c段斗趁己敲沟钙俜腺甘<http://weibo.co

matlab_exercise(2)----输入一个三位数,依次输出其个位数字,十位数字,百位数字

第一次作业--第二题 输入一个三位数,依次输出其个位数字,十位数字,百位数字. 1 %第二题 2 %注意:将文件命名为math_2018_4_02_01.m 3 %先判断输入的是不是三位数 4 shuru ='请输入一个三位数'; 5 x=input(shuru) 6 7 if x>100&&x<=999; 8 alert=warndlg('输入正确'); 9 b=floor(x/100) 10 % b=fix(x/100)%向下取整 11 c=fix(mod(x,100)/1

输入一个三位数,把个位和百位对调后输出

Description 输入一个三位自然数,然后把这个数的百位数与个位数对调,输出对调后的数 Input 输入一行,只有一个整数x(100<=x<=999). Output 输出只有一行,包括1个整数. Sample Input 123 Sample Output 321 太水了... AC代码: 1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Sc

C语言输入一个2-5位数,去除首位后剩的数!

#include <stdio.h>int main(){  int i;  do{   printf("请输入一个2-5位的数:");   scanf("%d",&i);   if(i>9&&i<=99)   printf("去掉首位后的余数为:%d\n",i%10);     else if(i>99&&i<=999)   printf("去掉首位后的余数为