咋們繼續沒有做完的題
實戰演練下
3.14編寫程序,提示用戶輸入一個在1-15之間的整數
/*
數據:給出的數字模型
1.for循環每個的行數
2.for循環沒行的空隔
3.for循環每行的列數
分析
4 3 2 1 2 3 4
-3 -2 -2 0 1 2 3
第4行 x∈[-3,3] y=|x|+1
第5行 x∈[-4,4] y=|x|+1
*/
import java.util.Scanner;
class Demo03_14{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("請輸入行數:");
int line=scanner.nextInt();
for(int i=1;i<=line;i++){ //行數
for(int k=1;k<=(line-i);k++){ //空格
System.out.print(" ");
}
for(int x=-(i-1);x<=i-1;x++){ //列
if(line<10){
System.out.printf("%-2d",Math.abs(x)+1);
}else{
System.out.printf("%-3d",Math.abs(x)+1);
}
}
System.out.println();
}
}
}
%-3d表示的是向左對齊,不夠的補空格
3.15使用嵌套的循環語句,用四個獨立的程序打開
/*
數據:給出的數字模型
步驟:
1.for循環每個的行數
2.for循環每行的列數
*/
class Demo03_15{
public static void main(String[] args){
//第一個
for(int i=1;i<=6;i++){ //行數
for(int j=1;j<=i;j++){ //列
System.out.print(j+" ");
}
System.out.println();//換行
}
//第二個
System.out.println("==========");
for(int i=1;i<=6;i++){ //行數
for(int j=1;j<=7-i;j++){ //列
System.out.print(j+" "); //輸出數字
}
System.out.println(); //換行
}
//第三個
System.out.println("==========");
for(int i=1;i<=6;i++){ //行數
for(int k=1;k<=6-i;k++){ //空格數
System.out.print(" ");
}
for(int j=i;j>=1;j--){
System.out.print(j+" "); //輸出數
}
System.out.println();///換行
}
//第四個
System.out.println("==========");
for(int i=1;i<=6;i++){ //行數
for(int k=1;k<=i-1;k++){ //每行空格數
System.out.print(" "); //列
}
for(int j=1;j<=7-i;j++){
System.out.print(j+" ");
}
System.out.println();
}
}
}
3.16打印金字塔形狀的數字
/*數據:數據:給出的數字模型
1.for循環每個的行數
2.for循環沒行的空隔
3.for循環每行的列數
分析:
第4行
1 2 4 8 4 2 1
0 1 2 3 2 1 0
x -3 -2 -1 0 1 2 3
第5行
1 2 4 8 16 8 4 2 1
0 1 2 3 4 3 2 1 0
x -4-3-2-1 0 1 2 3 4
class Demo03_16{
public static void main(String[] args){
for(int i=1;i<=8;i++){
for(int k=1;k<=8-i;k++){
System.out.print(" ");
}
for(int x=-(i-1);x<=i-1;x++){
System.out.printf("%4d",(int)Math.pow(2,i-1-Math.abs(x)));
}
System.out.println();
}
}
}
/*
提示:
對於打印一些對稱性的三角形圖案或者是類似的問題
儘量向絕對值考慮
*/
3.17打印2-1000包括2和1000之間的所有素數,每行顯示8個素數,數字之間用一個空格字符隔開
步驟:1.輸入一個整數
2.從2開始除,知道自己本身,如果,除的過程當中有餘數爲0的,證明他不是素數,反之
/*
思路分析:
素數就是這個數從2開始一直到除自己以外的數相除有餘數
*/
class Demo03_17{
public static void main(String[] args){
int count = 0; //標記素數的個數
for(int num = 2;num <= 1000;num++){ //2-1000的數
boolean flag = true; //對這個數標記,一開始爲true
for(int i = 2;i <= num - 1;i++){
if(num % i == 0){
flag = false; //不是素數爲false
break;
}
}
if (flag){
count++;
System.out.println(num); //輸出素數
if(count%8 == 0){ //一行輸出8個數
System.out.println();
}
}
}
}
}
3.18計算π
咋們對於這道題的思路,分母是2i-1,但是他偶數的時候是負數,所以,咋們可以加一句flag =-flag;他沒執行完一次,就去負,剛好滿足了,偶數爲負的需求
class Test18{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.println("請輸入一個數字:");
int imax=in.nextInt();
double sum=0;
double flag = 1;
for(int i=1;i<=max;i++){
//sum+=Math.pow(-1.0,i+1)/(2*i-1);
sum+=flag/(2*i-1);
flag=-flag;
}
double pi=sum*4;
System.out.println(pi);
}
}
3.19計算e
分析這道題,可以看到分母均爲階層,所以,我們可以把1看爲是1/0!
import java.util.*;
class Test19{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.println("請輸入一個數字:");
int imax = in.nextInt();
double e=1;
double item = 1.0;
for(int i=1;i<=imax;i++){
item=item*i;
e+=1/item;
}
System.out.println(e);
}
}
3.20編寫程序,顯示從101到2100期間所有的閏年,每行顯示10個,數字之間用一個空格字符隔開,同時顯示着期間閏年的數目。
咋們需要知道閏年怎麼算的,年份%4==0或者年份%100!=0,還有就是特殊的年份,例如千禧年,他是年份%400==0
class Test20{
public static void main(String[] args){
int count=0;
for(int i=101;i<=2100;i++){
if(i%4==0&&i%100!=0||i%400==0){
count++;
System.out.println(i+" ");
if(count%10==0){
System.out.println();
}
}
}
System.out.println("\n閏年一共"+count+"個");
}
}
3.21完全數
步驟:1.輸入一個整數
2.從2開始除,如果他的餘數爲0就進行相加,直到沒有沒有之時,
3.若是相加的結果,與輸入的整數相等,則輸出
class Test21{
public static void main(String[] args){
for(int n=2;n<=10000;n++){
int sum=0;
for(int i=1;i<=n/2;i++){
if(n%i==0){
sum+=i;
}
}
if(n==sum){
System.out.println("完全數"+n);
}
}
}
}
3.22剪刀石頭布,連續玩這個遊戲
可以在原先的程序之上,加一些條件,當**爲2時,誰贏
import java.util.Scanner;
pubilc class Test22{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int usrWin=0;
int comWin=0;
while(true){
System.out.println("請輸入 剪刀0 石頭1 布2:");
int usr = scanner.nextInt();
int com = random.nextInt(3);/*Random隨機函數*/
String usrStr="";
String comStr="";
switch(usr){
case 0:
usrStr = "剪刀";
break;
case1:
usrStr = "石頭";
break;
case 2:
usrStr = "布";
break;
}
swith(com){
case 0:
comStr = "剪刀";
break;
case 1:
comStr = "石頭";
break;
case 2:
comStr = "布";
break;
}
if(usr==com){
System.out.printf("用戶是%s,電腦是%s,平局",usrStr,comStr);
}else if(usr==0&&com==2 || usr==1&&com==0 || usr==2&&com==1){
System.out.printf("用戶是%s,電腦是%s,用戶贏",usrStr,comStr);
usrwin++;
}else{
System.out.printf("用戶是%s,電腦是%s,用戶輸",usrStr,comStr);
comwin++;
}
if(usrWin==2 || comWin==2){
break;
}
}
if(usrWin==2){
System.out.println("最終玩家贏!");
}
else{
System.out.println("最終電腦贏!");
}
}
}
3.23
十進制到二進制,提示用戶輸入十進制整數,然後顯示對應的二進制值,這個程序不要使用Java的Interger方法
思路:十進制到二進制,就是一直除二,直到1,然後他們的餘數從下到上進行輸出,所以,咋們可以他每次取餘,咋們就將結果加到字符串上
Class Test23{
public static void main(String[] args){
Scanner in =new Scanner(System.in);
System.out.println();
int sum = in.nextInt();
String binStr=" ";
While(true){
binStr=num%2+binStr;
num/=2;
if(num==0){
break;
}
}
System.out.println(binStr);
}
}
3.24最大數的出現次數
步驟:1.首先輸入一串數字
2.兩兩進行比較,如果大於,就賦值,繼續比較,如果後面有與最大數一樣的數字就加1
import java.util.Scanner;
class Test24{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int num=0;
int max=0;
int count=0;
System.out.print("請輸入數字:");
while(true){
num=scanner.nextInt();
if(num==0){
break;
}else if(num>max){
max=num;
count=1;
}else if(num==max){
count++;
}
}
System.out.println("max="+max+",count="+count);
}
}
給大家分享一個桌面壁紙