日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

四则运算3(二柱子同学的第三炼狱)

發(fā)布時間:2024/7/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四则运算3(二柱子同学的第三炼狱) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

設計思路:

1、定義類node,變量有node類型root?leftright以及string類型weight

?

2、初始化函數(shù)(以一個新節(jié)點為當前節(jié)點,根節(jié)點為null),設置一個計數(shù)器flag=0

???21初始化weight值,隨機數(shù)字或符號(若i>=3則必為數(shù)將算式限定在10個數(shù)以內(nèi))

???????2、11weight值為符號則i++且調(diào)用此初始化函數(shù),(以left為當前節(jié)點,本函數(shù)中節(jié)點為根節(jié)點。)

???????212weight為符號則i++且調(diào)用此初始化函數(shù),(以right為當前節(jié)點,本函數(shù)中節(jié)點為根節(jié)點。)

??

?

3、遍歷函數(shù)?void?inOrderTraverse(Node?node)

???31判斷node函數(shù)是否為空,為空則return

???32輸出左括號

???33?inOrderTraverse(node.left);?

???3、4輸出本節(jié)點權(quán)值

???35?inOrderTraverse(node.right);?

???3、6輸出右括號?

?

4、求值函數(shù)int?evaluateExpTree(Node)

???41?lvaluervalue并初始化為0

???4、2?如果節(jié)點為操作數(shù),返回該值

???4、3如果節(jié)點不是運算符

???????4、31遞歸計算左子樹值為lvalue?

???????4、32遞歸計算右子樹值為rvalue?

???????433根據(jù)節(jié)點計算符計算

5、判斷答案是否正確

?

代碼如下:

1 package 四則運算3; 2 3 import java.util.Scanner; 4 5 //節(jié)點類 6 class Node 7 { 8 public Node root; 9 public Node left; 10 public Node right; 11 public String weight; 12 13 public void setroot(Node r) 14 { 15 root=r; 16 } 17 18 public void setleft(Node l) 19 { 20 left=l; 21 } 22 public void setright(Node r) 23 { 24 right=r; 25 } 26 public void setweight(String w) 27 { 28 weight=w; 29 } 30 public String getweight() 31 { 32 return weight; 33 } 34 } 35 36 37 public class Test { 38 39 //控制式子長度 40 static int flag=0; 41 static String shizi=""; 42 43 //初始化樹函數(shù)(當前節(jié)點,當前節(jié)點父節(jié)點) 44 static void setTree(Node now,Node root) 45 { 46 47 now.left=new Node(); 48 now.right=new Node(); 49 now.setroot(root); 50 //用于判定是符號-1還是數(shù)字-0 51 int panding=(int)(Math.random()*2); 52 //System.out.println(panding); 53 54 if(panding==1) 55 { 56 //生成符號 57 //System.out.println("生成符號"); 58 int fuhao=(int)(Math.random()*4); 59 if(fuhao==0) now.setweight("+"); 60 if(fuhao==1) now.setweight("-"); 61 if(fuhao==2) now.setweight("*"); 62 if(fuhao==3) now.setweight("*"); 63 //System.out.println(now.getweight()); 64 setTree(now.left,now); 65 setTree(now.right,now); 66 } 67 if(panding==0) 68 { 69 //System.out.println("生成數(shù)字"); 70 now.setweight(""+(int)(Math.random()*100)); 71 flag++; 72 //System.out.println(now.getweight()); 73 } 74 75 } 76 //遍歷函數(shù)(生成算式) 77 static void inOrderTraverse(Node now){ 78 79 if(now.weight==null) return; 80 else{ 81 shizi=shizi+"("; 82 inOrderTraverse(now.left); 83 shizi=shizi+now.getweight(); 84 inOrderTraverse(now.right); 85 shizi=shizi+")"; 86 87 } 88 89 } 90 //求值函數(shù) 91 static int evaluateExpTree(Node now){ 92 int lvalue=0,rvalue=0; 93 int zhi=0; 94 //如果本節(jié)點是符號則遞歸否則返回本值 95 if(now.left.getweight()!=null){ 96 //System.out.println("是符號"+now.getweight()); 97 lvalue=evaluateExpTree(now.left); 98 rvalue=evaluateExpTree(now.right); 99 } 100 else 101 { 102 //System.out.println("是數(shù)字"+now.getweight()); 103 zhi=Integer.parseInt(now.getweight()); 104 } 105 //System.out.println("左值為"+lvalue); 106 //System.out.println("右值為"+rvalue); 107 if(now.weight.charAt(0)=='+') zhi=lvalue+rvalue; 108 if(now.weight.charAt(0)=='-') zhi=lvalue-rvalue; 109 if(now.weight.charAt(0)=='*') zhi=lvalue*rvalue; 110 if(now.weight.charAt(0)=='/') zhi=lvalue/rvalue; 111 //System.out.println("值為"+zhi); 112 return zhi; 113 } 114 115 116 public static void main(String args[]) 117 { 118 119 for(int i=0;i<10;i++){ 120 Node initial = new Node(); 121 initial.setweight("+"); 122 Node ltree=new Node(); 123 Node rtree=new Node(); 124 initial.setleft(ltree); 125 initial.setright(rtree); 126 //判斷數(shù)字位數(shù),超過則重新出題 127 while(flag==0||flag>4) 128 { 129 flag=0;setTree(ltree,initial); 130 } 131 flag=0; 132 while(flag==0||flag>4) 133 { 134 flag=0;setTree(rtree,initial); 135 } 136 137 138 inOrderTraverse(initial); 139 shizi=shizi+"="; 140 System.out.println(shizi); 141 System.out.println("請輸入答案"); 142 Scanner sca=new Scanner(System.in); 143 int answer=sca.nextInt(); 144 if(answer==evaluateExpTree(initial)) 145 System.out.println("回答正確"); 146 else 147 System.out.println("回答錯誤,正確答案是"+evaluateExpTree(initial)); 148 149 shizi=""; 150 flag=0; 151 } 152 153 154 } 155 156 }

?

?

截圖如下:

?

轉(zhuǎn)載于:https://www.cnblogs.com/hehejeson/articles/5322971.html

總結(jié)

以上是生活随笔為你收集整理的四则运算3(二柱子同学的第三炼狱)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。