题目大意:
有一个大家熟知的技巧, 如果一个N是9 的倍数,那么他的每位数字的和也是9的倍数, 基于递归测试, 求递归深度
代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s ;
while(cin>>s)
{
if(s.length() == 0 || s[0] == '0')
{
break;
}
int sum = 0;
for(int i = 0 ; i < s.length(); i++)
{
sum +=s[i] -'0';
}
int dep = 0;
int is9mul = 0;
if(sum %9 ==0)
{//如果一个数是9的倍数,那么他肯定是能一直递归下去的
is9mul = 1;
dep = 1 ; //开始的时候,只要能被9整除那么深度就是1
}
while(sum%9 == 0 && sum>9)
{
int temp = sum;
sum = 0;
while(temp)
{
sum += temp%10;
temp /=10; //
}
dep++;
}
cout << s << " is ";
if (!is9mul) cout << "not ";
cout << "a multiple of 9";
if (dep) cout << " and has 9-degree " << dep;
cout << "." << endl;
}
return 0;
}
关于java 基础:
1. 一个. java 源文件, 中可以包括多个类么?有什么限制?
可以有多个类, 但是只能有一个public 类, 并且public 类的名字,必须和文件名是一致的
2. java有没有goto 语句
是java 保留字, 现在已经不适用了
3. 在java中如何跳出当前的多重嵌套循环
在java 中使用带标号的Break 语句
ok :
for(int i = 0 ; i < n ; i++)
{
for(int j = 0 ; j < k ; j++)
{
System.out.println("i = " i + "j = " + j);
if (j == 5) break ok;
}
}
这样就可以跳出多个循环
当然也可以不适用这个带标号的循环, 可以用一个标志位 flag 在第一重循环, 使用标识位, 在最后循环体内,
4.switch 语句能否作用在byte 上, 能否作用在long 上, 能否作用在 String上
swith(