zoukankan      html  css  js  c++  java
  • ACM题目 1118: Tom数

    题目描述

    正整数的各位数字之和被Tom称为Tom数。求输入数(<2^32)的Tom数!

    输入

    每行一个整数(<2^32).

    输出

    每行一个输出,对应该数的各位数之和.

    样例输入
    12345
    56123
    82
    
    样例输出
    15
    17
    10
    思路:
    开始时想到将整个字符串放到数组中存储起来
    后来发现这样不太可行
    于是巧妙的利用了取余和整除的方法去计算
    代码1:(巧妙利用取整取余的方法)
    #include<stdio.h>
    int main()
    {
        long sum,n;//long型为长整型
        sum=0;
        while ((scanf("%ld",&n))!=EOF)//可以一直输入数据
        { 
            while(n!=0)
            {
            sum=sum+n%10;
            n=n/10;
            }
            printf("%ld
    ",sum);
            sum=0;
        }
        return 0;
    }
    

     代码2:(利用字符串数组的形式)

    #include <stdio.h>
    #include <string.h>
    int main()
    {
            char a[11];    //2^32=4294967296共10位
            while(gets(a)!=NULL){
                    int sum = 0, i;
                    for(i=0;i<strlen(a);i++)
                            sum += a[i]-'0';
                    printf("%d
    ", sum);
            }
            return 0;
    }
    

      

    sum += a[i]-'0';这句话可以将字符转换为数字
    现在比如我们要字符‘1’转换成数字1,就这么一个变化,我们看到了大家注意了字符型常量用''括起来的原因是,它们在计算机中都以各自的ASCII表示。
    而‘1’的对应编码是49的二进制码,但是我们的数字1,就等于1呀,所以为了由原来的‘1’实际上就是49的二进制变成现在的1对应的二进制1,只好用49-48=1了。


  • 相关阅读:
    【转载】面对酱紫的情况,肿么办哇?
    webform 基础
    LINQ 语句实现分页
    LINQ to SQL 语句
    发送邮件&Timer
    treeview递归
    进程&线程
    登录框记住账号
    窗体-对话框,记事本
    日期与地区的三级联动
  • 原文地址:https://www.cnblogs.com/redzzy/p/13671973.html
Copyright © 2011-2022 走看看