c语言 一个整数的前n位数之和sum

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 一个整数的前n位数之和sum相关的知识,希望对你有一定的参考价值。

比如 输入23454 2
输出sum=5

参考技术A #include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()

//若整数小于10位,有这种方法
int number,n;
while(~scanf("%d%d",&number,&n))  //循环输入
int a[10]; //a[0]保存个位值,a[1]十位,依次类推
int cnt=0;
while(number!=0)

a[cnt]=number%10;
cnt++;
number/=10;

int sum=0;
//此时cnt为位数
if(n>cnt) n=cnt; //若输入的n比位数大,那么令n为位数
for(int i=0;i<n;i++)

sum+=a[cnt-i-1];

printf("%d\\n",sum);

return 0;


#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
char s[1000];
int n;
int main()

//若整数大于10位,有这种通用方法,用字符串处理

while(~scanf("%s%d",s,&n))  //循环输入
int sum=0;
int len=strlen(s);
if(n>len) n=len;
for(int i=0;i<n;i++)

sum+=s[i]-'0';

printf("%d\\n",sum);

return 0;

参考技术B 我明白你的意思了
#include <stdio.h>
#define N 10

int main(void)

int integer, n;
int ar[N];
int i = 0, sum = 0, j;

printf("Enter an integer: ");
scanf("%d", &integer);
while (integer)

ar[i++] = integer % 10;
integer /= 10;
/*把这个整数各位上的数取出来*/
printf("n = ");
scanf("%d", &n);
while (n > i || n <= 0)

printf("Please input n 1 - %d.\n", i);
printf("n = ");
scanf("%d", &n);
/*如果输入的n大于这个整数的位数,提示错误,并重新输入*/
for (j = i - n; j < i; j++)
sum += ar[j];
printf("sum = %d", sum);
return 0;
本回答被提问者和网友采纳
参考技术C #include <stdio.h>
int main()
    int num = 0;
    int n = 0;
    int sum = 0;
    int len = 0;
    int temp = 0;
    printf("input num:");
    scanf("%d",&num);
    temp = num;
    while(temp)
        len++;
        temp = temp/10;
    
    printf("input n:");
    scanf("%d",&n);
    if(len > n)
        printf("n>len\\n");
        return -1;
    
    int i = 0;
    temp = num;
    for(;i < n;i++)
        sum += getFront(temp,len);
        temp = temp/10;
        len--;

    
    printf("%d的前%d位数之和sum : %d\\n",num,n,sum);
    return 0;

 int getFront(int num,int len)
         int i = 0;
         for(;i < len-1;i++)
                num = num/10;
        
        return num;

参考技术D 大概就这样,你没学数组吧?
int a[200],sum=0,i=0,n;
while(a[i]!=' ')
scanf("%d",&a[i]);
i++;

scanf("%d",&n);
for(i=0;i<n;i++)
sum+=a[i];
printf("%d\n",sum);
反正结果是对的
第5个回答  2013-12-18 你是在开玩笑吗?输入234542输出5?
到底是求和还是找最大?

C语言编程:寻找特殊整数

请编写一个程序寻找一种特殊整数:一个 n 位的正整数等于其各位数字的n次方之和。

例如:407=4×4×4+0×0×0+7×7×7。所以407就是一个特殊数。

输入:
正整数的位数n(n<=6)。

输出:
所有此n位特殊数。每个数占一行。若不存在符合条件的特殊数,则输出提示:“No output.”;若存在,则从小到大进行输出。

说明:
假设输入为4,在4位整数中,有3个4位的特殊数,则输出格式为(输出中的1111、2222和9999并不是4位特殊数,只是格式样例):

1111
2222
9999

#include
#include
main()

long
int
a,b,c,d,e,p;
int
n,i,x;
scanf("%d",&n);
a=pow(10,n-1);
b=(pow(10,n))-1;
d=pow(10,i);
c=a;
for(c=a;c<=b;c++)

for(i=n-1;i>=0;i--)

x=(c/d)%10;
e=e+x*x*x;

printf("%d\n",e);
if(e==c)

printf("%ld\n",e);
p=1;


printf("no
output.\n");

不知道你的代码是不是这样的?你看看,然后你的i没有初始化,i的值是多少啊,函数是顺序执行,你的i好像在for(i=n-1;i>=0;i--)才被赋值了。但d已经被fuck了,所以x
=
(c/d)%10,c也被fuck了。。。后面的就都被fuck了。。
参考技术A 你写得一塌糊涂 给你重写一个吧
#include <stdio.h>
int pow(int x, int y)

int ret;
int i;
for(i=1,ret=1;i<=y;i++)

ret *= x;

return ret;

int main()

int top;
int buttom;
int n;
int i;
int j;
int a[6];
int tmp;
int sum;
int count;
printf("input n:\n");
scanf("%d", &n);
for(i=1,top=0;i<=n;i++)

top = top*10 + 9;

for(i=1,buttom=1;i<=n-1;i++)

buttom = buttom*10;

for(i=buttom,count=0;i<=top;i++)

for(j=0,tmp=i,sum=0;j<n;j++)

a[j] = tmp%10;
sum += pow(a[j],n);
tmp /= 10;

if(i==sum)

printf("%d\n",i);
count++;


if(count==0)

printf("No output\n");

return 0;
追问

你这个是C语言程序吗?
不是应该:int main() 吗?
不过答案是对的。。。

追答

前面定义个计算 整数幂运算的函数 pow
下面 有 int main()

参考技术B 定义那么多的int类型的变量这样写累吗?

以上是关于c语言 一个整数的前n位数之和sum的主要内容,如果未能解决你的问题,请参考以下文章

c语言输出100至999之间所有的个位数十位数百位数之和为5的整数

输入一个正整数,求它们所有数字之和C语言程序怎么写

C语言编程:寻找特殊整数

C语言,输入一个整数,从高位开始逐位分割并输出它的各位数字

C语言,判断某整数中是不是存在重复数字。怎么写呢?

用c语言设计一个计算两个整数的和、差、积、商、和余数的程序