C++ 如何用一位数字求和?
我正在做一个数字求和的程序,看看这个程序:C++ 如何用一位数字求和?,c++,C++,我正在做一个数字求和的程序,看看这个程序: #include<iostream> using namespace std; int main(){ int i, j; int sum=1; cout<<"Enter your sum: "<<endl; cin>>i; while(i>0){ j=i%10; sum=sum+j; i=i/10;
#include<iostream>
using namespace std;
int main(){
int i, j;
int sum=1;
cout<<"Enter your sum: "<<endl;
cin>>i;
while(i>0){
j=i%10;
sum=sum+j;
i=i/10;
}
cout<<"Sum: "<<sum;
cout<<endl;
}
当然,它会给我一个输出作为1
import java.util.*;
public class SingleDigit
{
public static void main(String[] args)
{
int number = 0, temp = 0, result = 0;
Scanner inp = new Scanner(System.in);
System.out.print("Enter the Number :");
number = inp.nextInt();
temp = number;
while(temp>0)
{
result = result + (temp%10);
temp = temp/10;
if(result > 9)
result = (result % 10)+(result / 10);
}
System.out.println("Single Digit Number for the Number "+number+" is :" result);
System.out.println("Thank You KING....");
}
}
但是当我输入一个数字时,它会给我一个输出。。但我要数字的总和
如果我输入185
输出必须假定为
1+8+5=14
1+4=5
并且输出必须是
5
。。所以请帮我解决这类问题。您所描述的被称为a。有趣的是,它可以通过简单地确定除以9时的余数来计算,而0被9代替
unsigned digitalRoot(unsigned i)
{
return 1 + (i-1)%9; // if i%9==0, (i-1)%9==8 and adding 1 yields 9
}
digitalRoot(185)
是5
,因为185=9*20+5
当我输入输出为25时,它会给我输出为7
不,它实际上是8
()。问题是您将sum
初始化为1
,而不是0
要使总和达到一位数,请在程序中添加另一个循环:
for (;;) { // Loop until the break is reached
while(i>0){
j=i%10;
sum=sum+j;
i=i/10;
}
if (sum < 10) break; // It's single digit
i = sum;
sum = 0;
}
(;;){//循环的,直到达到中断
而(i>0){
j=i%10;
sum=sum+j;
i=i/10;
}
if(sum<10)break;//是个位数
i=总和;
总和=0;
}
您可以尝试以下方法:
while(i>0){
j=i%10;
sum=sum+j;
i=i/10;
if (i == 0 && sum >= 10) // if all the digits of previous number is processed and sum is not a single digit
{
i = sum;
sum = 0;
}
}
请注意,没有嵌套循环
不要忘记将
sum
初始化为0
而不是1
您只需重复该过程,直到结果为一个位数。重复->你需要一个(n个外)环。@KarolyHorvath;不需要使用外环。@rajivmishra,由你决定。对我来说,两个循环以一种更清晰的方式向读者展示了代码背后的意图,因为如果你想用铅笔和纸运行算法,你基本上要写下算法的功能。对我来说,将两个逻辑循环压缩成代码中的一个循环是错误的,但这只是我的观点。C++被标记为问题。
import java.util.*;
public class SingleDigit
{
public static void main(String[] args)
{
int number = 0, temp = 0, result = 0;
Scanner inp = new Scanner(System.in);
System.out.print("Enter the Number :");
number = inp.nextInt();
temp = number;
while(temp>0)
{
result = result + (temp%10);
temp = temp/10;
if(result > 9)
result = (result % 10)+(result / 10);
}
System.out.println("Single Digit Number for the Number "+number+" is :" result);
System.out.println("Thank You KING....");
}
}