编写一个程序:输入一个长整数,求出它的各位数字之和(C语言)

2024-12-26 02:05:22
推荐回答(5个)
回答1:

自定义一个不限定长度的字符串输入函数,在主函数中调用输入数字字符串后求字符串各元素代表的十进制数字之和。举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
char *longets(char *p){
    char *q;
    if((q=(char *)malloc(sizeof(int)==4 ? 0xFFFFFF : 0xFFFF))==NULL){
        printf("Failed to create temporary array...\n");
        return NULL;
    }
    scanf("%[1234567890]",q);
    if((p=(char *)malloc(strlen(q)+1))==NULL){
        printf("Failed to create the actual array...\n");
        return NULL;
    }
    strcpy(p,q);
    free(q);
    return p;
}
int main(void){
    unsigned i,sum;
    char *p=NULL;
    printf("Please enter a long integer...\n");
    if(p=longets(p)){
        for(sum=i=0;p[i];sum+=p[i++]-'0');
        printf("The result is %u\n",sum);
    }
    free(p);
    return 0;
}

回答2:

这个问题你可以用字符串来解决,相对还是比较方便的,字符数组每个元素ASCII码值-48就是其相应的数字的值,样例程序:
#include
#include
char
a[1001];
//假定这个数字有1000位
int
i,m,sum=0;
int
main(void)
{
scanf("%s",&a);
//输入字符串a
m=strlen(a);
//计算a的长度,并将其赋值给m
for(i=0;isum+=a[i]-48;
//对数的每一位进行累加
printf("sum=%d\n",sum);
//输出最后累加结果
sum
return
0;
}

回答3:

这个比较简单啊。。。
数字采用字符数组的方式输入,然后用for循环进行计算,在输出。。。。。

回答4:

这个问题你可以用字符串来解决,相对还是比较方便的,字符数组每个元素ASCII码值-48就是其相应的数字的值,样例程序:
#include
#include
char a[1001]; //假定这个数字有1000位
int i,m,sum=0;
int main(void)
{
scanf("%s",&a); //输入字符串a
m=strlen(a); //计算a的长度,并将其赋值给m
for(i=0;i printf("sum=%d\n",sum); //输出最后累加结果 sum
return 0;
}

回答5:

sum=sum+x%10
x/=10