首先想想在C语言中,这道题怎么做,思路是什么?
其次想想在Java中,有什么不同,要如何改变?
第一题 代码如下
package 第一次作业;
import java.util.Scanner;
public class number {
public static void main(String[] args) {
Scanner number=new Scanner(System.in);
int m=number.nextInt();
int n=number.nextInt();
int t,p,r,max,min;
if(n<m)
{ t=n;
n=m;
m=t;
}
p=m*n;
while(m!=0)
{ r=n%m;
n=m;
m=r;
}
System.out.println(n);
System.out.println(p/n);
}
}
想想如何输入两个整数,如何求最大公约数和最小公倍数?
结果如下
第二题 代码如下
package 第一次作业;
import java.util.Scanner;
public class Max {
public static void main(String[] args) {
int count=1,max,min,a;
float sum;
Scanner number = new Scanner(System.in);
a=number.nextInt();
max=a;
min=a;
sum=a;
while(number.hasNextInt())
{
a=number.nextInt();
if(max<a)
max=a;
if(min>a)
min=a;
count++;
sum+=a;
}
System.out.printf("%d个数的平均数是%f\n",count,sum/count);
System.out.println(max);
System.out.println(min);
}
}
第一个难点是如何输入若干个数,这就需要先对Java语言的输入有一定了解。
怎么样输入,什么时候停止,怎么样表示?
结果如下
第三题 代码如下(两种)
package 第一次作业;
public class 第一次作业 {
public static void main(String[] args) {
System.out.println("101-199中的所有素数:");
int m,n;
for(m=101;m<200;m+=2)
{ int k=(int) Math.sqrt(m);
boolean isPrime =true;
for(n=2;n<=k;n++)
{ if(m%n==0)
isPrime=false;
}
if(isPrime)
System.out.printf("%d\t",m);
}
}
}
package 第一次作业;
import java.util.Scanner;
public class homework {
public static void main(String[] args) {
int m,n;
outer: for(m=101;m<200;m+=2)
{ for(n=2;n<=m/2;n++)
if(m%n==0)
continue outer;
System.out.printf("%d\t",m);
}
}
}
两种其实都一样,区别在于第一种用布尔值来判断其是否为素数,如果是,则布尔值为1,反之,布尔值为0. 第二种是用continue语句将不是素数的情况跳过,进行下一循环。两者结果都一样。