1:输入整数a和n,输出结果s,其中s与a、n的关系是:s=a+aa+aaa+aaaa+aa...a,最后为n个a。例如a=2、n=3时,s=2+22+222=246。
public class Demo1 {
public static void main(String[] args) {
int a,s,n;
long sum=0;
Scanner sin=new Scanner(System.in);
System.out.println("请输入a和n:");
a=sin.nextInt();
n=sin.nextInt();
String str="";
s=0;
for(int i=1;i<=n;i++)
{
s*=10;
s+=a;
if(i==n)
{
str+=s;
}else
{
str+=s+"+";
}
sum+=s;
}
System.out.println(str+"="+sum);
}
}
2:打印出2-99之间的同构数,同构数是指这个数为该数平方的尾数,如5的平方为25,6的平方为36,25的平方为625。
public class Demo2 {
public static void main(String[] args) {
int a;//平方值
int b;//尾数
for(int i=2;i<=99;i++)
{
a=i*i;
if(i<=10)
{
b=a%10;//尾数取一位
}
else
{
b=a%100;//尾数取两位
}
if(i==b)
{
System.out.println(i+"是同构数,平方是:"+a);
}
}
}
}
3:输入两个正整数m和n,输出其最大公约数和最小公倍数。
最大公约数:辗转取余法
最小公倍数:m*n/最大公约数
注意:
l 大数除以小数,所以要判断,保证m中是大数(交换)
l m和n的值因为辗转会发生改变,为了保证最小公倍数的计算,所以要将m和n的原值先保存起来
m,n,r,a,b,temp
public class Demo3 {
public static void main(String[] args) {
int m,n,r;//分别表示键盘上接收的两个数和求出的余数(r)
int a,b;//保存m,n的原值(后面的辗转会改变m,n的值)。为了计算最小公倍数,需要原值
int temp;//中间变量。有可能用户在m中保存小值,但程序要求m保存大值,算法要求大值取小值的模
Scanner sin=new Scanner(System.in);
System.out.println("请输入m和n:");
m=sin.nextInt();
n=sin.nextInt();
//保留原值
a=m;
b=n;
if(m<n)//如果m小于n,则交换
{
temp=m;
m=n;
n=temp;
}
//辗转取余法
do
{
r=m%n;
m=n;//上一次的除数变为被除数
n=r;//上一次的余数变为除数
}while(r!=0);
System.out.println(a+"和"+b+"的最大公约数是:"+m);
System.out.println(a+"和"+b+"的最小公倍数是:"+(a*b)/m);
}
}
试题4:输出1+2!+3!+...+20!的结果。
public class Demo4 {
public static void main(String[] args) {
long result=1;//表示阶乘的结果,阶乘即累乘
long sum=0;//阶乘的和,初值为0;
for(int i=1;i<=20;i++)
{
result*=i;//计算数字i的阶乘
sum+=result;
}
System.out.println("1+2!+3!+……+20!="+sum);
}
}