主题:简单小程序帮帮忙啊~
			
 DragonCat
				 [专家分:0]  发布于 2003-07-02 21:04:00							
			谁能帮我编下啊~谢谢了啊~
int num
计算出所有各位上得数字总和,比如数字是1256,SUM=1+2+5+6=14;
请大家帮帮忙啊~!!!
						
					 
		
			
回复列表 (共16个回复)
		
								
				沙发
				
					
hoofa [专家分:550]  发布于 2003-07-02 21:10:00				
				可以先把数字转换成字符串 用itoa()函数
							 
						
				板凳
				
					
DragonCat [专家分:0]  发布于 2003-07-02 21:16:00				
				不行的~要能接受输入任意的INT数~
听人家说取模啊~我不会用啊~
							 
						
				3 楼
				
					
ulinzi [专家分:0]  发布于 2003-07-02 22:24:00				
				怎样计算数字的长度啊?
							 
						
				4 楼
				
					
meteor135 [专家分:6060]  发布于 2003-07-02 22:50:00				
				取以10为底的对数再加1。
比如你输入的是299,log299的整数部分就是2,如果是1244,整数值就是3
知道了数的位数之后求每一位的值就很简单了。
用n表示你输入的整数,
int m = n/(10*((int)(log(n))+1));m就是最高位,然后
n-m*10^(log(n)+1)就是丢掉最高位之后的次高位,依次类推,只要控制好循环,问题就解决了。
等着看你的好消息!
 
							 
						
				5 楼
				
					
天字号药店 [专家分:1010]  发布于 2003-07-03 06:00:00				
				还有一个取模的方法
int total = 0 ; //数字总和
while (num)     
{
    total = total + num % 10 ;  //num % 10  取个位上数字, 例对于1256 , num %10 为6 
     num  = num / 10 ;          //num / 10  将num 向后移位对于1256, num / 10 为125 
}
num
							 
						
				6 楼
				
					
spg [专家分:210]  发布于 2003-07-03 09:41:00				
				还是药店厉害啊,简单明了
							 
						
				7 楼
				
					
jy00806571 [专家分:0]  发布于 2003-07-03 20:04:00				
				同意药店的设计思想,我也有取模的想法,只是位数推移更加简化程序,不知道还有否更为简单的设计思想!
							 
						
				8 楼
				
					
hoofa [专家分:550]  发布于 2003-07-03 21:22:00				
				/*一般的算法,绝对可用*/
#include<stdio.h>
void main()
{
    int num=123456,s=0,t;
    while(num>0)
    {
        t=num;
        num=num/10;
        s+=t-num*10;
    }
    printf("%d",s);
}
							 
						
				9 楼
				
					
lheng [专家分:1490]  发布于 2003-07-03 21:37:00				
				此程序是小弟用数组和ascii码搞出来的,不过有小小漏洞,请见谅:
  #include<iostream.h>
#include<conio.h>
#include<stdio.h>
void main()
{
    int size,n,sum=0,a;
    int *num;
    puts("请问你所要输入的整数是几位:");
    cin>>size;
    puts("请你输入一个整数:");
    num=new int[size+1];
    for(n=0;n<size;n++)
    {    num[n]=getche();
      a=num[n]-48;
      sum+=a;
    }
    cout<<endl<<"你所输入的整数的各位数相加后的结果是:"<<sum<<endl;
    delete []num;
}
							 
						
				10 楼
				
					
hoofa [专家分:550]  发布于 2003-07-03 21:52:00				
				/*仅供高手研究*/
#include <stdio.h>
#include<stdlib.h>
void main()
{
    int num=12345,s=0;char *p;
    p=(char *)malloc(30);
    itoa(num,p,10);
    while(*p)
    {
        s+=*p-'0';
        p++;
    }
    printf("%d",s);
}
							 
									
			
我来回复