2020/07/13-Java循环结构练习题(打印杨辉三角、打印0-7组成的所有奇数,各个位数上的数字无重复)
一、打印出杨辉三角形(要求打印出10行如下图)
- 程序分析:
- 1
- 1 1
- 1 2 1
- 1 3 3 1
- 1 4 6 4 1
- 1 5 10 10 5 1
- 思路:
- 首先每一行第一个数都是1
- 每一行数字的规律是:1; i/1; i(i-1)/12; (i-1)(i-2)/23;… int i =0
- 重点:分析每一行数字特点与i的关系,也要注意i的起始值设置是0
- 例如对于第3行:1,2,1
- 令v=1; a=i,
- i=2代表第三行, v=v*a a–; 输出:v=v/j,其中 定义int j=0,j=0,表示第一列中的第1个数字,j=1表示一列中第二个数字
/**
*/
public class test15 {
public static void main(String[] args) {
int num = 5;
for (int i = 0; i < num; i++) {
int v = 1;
int a = i;
for (int j = 0; j <= i; j++) {
int b = j;
if(b==0)
System.out.print(1+" ");
else {
System.out.print((v = v / j) + " ");
}
v=v*a;
a--;
}
System.out.println();
}
}
}
二、求0-7所能组成的奇数个数
分析思路:
-
个位1,3,5,7时才为奇数
-
分别计算2位数,3位数,4位数…的奇数数目,例如:
-
2位数,就有6*4种可能 因为最高位(首位)不能为0,所以是7-1=6种可能
-
3位数,就有664种,出去首位一个数,和个位一个数,第二位又8-2=6种
-
4位数,就有665*4种可能
-
所以2位数时应该单独写,2以后的数字可以根据循环规律写
*/
public class test16 {
public static void main(String[] args) {
int total = 4;
for (int i = 2; i <=8 ; i++) {
//外层循环定义位数
int sum = 4;
for (int j = 1; j < i; j++) {
if (j==1){
sum=sum*6;
}else {
sum=sum*(8-j);
}
}
total+=sum;
}
System.out.println(total);
}
}
三、求1000以内质数和非质数的正差值
- 思路:
- 2是质数,1既不是质数也不是合数
- 质数+合数+1=所有数
- 先求出质数,再用总和-质数总和=非质数总和
public class khzy2 {
public static void main(String[] args) {
int j = 0;
int sum = 2;
int num = 0;
int s = 0;
for (int i = 1; i <1000 ; i++) {
num=num+i;
}
System.out.println(num);
for (int i = 2; i <1000 ; i++) {
for ( j = 2; j <i ; j++) {
s =i%j;
if (s==0){
break;
}
}
if (s!=0){
sum = sum + i;
}
}
System.out.println("质数:"+sum);
int n = num - sum;
int k = n - sum;
System.out.println(k);
}
}
四、随机产生6个1~ 33之间的随机数,和一个1~15之间的随机数,这7个数不能重复。
- 思路:
- 1、int n = (int)(Math.random()10); 产生的时 0-9之间的随机数,故34会产生0-33之间的随机数
- 2、由于各数不能重复,加一个||语句,确保每两个数两两比较互不相等。
- 3、不相等则打印出7个数,相等则使用contiune语句,退出本次循环,继续下一次循环。
public class khzy1 {
public static void main(String[] args) {
int flag = 0;
do {
int num1 = (int) (Math.random() * 34);
int num2 = (int) (Math.random() * 34);
int num3 = (int) (Math.random() * 34);
int num4 = (int) (Math.random() * 34);
int num5 = (int) (Math.random() * 34);
int num6 = (int) (Math.random() * 34);
int num7 = (int) (Math.random() * 16);
if ((num1!=num2)||(num1!=num3)||(num1!=num4)||(num1!=num5)||(num1!=num6)
||(num1!=num7)||(num2!=num3)||(num4!=num2)||(num5!=num2)||(num6!=num2)
||(num7!=num2)||(num4!=num3)||(num5!=num3)||(num6!=num3)||(num7!=num3)||
(num4!=num5)||(num4!=num6)||(num4!=num7)||(num4!=num2)||(num5!=num6)||(num5!=num7)||(num6!=num7)
){
flag = 1;
System.out.println(num1+" "+num2+" "+num3+" "+num4+" "+num5+" "+num6+" "+num7+" ");
};
}while (flag == 0);
}
}