【1】
题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
程序:
public class test {
public static void main(String[] args){
int i,j,k,n;
for(n=100;n<=999;n++){//将3位数的个十百位拆分出来分位循环
for(i=1;i<=9;i++)//
for(j=0;j<=9;j++)//
for(k=0;k<=9;k++){//注意这三个循环同时进行,在一层括号中,不能分三层
n=i*100+j*10+k;
if(n==i*i*i+j*j*j+k*k*k){
System.out.println(n);
}
}
}
}
}
【2】
题目:输出1-100之间所有的素数
程序:public class test {
public static void main(String[] args){
int i,j,k,n;
for(n=100;n<=999;n++){//将3位数的个十百位拆分出来分位循环
for(i=1;i<=9;i++)//
for(j=0;j<=9;j++)//
for(k=0;k<=9;k++){//注意这三个循环同时进行,在一层括号中,不能分三层
n=i*100+j*10+k;
if(n==i*i*i+j*j*j+k*k*k){
System.out.println(n);
}
}
}
}
}
【3】
题目:输出前100个素数
程序:public class susu1 {
public static void main(String[] args) {
susu1 a = new susu1();//3-6行对此程序无用,只是为了大家了解下java的基本流程
a.sushu();//
}//
void sushu() {//
int count = 0;
int flag = 1;
System.out.println("前100个素数:");
for (int x = 2; count < 100; x++) {//用数量count控制循环次数
double k = java.lang.Math.sqrt(x + 1);//double类型和int类型向上兼容,即可以在int中使用double类型
for (int i = 2; i <= k; i++) {
if ((x % i) == 0) {
flag = 0;
break;
}
}
if (flag == 1) {
System.out.println(x);
count++;//每成功一次,计数增加一次,循环99次停止
}
flag = 1;
}
}
}
【4】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:利用辗除法。
程序:public class maxmin {
/**
* 求两个数的最大公约数
* @param m
* @param n
* @return
*/
public static int Max(int m, int n) {
int r;
while(n != 0) {
r = m % n; //通过循环取到r=0的m即为最大公约数
m = n; //循环赋值
n = r; //循环赋值
}
return m;
}
/**
* 求两个数的最小公倍数
* @param m
* @param n
* @return
*/
public static int Min(int m, int n) {
return m * n / Max(m, n);
}
public static void main(String[] args) {
System.out.println("最大公约数 : (36, 26) = " + maxmin.Max(36,26));
System.out.println("最小公倍数 : (36, 26) = " + maxmin.Min(36,26));
}
}
【5】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
程序分析:采取逆向思维的方法,从后往前推断。
程序:public class monkey {
public static void main(String[] args){
int i,n=1;//逆序考虑,从第十天往第一天推
for(i=1;i<9;i++){//当for循环内部没有i值时,for循环控制循环次数
n=2*n+2;
}
System.out.println(n);
}
}
【6】
题目:打印出如下图案(菱形)
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
程序:
public class sharp {//整个图形分四部分输出
int i,j,k;
public void sh(){
for(i=1;i<=4;i++){//前两部分,1-4行规律相同
for(k=0;k<=3-i;k++)//打印空白部分
System.out.print("\t");
for(j=1;j<=2*i-1;j++)//打印星星
System.out.print("*"+"\t");
System.out.println();//换行
}
for(i=5;i<=7;i++){//后两部分
for(k=1;k<=i-4;k++)//打印空白
System.out.print("\t");
for(j=1;j<=16-2*i-1;j++)//打印星星
System.out.print("*"+"\t");
System.out.println();
}
}
public static void main(String[] args){
sharp shh=new sharp();
shh.sh();
}
}
【7】
题目:求一个3*3矩阵对角线元素之和
程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
程序:
public class square {
public static void main(String[] args){
int i,j,k,sum=0;
int[][] a={{3,6,4},{3,9,6},{2,5,9}};//初始化数组
for(i=0;i<3;i++){
sum+=a[i][i];//累加
for(j=0;j<3;j++){
k=a[i][j];//取值
System.out.print(k+"\t");//输出
}
System.out.println();
}
System.out.print("sum="+sum);
}
}
【8】
题目:打印9*9的矩阵形式的99表
程序:
public class plus {
public static void main(String[] args){
int i,j;
for(i=1;i<=9;i++){//
for(j=1;j<=9;j++){//for循环嵌套,保证打印到所有值
System.out.print(i*j+"\t");//输出直接用表达式i*j,也可以在前面声明变量,然后用此表达式赋值
}
System.out.println();
}
}
}
【9】
题目:打印杨辉三角前10行
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
程序:
public class triangel {
public static void main(String[] args){
int i,j;
int[][] a=new int[11][11];//创建一个引用指向一个初始化数组,用来储存杨辉三角中的值
for(i=0;i<=10;i++){
a[i][0]=1;//把最左边的特殊的一列输出
a[i][i]=1;//把对角线列输出
for(j=0;j<=i;j++){
if(j<i){
a[i+1][j+1]=a[i][j+1]+a[i][j];//普通数值按此算法输出
}
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
}
}
【10】
题目:给定一个数组,按从小到大的顺序输出
程序:
public class ee {
int[] a={11,33,21,17,9};
public void sort() {
int temp;
for(int i = 0; i < 5; i++){
for(int j = i + 1;j < 5; j ++){ //for循环嵌套,保证每两个数都能比较到
if(a[i] >a[j]){
temp = a[i]; //如果前者比后者大,换位
a[i] = a[j]; //
a[j] = temp; //
}
}
System.out.println(a[i]);
}
}
public static void main(String[] args){
ee e=new ee();
e.sort();
}
}
【11】给定一个数组,逆序输出(奇数个元素)
程序:
public class swap1 {
public static void main(String[] args){
int i,temp;
int[] a={1,2,3,4,5,6,7};//初始化一个数组
for(i=0;i<3;i++){//数组中间拆分
temp=a[i];//对位交换
a[i]=a[6-i];//
a[6-i]=temp;//
System.out.print(a[i]+"\t");//对应输出前半段数组
}
System.out.print(a[3]+"\t");//若是奇数数组,输出数组中间的那个值
for(i=0;i<3;i++)
System.out.print(a[4+i]+"\t");//对应输出后半段数组
}
}
【12】给定一个数组,逆序输出(偶数个元素)
程序:
public class swap {
public static void main(String[] args) {
int i, temp;
int[] a = { 1, 2, 3, 4, 5, 6 };//初始化一个数组
for (i = 0; i < 3; i++) {//数组对半拆分
temp = a[i];//对位交换
a[i] = a[5 - i];//
a[5 - i] = temp;//
System.out.print(a[i] + "\t");//输出前半段数组
}
for (i = 0; i < 3; i++)
System.out.print(a[3+i] + "\t");//输出后半段数组
}
}
【13】给定一个数组,输出最大值和最小值
程序:
public class aa {
int[] a = { 1, 3, 5, 7, 9 };//初始化数组
public void Max() {
int i, max = a[0],min=a[0];//初始化最大值最小值为数组第一个元素
for (i = 1; i <= 4; i++) {
if (a[i] > max) {//如果数组元素比最大值大,将这个元素赋值给最大值
max = a[i];//
}
if(a[i]<min){//如果数组元素比最小值小,将这个元素赋值给最小值
min=a[i];//
}
}
System.out.println("max=" + max);
System.out.println("min=" + min);
}
public static void main(String args[]) {
aa a = new aa();//此处对本程序无用,只是为了遵循java的基本流程,让大家更深刻了解java
a.Max();
}
}