当前位置: 代码迷 >> C语言 >> 任意输入一个4位数,求他的数字之和,(如:5173,数字之和是:16
  详细解决方案

任意输入一个4位数,求他的数字之和,(如:5173,数字之和是:16

热度:836   发布时间:2007-04-24 12:52:30.0
#include"stdio.h"
#include"math.h"
int main(void)
{
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();
}
----------------解决方案--------------------------------------------------------
以下是引用ml342418175在2007-4-23 23:34:26的发言:
楼上的能解释一下吗?看不懂哦。
for( ; n!=0 ; )
{
a+=n%10;
n=n/10;
}
这段什么意思,谢谢了

只要N不等于0就会无限循环下去
----------------解决方案--------------------------------------------------------

以下是引用计算机学院在2007-4-24 2:19:45的发言:

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


b=a%10; //求个位数
c=a/10%10; //求十位数
d=a/100%10; //百位数
e=a/1000; //千位数

----------------解决方案--------------------------------------------------------

以下是引用ml342418175在2007-4-23 23:34:26的发言:
楼上的能解释一下吗?看不懂哦。
for( ; n!=0 ; )
{
a+=n%10;
n=n/10;
}
这段什么意思,谢谢了


求n的最后一位,加到a里面。然后n变成原来的十分之一。循环直到n=0的时候结束。
举个例子吧,如输入n=123,
开始进行循环, a+=n%10,结果a=0+3(a的初始值是0) 。n=n/10,结果n=12。
然后n=12进行循环.....这样,就能从后往前把每一位数加起来了
不知道能否看懂


----------------解决方案--------------------------------------------------------

#include "stdio.h"
#include "string.h"
int main(void){
char arr[6],*pt=arr;
int sum=0;
fgets(arr,5,stdin);
while(*pt&&48<=*pt&&*pt<=57){
sum+=*pt-48;
printf("%d+",*pt-48);
pt++;
}
printf("\b=%d\n",sum);
return 0;
}


----------------解决方案--------------------------------------------------------
main()
{
int i, sum=0,a[4];
printf("input for intergers:\n");
for( i=0;i<4;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
printf("out:%d",sum);
printf("\n");
getch();
}
题目看错了

[此贴子已经被作者于2007-4-24 14:53:08编辑过]


----------------解决方案--------------------------------------------------------
以下是引用shabi333在2007-4-23 8:46:12的发言:
#include "stdio.h"
#include "math.h"
int main()
{int sum,n;
printf("input an integer of four bit:");
scanf("%d ",&n);
for(sum=0;n>=1;n=n/10)
{sum=sum+n%10;
}
printf("The sum of n is :%d",sum);
getch();
}

看了这么多,就4楼的写的最简便而且不管多少位都适用,只要输入的是正整数就可以了~~~
我来注释一下
#include <stdio.h>
void main()
{
int num,sum = 0; //声明一个整形变量num用来存放要计算的正整数,sum用来存放和
printf("请输入一个正整数:");
scanf("%d",&num); //键盘输入一个正整数并赋值给num
while(num > 0) //当num = 0时,循环就结束,这个循环是这个程序最关键的.一直循环到当num除以10为0时就说明num的所有位数都已经+完了。
{
sum = sum + num % 10; //输入一个正整数,取10的余就把最后一位取出来,然后加上sum
num = num / 10; //num除以10,现在的num就为把最后一位去掉后的数,比如1234,除10以后就为123
}
printf("和为:%d\n",sum);
}
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int main()
{
char str[100];
int sum=0;
scanf("%s",str);
for(int i=0 ; str[i]!='\0 ';i++ )
sum+=(str[i]-'0');
printf("%d\n",sum);
return 0
}
----------------解决方案--------------------------------------------------------
如果不是四位整数,而是任意一个整数,求每位数相加之和,那要怎么写这段程序?
----------------解决方案--------------------------------------------------------

27楼已经说了呀~~
不管多少位都适用


----------------解决方案--------------------------------------------------------