编写函数sum(x),求整数的各位数字之和。

python代码编写

#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define nsize 10 //输入的10进制数字初始长度(包含结束符号),及内存增长幅度
char *getNum();//通过输入获取一个任意长正数字
long sum(char *num);
int main()
{
    char *num=NULL;
    while(1)
    {
        num=getNum();
        printf("各位的数字和为:%ld\n",sum(num));
    }
    return 0;
}

long sum(char *num)
{
    long i,len=strlen(num),sum=0;
    for(i=0;i<len;i++)
    {
        sum=sum+num[i]-'0';
    }
    return sum;
}
char *getNum()
{
    char c,*n10=NULL,*n10Save=NULL;
    int size=nsize,count=0,flag=0;
    n10=(char *)malloc(sizeof(char)*size);
    printf("输入一个任意位数的正整数,回车确认:\n");
    while(1)
    {
        scanf("%c",&c);
        if(c=='-' && flag==0)//首位不能是负号
        {
            flag=1;
            printf("必须输入正整数\n");
            fflush(stdin);// 清空剩余缓存
            continue;
        }
        if(c>='0' && c<='9')
            if(count<=size-2)
            {
                n10[count++]=c;
                n10[count]=0;
            }
            else
            {
                size=size+nsize;
                n10Save=(char *)malloc(sizeof(char)*size);
                n10Save[0]=0;
                strcpy(n10Save,n10);
                free(n10);
                n10=n10Save;
                n10[count++]=c;
                n10[count]=0;
            }
        else if(c=='\n')
            break;
        else
        {
            printf("输入错误:只能输入数字!!请重新输入\n");
            count=0;
            n10Save=NULL;
            free(n10);
            size=nsize;
            n10=(char *)malloc(sizeof(char)*size);
            fflush(stdin);// 清空剩余缓存
        }
    }
    return n10;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-25

这你可满意

第2个回答  2018-04-28
# -*- coding:utf-8 -*-
#py3

def sum(x):
    s=0
    while x>0:
        s+=x%10
        x=int(x/10)
    return s
n=int(input())
print(sum(n))

本回答被提问者采纳
第3个回答  2018-04-28
图看不清,是否可以截图