| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3952 人关注过本帖
标题:任意输入一个4位数,求他的数字之和,(如:5173,数字之和是:16
只看楼主 加入收藏
限量版猪头
Rank: 2
等 级:论坛游民
威 望:1
帖 子:165
专家分:30
注 册:2006-2-5
收藏
得分:0 

看在那么多人都有疑问,我写下吧,
首先个位,直接拿数模上10就好,再除以1,随便几位的数,得3,
百位.先模上100,再除以10,得7,
千位,先模上1000,再除以100,得1,
万位,直接除以10000,OK了~得5,当然了,要设为int型~

#include<stdio.h>
void main()
{ int num,i,j=10,k=1,sum=0,a;

scanf("%d",&num);

for(i=0;i<4;i++)
{ a=num%j;
a=a/k;
j*=10;
k*=10;
sum=sum+a;
}
printf("the sum is %d ",sum);
getch();
}
也可以修改一下,随便多少位的数也可以,不过要加上先判断数的位数的功能~

#include<stdio.h>
void main()
{ int num,i,j=10,k=1,sum=0,a,bit=1;//bit为数的位数

scanf("%d",&num);

a=num;

while((a=a/10)!=0)
bit++;

for(i=0;i<bit;i++)
{ a=num%j;
a=a/k;
j*=10;
k*=10;
sum=sum+a;
}
printf("the sum is %d ",sum);
getch();
}

这样,随便多少位都可以了,只要在int 范围内...也可以改成long,那样就更大了~

[此贴子已经被作者于2007-4-23 18:16:38编辑过]


2007-04-23 17:55
oclassic
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2007-4-18
收藏
得分:0 
#include<stdio.h>
int main(void)
{
long num=0,bit=1,sum=0,t;
puts("Please input your number:\n");
scanf("%ld",&num);
t=num;
while(t/=10)
bit++;

while(num%10)
{
sum+=num%10;
num/=10;
}
printf("%ld",sum);

}

编程群号码30772309群刚刚建立一个论坛http://tszbbs./?u=2 诚招斑猪哦
2007-04-23 19:22
sishen
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-4-23
收藏
得分:0 
我估计你也是个初学者吧..嘿嘿..不防看看我的:
#include<stdio.h>
main()
{
int a,b,c,d,n,sum;
printf("Please input a fourthe number:\n");
scanf("%d",&n);
a=n/1000;
b=(n%1000)/100;
c=((n%1000)%100)/10;
d=n%10;
sum=a+b+c+d;
printf("The sum of the number is %d",sum);
}
2007-04-23 21:48
ml342418175
Rank: 1
等 级:新手上路
威 望:1
帖 子:183
专家分:0
注 册:2007-4-13
收藏
得分:0 

给你一个,应该算简单的拉
#include"stdio.h"
#include"math.h"
int main()
{
int a,b,c,d,e,sum;
scanf("%d",&a);
if(a>=1000&&a<=9999)
{
b=a/1000;
c=a/100-b*10;
d=a/10-b*100-c*10;
e=a-b*1000-c*100-d*10;
sum=b+c+d+e;
printf("%d\n",sum);
}
else
printf("This is error!") ;
getch();
}


做人要洒脱一点,潇洒一点!
2007-04-23 21:51
jacy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-4-18
收藏
得分:0 

我也写一个,嘿嘿:
main()
{
int n,a=0;
scanf("%d",&n);
for( ; n!=0 ; )
{
a+=n%10;
n=n/10;
}
printf("%d\n",a);

}


2007-04-23 22:49
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
我再来一个


#include"stdio.h"
#include"math.h"
int main()
{
int a,b,c,d,e,sum;
scanf("%d",&a);
if(a>=1000&&a<=9999)
{
b=a/1000;
c=a/100-b*10;
d=a/10-b*100-c*10;
e=a-b*1000-c*100-d*10;
sum=b+c+d+e;
printf("%d\n",sum);
}
else
printf("This is error!") ;
getchar();
}
2007-04-23 22:59
raulxxyuer
Rank: 1
等 级:新手上路
威 望:1
帖 子:178
专家分:0
注 册:2007-4-23
收藏
得分:0 
只要用数学上的 MOD 就行了.....算法不难的

我很沒用,總是學不會遺忘,總是學不會割捨本不屬於我的東西。
2007-04-23 23:01
ml342418175
Rank: 1
等 级:新手上路
威 望:1
帖 子:183
专家分:0
注 册:2007-4-13
收藏
得分:0 
楼上的能解释一下吗?看不懂哦。
for( ; n!=0 ; )
{
a+=n%10;
n=n/10;
}
这段什么意思,谢谢了

做人要洒脱一点,潇洒一点!
2007-04-23 23:34
计算机学院
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-4-19
收藏
得分:0 

   多谢大家的帮忙 
能解释下
a=n/1000;
b=(n%1000)/100;
c=((n%1000)%100)/10;
d=n%10;
sum=a+b+c+d;
什么意思吗 有点看不明白

[此贴子已经被作者于2007-4-24 2:42:28编辑过]


2007-04-24 02:19
jojoviclly
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-17
收藏
得分:0 
貌似5楼的是有点简单吧,那跟输入几个个位数求和有什么区别~~
我也是初学者比较推荐11楼的,希望把有些语句加注释+++,谢谢!

い水能载舟灬也能煮粥う
2007-04-24 09:42
快速回复:任意输入一个4位数,求他的数字之和,(如:5173,数字之和是:16
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030273 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved