c语言 一个整数的前n位数之和sum
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 一个整数的前n位数之和sum相关的知识,希望对你有一定的参考价值。
比如 输入23454 2
输出sum=5
#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
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()
以上是关于c语言 一个整数的前n位数之和sum的主要内容,如果未能解决你的问题,请参考以下文章