java经典问题——兔子问题

合集下载

java编码基础练习题

java编码基础练习题
+ page + "页,当前是第" + page + "页,从"
+ startrow + "条到" + endrow + "条");
三、逻辑判断语句
1.输入一个数字,判断是一个奇数还是偶数
2.将分页显示的功能增加判断,如果用户输入的小于1的页码,自动赋成1,如果超出了总页码,自动赋成总页码
3.判断一个数字是否能被5和6同时整除(打印能被5和6整除),或只能被5整除(打印能被5整除),或只能被6整除,(打印能被6整除),不能被5或6整除,(打印不能被5或6整除)
8.从命令行传入3个整数,求3个整数的和、积、最大值、最小值、平均值
9.将以上3个数字,从小到大排列,然后再从大到小排列。
10.输入年和月,得到这个月有多少天
11.续上题,输入年,月,日,判断这个日期是否是一个正确的日期
12.续上题,输入年,月,日,next|prior,如果是一个正确的日期,算出上一天或下一天
18.输入年月日,判断这是这一年中的第几天(TestWhatDay)
Scanner sc =newScanner(System.in);
intyear = sc.nextInt();
intmonth = sc.nextInt();
intday = sc.nextInt();
intsum = 0;//总天数
else
System.out.println(-c);
5.输入一个年份,判断这个年份是否是闰年
6. 输入一个0~100的分数,如果不是0~100之间,打印分数无效,根据分数等级打印A,B,C,D,E

母牛问题

母牛问题

原题目如下:一个农场有头母牛,现在母牛才一岁,要到四岁才能生小牛,四岁之后,每年生一头小牛。

假设每次生的都是母牛,并且也遵守4年才能生育并生母牛的原则,并且无死亡,请问N年后共有过少头牛?看到这个题目的时候猛地想笑,这没有公牛,母牛能生小牛吗?呵呵不过这也仅仅是个问题而已废话少说,开始正题。

其实这是一类经典的题目,早在接触C语言的时候就有这种类型的题目,不过说的是兔子,在此小弟也将那个问题搬来了,做个参考:有一兔子,从出生后第3个月起每个月都生一兔子。

小兔子长到第3个月后每个月又生一兔子。

假设所有兔子都不死,问每个月的兔子总是为多少?可以从下表中看出兔子繁殖的规律:C语言的解法如下:#include <stdio.h>void mian(){long int f1 ,f2;int i;f1=1;f2=1;for(i=1;i<20;i++){printf(“%12ld %12ld”,f1,f2);if(i%2==0) printf(“\n”); /*确保四个数字一行*/f1=f1+f2;f2=f2+f1;}}至于运行结果,有兴趣的盆友可以自己运行一下。

下边是用Java 解决这个问题的代码,结合上边这个例子很容易看懂本题代码的含义。

解决这样一个经典的问题以下是小弟的见解仅供参考public class Cattles {/***@param args*/public static void main(String[] args){// TODO Auto-generated method stublong f1=1,f2=1,f3=1,f4=1;int i;for(i=1;i<=10;i++){System.out.println(f1);System.out.println(f2);System.out.println(f3);System.out.println(f4);f1=f1+f4;f2=f2+f1;f3=f3+f2;f4=f4+f3;}}}希望可以有所帮助。

JAVA习题(JAVASE)

JAVA习题(JAVASE)

JAVA习题一、选择题1.下列哪一种叙述是正确的()A. abstract修饰符可修饰字段、方法和类B.抽象方法的body部分必须用一对大括号{ }包住C.声明抽象方法,大括号可有可无D.声明抽象方法不可写出大括号2.如下代码public class Test {public int aMethod() {static int i = 0; //方法体内不能定义全局变量。

i++;return i;}public static void main (String args[]) {Test test = new Test();test.aMethod();int j = test.aMethod();System.out.println(j);}}输出结果是什么?A. 0B. 1C. 2D. 编译失败3.下列哪种说法是正确的()A.实例方法可直接调用超类的实例方法//私有和子类重写的方法B.实例方法可直接调用超类的类方法//私有精选文库C.实例方法可直接调用其他类的实例方法D.实例方法可直接调用本类的类方法4.如下代码:class Super {public Integer getLenght() { return new Integer(4); }}public class Sub extends Super {public Long getLenght() { return new Long(5); }public static void main(String[] args) {Super sooper = new Super();Sub sub = new Sub();System.out.println(sooper.getLenght().toString() + "," +sub.getLenght().toString() );}}输出是什么?A. 4,4B. 4,5C. 5,4D. 5,5E. 编译失败 //继承重写方法后的返回类型错误5.如下代码10. public Object m() {11. Object o = new Float(3.14F);12. Object [] oa = new Object[1];13. oa[0] = o;14. o = null;15. oa[0] = null;16. print 'return 0';17. }当Float对象在第11行被创建后, 什么时候能够被垃圾回收?A. 13行以后.B. 14行以后.C. 15行以后.D. 16行以后.6.如下代码:class Base {Base() { System.out.print("Base"); }}public class Alpha extends Base {public static void main( String[] args ) {new Alpha(); -----调用父类无参的构造方法new Base();}}结果是什么?A. BaseB. BaseBaseC. 编译失败.D. 代码运行但没有输出.E. 运行时抛出异常7.以下关于异常的说法正确的是:A. 一旦出现异常,程序运行就终止了B. 如果一个方法申明将抛出某个异常,它就必须真的抛出那个异常C. 在catch子句中匹配异常是一种精确匹配D. 可能抛出系统异常的方法是不需要申明异常的8.如下代码:public class Foo {public static void main(String[] args) {try {return;} finally {System.out.println( "Finally" );}}}输出结果是什么?A. FinallyB.编译失败C. 代码正常运行但没有任何输出.D. 运行时抛出异常9.在一个线程中Sleep(1000)方法,将使得该线程在多少时间后获得对CPU的控制(假设睡眠过程中不会有其他事件唤醒该线程)?A. 正好1000毫秒B. 1000毫秒不到C. =>1000毫秒D. 不一定10.下面的语句会产生什么样的输出?System.out.println(4&7);A.4 4二进制 0100B.5 7二进制 0111C.6 4&7二进制 0100D.7E.011.下面的程序中,temp的最终值是什么?long temp=(int)3.9; //temp=3temp%=2;A .0B .1C .2D .3E .412.下面哪个不是JAVA关键字A integer intB doubleC floatD default13.下列标识符(名字)命名原则中,正确的是( )A. 类名的首字母小写B. 变量和方法名的首写字母大写C. 接口名的首写字母小写D.常量完全大写14.类Test1定义如下:1.public class Test1{2. public float aMethod(float a,float b){ return 0;}3.4.}将以下哪种方法插入行3是不合法的。

杭电OJ题目分类

杭电OJ题目分类

杭州电子科技大学OJ题目分类The Soul with Bone .:1001 整数求和水题1002 C语言实验题——两个数比较水题1003 1、2、3、4、5... 简单题1004 渊子赛马排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想数论:容斥定理1007 童年生活二三事递推题1008 University 简单hash1009 目标柏林简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY Huffman编码1013 STAMPS 搜索or动态规划1014 Border 模拟题1015 Simple Arithmetics 高精度计算1016 Shoot-out 博弈+状态压缩DP1017 Tour Guide1018 Card Trick 简单题1019 Necklace Decomposition 贪心1020 Crashing Robots 模拟题1021 Electrical Outlets 简单题1022 Watchdog 简单题1023 Taxi Cab Scheme 图论:最小路径覆盖--->最大二分匹配1024 Pseudo-random Numbers 数论1025 Card Game Cheater 简单题1026 Investment 动态规划1027 Pipes1028 SETI 数学:高斯消元法1029 Minimax Triangulation 计算几何1030 Unequalled Consumption 母函数1031 Declaration of Content1032 Laserbox 搜索:DFS1033 Bowlstack1034 Pesky Heroes1035 Reduced ID Numbers 暴力1036 Tantrix1037 Guardian of Decency 图论:匈牙利算法求二分图的最大匹配1038 Up the Stairs 简单数学题1039 Sudoku 搜索:DFS1040 The SetStack Computer1041 Pie 二分法1042 Ticket to Ride 动态规划1043 The Bookcase 动态规划1044 Printer Queue 模拟题1045 Prime Path 搜索:BFS1046 Lineland's Airport1047 Leonardo's Notebook 数学题:群置换1048 简易版最长序列简单题1049 Jesse's problem 搜索:DFS1050 Error Correction 模拟题1051 A ×B problem 高精度计算1052 Redraiment的走法动态规划1053 Word Encoding 动态规划1054 Jesse's Code 组合数学:排列1055 简单密码破解水题1056 英文金曲大赛水题1057 有假币水题1058 寄居蟹与海葵水题1059 天仙配水题1060 鹊桥相会水题1061 杨辉三角水题1062 蟠桃记水题1063 养兔子水题1064 字符统计水题1065 完美数水题1066 亲和数水题1067 成绩评估水题1068 找零钱水题1069 漂亮菱形水题1070 Least Common Multiple 水题1071 第几天水题1072 编辑距离水题1073 支配值数目水题1074 等值数目水题1075 两数组最短距离水题1076 输入入门(1) 水题1077 输入入门(2) 水题1078 输入入门(3) 水题1079 输出入门水题1080 Counterfeit Dollar 组合数学1081 Dividing 动态规划1082 Sorting It All Out 图论:拓扑排序1083 False coin 暴力法1084 File Mapping1085 Color Me Less 简单题1086 Round and Round We Go 简单题1087 Microprocessor Simulation 简单题1088 求奇数的乘积水题1089 平方和与立方和水题1090 绝对值排序水题1091 JudgeOnline 水题1092 More Beautiful 水题1093 猴子分桃水题1094 C语言实验题——一元二次方程水题1095 C语言实验题——保留字母水题1096 C语言实验题——排列水题1097 C语言实验题——矩阵转置水题1098 C语言实验题——素数水题1099 Ambiguous permutations 简单题1100 Home Work 贪心法1101 Redraiment的遭遇数学题:找规律1102 Decorate the wall 搜索or动态规划1103 Economic phone calls 动态规划or贪心1104 Any fool can do it 记忆化搜索1105 Wine trading in Gergovia 贪心法1106 Homogeneous squares 随机算法1107 Automatic Correction of Misspellings 字符串处理:字典序1108 Black and white painting 简单数学题1109 Cylinder 计算几何:公式推导1110 Deli Deli 水题1111 Expressions 数据结构:树的遍历1112 Flavius Josephus Reloaded 数论:Pollard's Rho算法1113 Annoying painting tool 贪心法1114 Frequent values RMQ区间最值问题OR 线段树1115 Anagram Groups 字符串匹配1116 Let it Bead 组合数学->Polya定理1117 Simple Computers 简单题1118 Mondriaan's Dream 动态规划1119 Equidistance 计算几何1120 How many Fibs? 高精度计算1121 Hike on a Graph 搜索:BFS1122 ASCII Art1123 Billing Tables1124 Cellular Automaton 矩阵计算1125 Exchange1126 Fool's Game1127 Java vs C++ 字符串处理1128 Kickdown 字符串处理1129 Copying Books 贪心+二分法1130 Adding Reversed Numbers 简单题1131 Glass Beads 字符串的最小表示1132 The Circumference of the Circle 计算几何题1133 Knight Moves 搜索:BFS1134 Eeny Meeny Moo 变形的约瑟夫问题1135 Lotto 组合数学1136 Humble Numbers 动态规划1137 Average is not Fast Enough! 简单题1138 Etaoin Shrdlu 简单题1139 Hard to Believe, but True! 简单题1140 Code the Tree 简单题1141 Fiber Network 图论:全源最短路径,Floyd-Warshall算法1142 Global Roaming 3D几何题1143 All in All 字符串处理1144 The Sierpinski Fractal 递归1145 Assistance Required 简单题:预处理1146 Drink, on Ice 模拟题1147 All Discs Considered 搜索:BFS1148 In Danger 模拟题1149 Run Length Encoding 字符串处理1150 Bee Maja 模拟题1151 Friends 表达式求值1152 John 博弈论1153 Double Queue 最大堆与最小堆1154 ‘JBC’1155 Loan Scheduling 贪心+堆1156 Showstopper1157 Highway 贪心法1158 Computers 动态规划1159 The Stable Marriage Problem 组合数学1160 Arne Saknussemm 模拟题1161 Sum Problem 水题1162 Fire Net 搜索题1163 统计1到N之间数字1的个数推理题1164 最大公因子水题1165 C语言实验题——三个整数水题1166 C语言实验题——大小写转换水题1167 C语言实验题——分数序列水题1168 C语言实验题——最值水题1169 C语言实验题——保留整数水题1170 C语言实验题——矩阵下三角元素之和水题1171 C语言实验题——字符逆序水题1172 C语言实验题——打印菱形水题1173 C语言实验题——分割整数水题1174 C语言实验题——删除指定字符水题1175 C语言实验题——时间间隔水题1176 C语言实验题——数组逆序水题1177 C语言实验题——打印数字图形水题1178 C语言实验题——单词统计水题1179 C语言实验题——最小公倍数和最大公约数水题1180 Crashing Balloon 搜索题1181 念数字模拟题1182 A+B for Input-Output Practice(1) 水题1183 Anagrams by Stack 搜索:回溯1184 Elevator 数学:找规律1185 Substrings 字符串处理1186 Calling Extraterrestrial Intelligence Again 搜索:枚举法1187 Do the Untwist 简单数学题1188 数字对水题1189 A+B for Input-Output Practice (2) 水题1190 火星A+B 简单题1191 三齿轮问题:三个齿轮啮合简单数学题1192 A + B Problem II 高精度计算1193 The ones to remain 数学题1194 Chinese Chess 博弈论1195 Page Replacement 数据结构:队列or hash1196 RSA Signing 数论:Pollard's Rho算法1197 Number Guessing 搜索:穷举1198 求n的阶乘高精度计算1199 Area 计算几何1200 求两直线的夹角水题1201 三角形面积水题1202 Max Sum 动态规划1203 Number Sequence 大数问题1204 u Calculate e 水题1205 斐波那契数列高精度计算1206 Fibonacci Again 大数问题1207 Let the Balloon Rise 字符串处理1208 还是A+B 水题1209 A + B 水题1210 The area 简单计算几何1211 Ignatius's puzzle 简单数学问题1212 Computer Transformation 高精度计算1213 N! 高精度计算1217 Text Reverse 水题1220 填数字游戏搜索:DFS1221 Tempter of the Bone 搜索:DFS or BFS+剪枝1226 Last non-zero Digit in N! 数论1227 三角形递推求解1228 回文数猜想简单题1229 Factorial 简单题1230 Specialized Four-Digit Numbers 简单数学题1231 Lowest Bit 简单题1232 To and Fro 简单题1233 AC Me 简单题1234 Wolf and Rabbit 数论1235 最大连续子序列动态规划1236 开门人和关门人字符串处理1237 排名排序1238 统计难题字符串处理:字典树1239 Tick and Tick 数学题1240 Quoit Design 分治法1241 钱币兑换问题递推求解1242 求出前m大的数简单题1243 角谷猜想简单题1244 Reverse Number 简单题1245 寻找素数对简单题1246 ZJUTACM 简单题1247 Hat's Fibonacci 高精度计算1248 Encoding 简单题1249 四数相加高精度计算1250 两数相减高精度计算1251 Square Coins 母函数1252 Counting Triangles 递推求解1253 2^x mod n = 1 数论:费尔马小定理1254 Minimum Inversion Number 简单题1255 Surround the Trees 计算几何:凸包1256 Number Steps 简单题1257 Binary Numbers 简单题1258 Knight Moves 搜索:BFS1259 Lotto 组合数学1260 A Simple Task 简单题1261 The Drunk Jailer 数论1262 Hanoi Tower Troubles Again! 递推求解1263 IBM Minus One 水题1264 Definite Values 简单题1265 Box of Bricks 水题1266 Perfection 简单题1267 Reverse Text 水题1268 Inversion 模拟题1269 Prime Cuts 简单题1270 How Many Fibs? 高精度计算1271 Round and Round We Go 简单题1272 Red and Black 搜索:DFS1273 What Day Is It? 简单题1274 String Matching 字符串匹配1275 A Contesting Decision 简单题1276 Doubles 简单题1277 The Snail 简单题1278 Jungle Roads 图论:最小生成树1279 Prime Ring Problem 搜索:DFS1280 Big Number 大数问题1281 Least Common Multiple 简单题1283 简单排序水题1284 Gridland 简单题1285 An Easy Task 简单题1286 Calendar Game 模拟题1287 Human Gene Functions 动态规划1288 计算几何练习题——线段相交计算几何1289 计算几何练习题——线段相交II 计算几何1290 计算几何练习题——直线交点计算几何1291 Trees Made to Order 递归求解1292 排序简单题1293 18岁生日简单题1294 吃糖果递推求解1295 变种汉诺塔递推求解1296 洗牌递推求解1297 大数求余数论1298 圆桌会议递推求解1299 畅通工程并查集1300 还是畅通工程最小生成树1301 统计同成绩学生人数水题1302 简单计算器表达式求值:栈的应用1303 改进版计算器表达式求值:栈的应用1304 FatMouse' Trade 贪心法1305 Digital Roots 大数问题1306 Uniform Generator 数论1307 A Mathematical Curiosity 穷举法1308 Safecracker 穷举法1309 The 3n + 1 problem 简单题1310 分享糖果模拟题1311 宝物收集搜索:BFS1312 Climbing Worm 简单题1313 搬桌子贪心法1314 Humble Numbers 动态规划1315 Dividing 动态规划1316 Rightmost Digit 数学问题1317 Leftmost Digit 数学问题1318 Hangover 简单数学问题1319 Exponentiation 高精度计算1320 I Think I Need a Houseboat 简单题1321 Girls and Boys DFS+二分图1322 Monkey and Banana 动态规划1323 买牛奶简单题1324 Matrix Chain Multiplication 数据结构:栈的应用1325 计算成绩简单题1326 Holding Bin-Laden Captive! 母函数1327 You can Solve a Geometry Problem too 计算几何1328 Super Jumping! Jumping! Jumping! 动态规划1329 a^b 数论1330 计算GPA 水题1331 Give me an offer! 动态规划:0-1背包1332 田忌赛马贪心法1333 Asteroids! 搜索:BFS1334 Oil Deposits 搜索:DFS1335 营救天使搜索:BFS1336 小数化分数高精度计算1337 I Hate It 线段树1338 Strange Billboard 位运算+枚举1339 Frobenius 递推求解1340 奇怪的公式数学题1341 Fibonacci again and again 博弈论1342 A New Tetris Game 博弈论1343 Sum It Up 搜索:DFS1344 速算24点搜索1345 推箱子搜索:BFS1346 Pushing Boxes 搜索:BFS1347 The Worm Turns 搜索1348 Alfredo's Pizza Restaurant 简单题1349 Broken Keyboard 字符串处理1350 Convert Kilometers to Miles 简单题1351 单词数水题1352 仙人球的残影简单题1353 Family planning 简单题1354 Rout 66 简单题1355 LC-Display 模拟题1356 A == B ? 高精度计算1357 不容易系列之一递推求解1358 折线分割平面递推求解1359 find the nth digit 二分查找1360 奇数阶魔方(II) 简单题1361 Keep on Truckin' 简单题1362 Factstone Benchmark 简单题1363 Destroy the Well of Life 模拟题1365 Brave Game 博弈论1366 ASCII码排序水题1367 计算两点间的距离水题1368 计算球体积水题1369 求绝对值水题1370 数值统计水题1371 求数列的和水题1372 水仙花数水题1373 多项式求和水题1374 素数判定水题1375 偶数求和水题1376 母牛的故事水题1377 数列有序! 水题1378 发工资咯:)水题1379 C语言合法标识符水题1380 海选女主角水题1381 查找最大元素水题1382 首字母变大写水题1383 统计元音水题1384 Palindromes _easy version 水题1385 汉字统计水题1386 进制转换水题1387 人见人爱A+B 水题1388 人见人爱A-B 水题1389 人见人爱A^B 水题1390 改革春风吹满地计算几何1391 今年暑假不AC 动态规划1392 三角形水题1393 求平均成绩水题1394 不容易系列之二递推求解1395 密码水题1396 一只小蜜蜂... 递推求解1397 不容易系列之(3)——LELE的RPG难题递推求解1398 骨牌铺方格递推求解1399 阿牛的EOF牛肉串递推求解1400 神、上帝以及老天爷递推求解1401 不容易系列之(4)——考新郎递推求解1402 Bitset 简单题1403 Picture 简单模拟题1404 Switch Game 找规律1405 An easy problem 简单模拟题1406 A + B Again 简单题1407 The sum problem 简单数学题1408 龟兔赛跑动态规划1409 Snooker 简单数学题1410 Subset sequence 简单题1411 汉诺塔III 递推求解1412 "红色病毒"问题递推求解1413 小兔的棋盘递推求解1414 RPG的错排错排+排列组合1415 无限的路简单题1416 夹角有多大数学题1417 汉诺塔IV 递推求解1418 复习时间简单题1419 选课时间暴力求解1420 手机短号字符串处理1421 找单词母函数1422 简易版之最短距离数学题1423 数塔动态规划1424 核反应堆简单题1425 A1 = ? 公式推导1426 剪花布条字符串处理1427 不要62 数学题1428 空心三角形字符串处理1429 小明A+B 简单题1430 Sky数进制转换1431 整除的尾数简单题1432 分拆素数和数论1433 正整数解数学题1434 挂盐水模拟题1435 {A} + {B} 简单题1436 小数A+B 高精度计算1437 Zigzag 简单题1438 螺旋形简单题1439 行李寄存简单题1440 判断多边形凹凸计算几何1441 The centre of polygon 计算几何1442 最小正整数简单题1443 Elevator Stopping Plan 二分+贪心法1444 TOYS 计算几何1445 The Doors 计算几何1446 Polygon And Segment 计算几何1447 Fence 计算几何1448 两圆相交面积计算几何1449 Area of Circles 计算几何1450 Pipe 计算几何1451 zero sum 搜索:DFS1452 C语言实验题——Hello World 水题1453 C语言实验题——数日子水题1454 C语言实验题——三个数排序水题1455 C语言实验题——数字串求和水题1456 C语言实验题——拍皮球水题1457 C语言实验题——求一个3*3矩阵对角线元素之和水题1458 C语言实验题——数组逆序水题1459 C实验题——求最大值水题1460 C实验题——求绝对值最大值水题1461 C语言实验题——求平均值水题1462 C语言实验题——打印直角三角形水题1463 C语言实验题——相加和最大值水题1464 C语言实验题——简单编码水题1465 C语言实验题——某年某月的天数水题1466 C语言实验题——各位数字之和排序水题1467 C语言实验题——两个数最大水题1468 C语言实验题——求级数值水题1469 Pipe II 计算几何1470 Transmitters 计算几何1471 Wall 计算几何1472 C语言实验题——逆置正整数水题1473 C语言实验题——找中间数水题1474 C语言实验题——整数位水题1475 C语言实验题——一元二次方程II 水题1476 C语言实验题——圆周率水题1477 C语言实验题——余弦水题1478 C语言实验题——打印金字塔水题1479 C语言实验题——排序水题1480 C语言实验题——约瑟夫问题水题1481 C语言实验题——鞍点水题1482 C语言实验题——计算表达式水题1483 C语言实验题——汉诺塔水题1484 C语言实验题——字符串排序水题1485 C语言实验题——整除水题1486 Solitaire 搜索:(双向)BFS1487 Abbreviation 水题1488 C语言实验题——买糖果水题1489 C语言实验题——字符编码水题1490 C语言实验题——合法的C标识符水题1491 C语言实验题——三角形面积水题1492 C语言实验题——大小写转换水题1493 C语言实验题——圆柱体计算水题1494 C语言实验题——温度转换水题1495 C语言实验题——统计字串水题1496 C语言实验题——字符过滤水题1497 Coin Change 暴力求解1498 Beautiful Meadow 搜索题1499 C语言实验题——鸡兔同笼水题1500 Coins of Luck 数学题:数学期望1501 Friends 搜索:DFS1502 Find All M^N Please 数学题1503 Incredible Cows 搜索:二分+DFS1504 计算直线的交点数递推求解1505 Number Game 动态规划1506 Sort ZOJ7 字符串处理1507 Find 7 Faster Than John Von Neumann 高精度计算1508 免费馅饼动态规划1509 Worm 动态规划1510 Common Subsequence 动态规划1511 搬寝室动态规划1512 Daydream 字符串处理1513 Ballroom Lights1514 Drop the Triples1515 Finding Seats1516 He is offside!1517 Justice League1518 星星点点搜索1519 逆波兰表达式表达式求解:栈的应用1520 十六进制高精度计算1521 Palindromic sequence1522 Hotel 模拟题1523 Intersecting Lines 计算几何1524 Heap Construction 最短路径1525 Pizza Anyone?1526 Adam's Genes1527 Risk1528 Just the Facts 数论1529 Horse Shoe Scoring 计算几何1530 哥德巴赫猜想数论1531 爱的伟大意义简单题1532 校门外的树模拟题1533 最多约数问题数论1534 Quicksum 数学题1535 找规律填数字数学题1536 Accepted Necklace 搜索:DFS1537 除法表达式数论1538 A Walk Through the Forest 图论:最短路径1539 Accurately Say "CocaCola"! 简单题1540 Build The Electric System 图论:最小生成树1541 Colorful Rainbows 计算几何1542 Easy Task 数学题1543 Faster, Higher, Stronger 简单题1544 Give Me the Number 模拟题1545 Hurdles of 110m 动态规划1546 Just Pour the Water 矩阵计算1547 Kinds of Fuwas 穷举法1548 复数运算简单题1549 元素个数排序简单题1550 Fiber Communications1551 Power Hungry Cows 搜索:BFS1552 Cow Cycling 动态规划1553 Rebuilding Roads 树型DP1554 Triangular Pastures 动态规划1555 Chores 动态规划1556 Extra Krunch1557 BUY LOW, BUY LOWER 动态规划1558 Hypnotic Milk Improvement1559 Happy Cows1560 Unary Cow Counting 1561 Dairy Route1562 Calf Numbers1563 Hide and Seek 1564 Mountain Majesties 1565 Secret Milk Pipes 1566 Circus Tickets1567 Life Cycle1568 Wiggle Numbers 1569 Superwords1570 Cow Brainiacs 1571 Pasture Fences 1572 New Years Party 1573 Strolling Cows 1574 Grazing Sets1575 Factorial Power 1576 Friday the Thirteenth 1577 Beef McNuggets 1578 Calf Flac1579 Light Bulbs1580 Cow Math 图论1581 Cow Imposters 动态规划1582 Traffic Lights 递推求解1583 Farm Tour 图论:最短路径1584 Vertical Histogram 简单题1585 Cowties 动态规划1586 Travel Games 搜索:DFS1587 Best Cow Fences 二分法1588 Cornfields RMQ问题1589 Six Degrees of Cowvin Bacon 简单题1590 Herd Sums 简单题1591 Message Decoding 简单题1592 Mountain Walking 二分+flood fill 1593 Millenium Leapcow 动态规划1594 Optimal Milking 最大流+二分法1595 Bale Figures 模拟+二分法1596 Jumping Cows 动态规划1597 Lost Cows SBT树1598 Bovine Math Geniuses 简单题1599 Dividing the Path 动态规划1600 Fence Obstacle Course 动态规划1601 Cow Ski Area 图论:flood fill 1602 Cleaning Shifts 贪心法1603 Bad Cowtractors 最大生成树1604 Tree Cutting 树状动态规划1605 Navigation Nightmare 并查集1606 Cow Marathon 树状动态规划1607 Distance Queries LCA,tarjan算法1608 Distance Statistics 楼天成大牛“男人八题”中的一道1609 Moo University - Team Tryouts 排序+穷举法1610 Moo University - Emergency Pizza Order1611 Moo University - Financial Aid 最大堆、最小堆1612 Cube Stacking 并查集1613 The Cow Lineup 穷举法1614 MooFest 线段树1615 Turning in Homework 动态规划1616 Alignment of the Planets1617 Finding Bovine Roots1618 Cow Bowling1619 Cow Patterns 字符串匹配的扩展1620 Barn Expansion 二分查找1621 Layout 差分约束系统1622 Knights of Ni 搜索:BFS1623 Cleaning Shifts DP+Heap1624 Scales 搜索+剪枝1625 Secret Milking Machine 二分+网络流1626 Aggressive cows 二分法1627 Rigging the Bovine Election 穷举法1628 Feed Accounting 简单模拟题1629 Muddy Fields 穷举法1630 The Wedding Juicer 堆+flood fill 1631 Naptime 动态规划1632 Sumsets 动态规划1633 Moo Volume 简单题1634 Ombrophobic Bovines Floyd-Warshall 1635 Space Elevator 动态规划1636 Yogurt factory 动态规划1637 Checking an Alibi 最短路径1638 Out of Hay1639 Satellite Photographs 搜索:BFS or DFS 1640 Asteroids 最大网络流1641 Grazing on the Run 动态规划1642 Walk the Talk 动态规划1643 City Skyline 栈的应用1644 Cow Acrobats 贪心法1645 Ant Counting 动态规划1646 Hopscotch 搜索:DFS1647 Securing the Barn 穷举法1648 Bovine Birthday 递推求解1649 Max Factor 简单题1650 Flying Right1651 Close Encounter1652 Allowance1653 Lazy Cows1654 Expedition1655 Around the world1656 Landscaping1657 Waves1658 Navigating the City1659 Disease Management1660 Muddy roads1661 Wormholes 最短路径1662 The Fewest Coins 动态规划1663 Milk Patterns 二分法or后缀树1664 Cow Picnic 搜索:BFS or DFS 1665 Cow Roller Coaster 动态规划1666 River Hopscotch 二分法+贪心1667 The Moronic Cowmpouter 进制转换1668 DNA Assembly 穷举法1669 Cow Phrasebook 二分法1670 Cellphones 穷举法1671 Steady Cow Assignment 网络流1672 Treats for the Cows 动态规划1673 Backward Digit Sums 穷举法1674 Stump Removal 简单题1675 Finicky Grazers 动态规划1676 The Water Bowls 枚举二进制位1677 Redundant Paths 图论1678 Roping the Field 动态规划1679 Corral the Cows 二分法1680 The Cow Prom 图论1681 Dollar Dayz 动态规划1682 The Grove 最短路径1683 Fence Repair Huffman编码1684 Corn Fields 状态压缩DP 1685 Roadblocks 图论:最短路径1686 Bad Hair Day 搜索1687 Big Square 穷举法1688 Round Numbers 枚举二进制位1689 Building A New Barn1690 Cow Sorting 置换群1691 Lilypad Pond 最短路径1692 The Cow Lexicon 动态规划1693 Silver Cow Party 最短路径1694 Problem Solving 动态规划1695 Cow School1696 Protecting the Flowers 贪心法1697 Tallest Cow 区间统计1698 Balanced Lineup RMQ问题1699 Gold Balanced Lineup RMQ问题1700 Ranking the Cows 搜索:DFS1701 Face The Right Way 穷举法1702 Cow Traffic 动态规划1703 Monthly Expense 贪心法1704 Cheapest Palindrome 动态规划1705 Dining 贪心+网络流1706 City Horizon 离散化+ 扫描1707 Catch That Cow 最短路径1708 Fliptile 枚举+位压缩1709 2-Dimensional Rubik's Cube 搜索:BFS 1710 Ball 计算几何1711 3D Camera 三维计算几何1712 Cipher 模拟题1713 Five in a Row 简单题1714 Pinhole Imaging 简单计算几何1715 URL 模拟题1716 Battle of Submarines 集合DP 1717 WOJ 动态规划1718 钥匙计数之二递推求解1719 BrokenLED 模拟题1722 A+B again and again! 模拟题1723 Just calculate it! 数论1724 Guess how much I love you? 简单题1725 NBA Finals1726 Find Out an “E”1727 Judging ACM/ICPC1728 Cryptography of Alex1729 Rings of square grid1730 Fermat's Theorem1731 Cup 二分法1732 Find the Path DP+二分法1733 Five in a Row, Again 动态规划1734 Minimum Heap 递推求解1735 Name PK 模拟题1736 Pendant 动态规划1737 Radar 计算几何+搜索1738 Ring 多串模式匹配1739 Run 计算几何1740 Toxophily 简单题1741 通讯录编排简单题1742 超缘分ACM队伍简单题1743 集合运算简单题1744 矩阵计算简单题1745 Arbitrage 动态规划1746 The Tower of Babylon 动态规划1747 Binomial Showdown 组合数学1748 Dungeon Master 搜索:BFS 1749 Equation Solver 表达式求值应用1750 Frogger 最短路径1751 Globetrotter 计算几何1752 Tree Recovery 数据结构:二叉树1753 Artificial Intelligence?1754 The Settlers of Catan 搜索1755 France '98 概率问题1756 Goldbach's Conjecture 数论1757 Heavy Cargo 最小生成树1758 Quadtree1759 From Dusk till Dawn or: Vladimir the Vampire 最短路径1760 Euro Cup 20001761 Quadtree II or: Florida Jones strikes back1762 HTML 简单题1763 Paths on a Grid 组合数学:T路问题1764 Balanced Food 动态规划1765 California Jones and the Gate to Freedom 组合数学1766 Diplomatic License 简单计算几何题1767 Polygon Programming with Ease 数学题1768 Hall of Fountains 搜索:BFS or DP1769 The Bottom of a Graph 图论:强连通分量1770 Edge1771 Fold1772 Largest Rectangle in a Histogram 动态规划1773 Boolean Logic1774 Code1775 In Danger 模拟题1776 Fractran1777 Huffman's Greed1778 Bullshit Bingo 字符串处理1779 A Song contest1780 Message1781 The skatepark's new ramps1782 Road1783 Warfare1784 Blackjack1785 Robintron1786 Diamond Dealer 计算几何:凸包1787 Best Compression Ever1788 Code Theft1789 Dinner1790 Event Planning1791 Getting Gold1792 Introspective Caching1793 Just A Few More Triangles!1794 Knights of the Round Table 图论:无向图的块判断奇圈1795 The Cow Doctor 穷举法1796 Wild West 线段树1797 Find the Clones1798 The Warehouse1799 Widget Factory 数论:同余方程组1800 Martian Mining 动态规划3301 字符串;AC自动机,动态规划;状态压缩3302 计算几何3303 数学;代数运算;高斯消元3304 图论;强连通分量;2-SAT3305 动态规划;凸单调性优化3306 枚举3307 贪心3308 数学;代数运算3309 最短路;佛洛伊德3310 动态规划3311 贪心3312 计数问题;递推,数状数组,二分查找3313 数论;欧拉定理,快速幂取模3314 计数问题,数状数组3315 博弈;Surreal数;Farey数列;3316 计数问题;递推,高精度3317 计数问题;容斥原理3318 递推;矩阵乘法3319 数学;概率3320 背包3321 动态规划3322 字符串;AC自动机3323 动态规划3324 博弈3325 搜索3326 贪心3327 最短路3328 数据结构(实现一种数据结构,支持要求的操作),数状数组3329 图论;二分图最大权匹配3330 数学;数论3331 递推;矩阵乘法3332 数学;数论,二分查找3333 计算几何3334 动态规划3335 字符串,后缀数组或拉宾卡普;动态规划3336 数据结构;并查集3337 计数问题,递推3338 二分查找,贪心3339 数学3340 计算几何;凸包,图论;佛洛伊德;最小环3341 动态规划3342 广搜3343 动态规划3344 计算几何3345 二分图最大匹配3346 树型DP3347 动态规划3348 数学;数论;进制3349 计数问题3350 贪心3351 数学;数论;进制3352 动态规划,数论,组合数学3353 数学;数论3354 计数;递推3355 图论;佛洛伊德3356 博弈3357 动态规划3358 数据结构;线段树,数状数组3359 计算几何,动态规划3360 博弈;SG函数3361 图论;最近公共祖先3362 图论;强连通分量;2-SAT 3363 计算几何3364 字符串;AC自动机,动态规划3365 搜索,舞蹈链3366 数学;数论3367 数学;代数运算;高斯消元3368 动态规划3369 计数问题;递推3370 网络流(错题)3371 树型DP3372 数学;高精度3373 数学;3374 RMQ3376 数学;进制3377 字符串;后缀数组3378 动态规划3379 计算几何3380 线段树3381 图论;欧拉路3382 简单题3383 字符串;AC自动机3384 广搜3385 计算几何,矩阵3386 语言处理3387 动态规划;状态压缩3388 图论;全局最小割3389 简单题3390 广搜3391 数学;Pell方程3392 背包3393 计算几何3394 广搜3395 搜索;迭代加深3396 数学;计数问题3397 数学;解方程3398 分析3399 模拟3400 数学;计数问题,数论。

C++编程练习题及答案(2021年整理精品文档)

C++编程练习题及答案(2021年整理精品文档)

C++编程练习题及答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(C++编程练习题及答案)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为C++编程练习题及答案的全部内容。

一、简单问题:1。

编程求下列式子的值,y=1-1/2+1/3-1/4+…+1/99-1/100并将结果输出,格式为: 1-1/2+1/3-1/4+…+1/99—1/100 = 表达式的值public class Porg {public static void main(String[] args) {double sum=0;for(double i=1;i〈=100;i++){sum=sum+Math。

pow(-1, i-1)*(1/i);}System。

out.print(" 1—1/2+1/3-1/4+…+1/99-1/100=”+sum);}}2。

请编程实现:由键盘输入的任意一组字符,统计其中大写字母的个数m和小写字母的个数n,并输出m、n中的较大者。

import java。

util.Scanner;public class Prog2 {public static void main(String[] args){int m=0,n=0;Scanner cin=new Scanner(System.in);String str=cin。

nextLine();for(int i=0;i<str.length();i++){if(str。

charAt(i)>'A'&&str.charAt(i)〈='Z')m++;elsen++;}if(m>n){System。

C++编程练习题大全(带答案)

C++编程练习题大全(带答案)

一、简单问题:5. 编程计算: 1!+2!+3!+…+20!,并将结果输出.输出格式:1!+2!+3!+…+20!= 表达式的值package moreEasy;public class The5th {public static void main(String[] args) {long sum=0;for(int i=1;i<=20;i++){long r=1;for(int j=1;j<=i;j++){r*=j;}sum=sum+r;//System.out.print(" r="+r);if(i<20)System.out.print(i+"!+");elseSystem.out.print(i+"!="+sum);}}}1. 编程求下列式子的值,y=1-1/2+1/3-1/4+…+1/99-1/100并将结果输出,格式为: 1-1/2+1/3-1/4+…+1/99-1/100 = 表达式的值public class Porg {public static void main(String[] args) {double sum=0;for(double i=1;i<=100;i++){sum=sum+Math.pow(-1, i-1)*(1/i);}System.out.print(" 1-1/2+1/3-1/4+…+1/99-1/100="+sum);}}2. 请编程实现:由键盘输入的任意一组字符,统计其中大写字母的个数m和小写字母的个数n,并输出m、n中的较大者。

import java.util.Scanner;public class Prog2 {public static void main(String[] args) {int m=0,n=0;Scanner cin=new Scanner(System.in);String str=cin.nextLine();for(int i=0;i<str.length();i++){if(str.charAt(i)>'A'&&str.charAt(i)<='Z')m++;elsen++;}if(m>n){System.out.println(m);}elseSystem.out.println(n);}}3. 编程,求全部水仙花数。

C程序设计五百例--学会用c语言解决生活中的问题

学会用c语言解决生活中的问题【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

面向对象程序设计知识点

面向对象程序设计万物皆对象冯君,李永,李群,薛红芳编1面向对象的特性-封装性学习目标:1.理解封装的概念2.掌握private 关键字3.掌握构造方法4.掌握方法重载 重点与难点:封装性的理解,构造方法的使用,方法重载的定义✍理解为什么需要封装封装的定义1.封装,就是隐藏实现细节2.将属性私有化,提供公有方法访问私有属性3.通过这些公有方法访问私有属性,这样做的好处是防止外界直接对属性进行不合理的更改。

✪理解为什么需要构造方法构造方法的定义:构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值。

构造方法必须满足以下语法规则:1、方法名与类名相同2、没有返回类型构造方法的调用:创建对象时自动调用。

这好比是人刚出生父母就给他起好了名字。

带参构造方法:通过调用带参数的构造方法,简化对象初始化的代码。

特殊的this:this 表示当前对象,为了区分成员变量和参数,如果不同名,可以不加this 。

✍方法重载的定义:1.方法名相同。

2.方法的参数类型、个数、顺序至少有一项不相同。

3.方法的返回类型可以不相同。

4.方法的修饰符可以不相同。

思考:构造方法可以重载吗?(可以)public class Teacher{private String name; // 姓名// 返回姓名public String getName() {return name;}// 设定姓名public void setName(String name) { = name;}}public class Teacher {private String name; //姓名// 构造方法public Teacher() {name = "张三";}}//存在问题,每个教师在new 出来时的名字都一样,最简单的解决办法——带参构造方法public Teacher(String name){=name;}Math.max(1,2);Math.max(1.0F,2.0F);Math.max(1.0,2);运行时,Java 虚拟机先判断给定参数的类型,然后决定到底执行哪个max()方法☺使用private关键字修饰某个成员变量后,这个成员变量可以被同一包中的其它类访问吗?☺在Java程序中,代码封装带给我们的好处是什么?☺请通过代码封装,实现如下需求:编写一个类Book,代表教材:具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200为各属性设置赋值和取值方法具有方法:detail,用来在控制台输出每本教材的名称和页数编写测试类BookTest进行测试:为Book对象的属性赋予初始值,并调用Book对象的detail方法,看看输出是否正确☺编写一个类Book2,代表教材:具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200具有方法:Sdetail,用来在控制台输出每本教材的名称和页数具有带参数的构造方法:用来完成对象的初始化工作,并在构造方法中完成对页数的最小值限制编写测试类Book2Test进行测试:初始化一个Book2对象,并调用该Book2对象的detail方法,看看输出是否正确☺编写一个类Book3,代表教材:具有属性:名称(title)、页数(pageNum)、类型(type)具有方法:detail,用来在控制台输出每本教材的名称、页数、类型具有两个带参构造方法:第一个构造方法中,设置教材类型为“计算机”(固定),其余属性的值由参数给定;第二个构造方法中,所有属性的值都由参数给定编写测试类Book3Test进行测试:分别以两种方式完成对两个Book3对象的初始化工作,并分别调用它们的detail方法,看看输出是否正确改进上学期所编写的宠物猫程序:运用封装、构造方法及构造方法的重载编写一个宠物猫类,能吃,能喝,能睡,能运动,能捉老鼠。

取证考题(Java)

取证考题一、单选题1.下列关于JDK、JRE 和JVM 的描述。

哪项正确?【软件开发Java】A. JDK 中包含了JRE,JVM 中包含了JREB. JDK 中包含了JRE,JRE 中包含了JVMC. JRE 中包含了JDK,JVM 中包含了JRED. JRE 中包含了JDK,JDK 中包含了JVM2.以下关于Applet的描述,哪项错误?A. 一个Applet就是一段Java程序B. Applet是一种特殊的Java程序,它需要运行在Web服务器上C. Applet是一种特殊的Java程序,它需要运行在Web浏览器上D. Applet是一种Java SE平台的应用程序3.在类Acoount 中,正确引入类school.Student 的语句是哪一项?A. import Student;B. import school;C. import school.*;D. package school.Student4.用于编译Java源文件的JDK工具是?A. javacB. jdbC. javaD. junit5.下列有关类、对象和实例的叙述,正确的是哪一项?A. 类就是对象,对象就是类,实例是对象的另一个名称,三者没有差别B. 类是对象的抽象,对象是类的具体化,实例是对象的另一个名称C. 对象是类的抽象,类是对象的具体化,实例是对象的另一个名称D. 类是对象的抽象,对象是类的具体化,实例是类的另一个名称6.以下创建类的代码中,哪项是正确的?A. class Student{String name;String getName(){return name;}}B. String name;class Student{String getName(){return name;}}C. class Student{void name;String getName(){return name;}}D. class Student{String name;getName(){return name;}}7.下列关于Java对象清除的叙述正确的是哪项?A. 对象被创建后,立刻变成垃圾对象B. 任何不再被引用的对象都是垃圾收集的对象C. 一旦对象失去引用,垃圾收集器立刻把它从内存中清除D. Java对象的清除必须自己手动处理8.下列哪项是String的字面量?A. “Hello”B. …world‟C. \u2345D. new String(“good”)9.现有:1. class WideLoad {2. public static void main(String [] args) {3. float f = 3.14f;4. new WideLoad().doIt(f);5. }6. void doIt(Float f) {7. System.out.println("Float");8. }9. void doIt(double d) {10. System.out.println("double");11. }12. }结果为:A.FloatB. doubleC. 编译失败。

龟兔赛跑程序设计报告

目录前言 (1)工程概况 (1)2.1 项目所用的时间 (1)2.2项目负责人 (2)2.3 项目指导人 (2)正文 (2)3.1 设计的目的和意义 (2)3.2 目标与总体方案 (3)3.3 设计方法和内容 (3)...........................................错误!未定义书签。

...........................................错误!未定义书签。

...........................................错误!未定义书签。

3.4 设计创新与关键技术 (10)3.4.1 设计创新 (10)3.4.2 关键技术 (11)3.5结论 (11)致谢 (12)参考文献 (12)附录 (13)前言在科技日新月异的今天;电脑成为人的生活中不可缺少的一部分..作为计算机专业的学生;应该充分利用所学知识;把实际问题转移到电脑上去;通过电脑的编程;使复杂问题简单化;深奥问题浅显化;抽象问题具体化..在学过Java程序设计语言后;我们对计算机有了更深的了解..Java是一种简单的;跨平台的;面向对象的;分布式的;解释的;健壮的安全的;结构的中立的;可移植的;性能很优异的多线程的;动态的语言..当1995年SUN推出Java语言之后;全世界的目光都被这个神奇的语言所吸引..Java 不同于一般的编译执行计算机语言和解释执行计算机语言..它首先将源代码编译成二进制字节码bytecode;然后依赖各种不同平台上的虚拟机来解释执行字节码;从而实现了“一次编译、到处执行”的跨平台特性..本次课设我选择的是龟兔赛跑游戏的制作..这个游戏实际上主要是对我们JAVA 学习中的线程部分的考察;尤其是多线程的定义;运行等..同时还要保证游戏有一个真实的操作界面和人性化操作设计..在设计龟兔赛跑这个游戏中我也遇到了技术上的一些困难;但通过查阅资料;并且在老师的帮助下最终问题得以解决..正如龟兔赛跑这个故事一样;虽然我们在技术上不是很优秀;但只要有乌龟一样坚持不懈的精神;最终胜利到达终点..工程概况2.1 项目所用的时间从这个项目开始到结束总共历时12天..完成于2015年6月19日..2.2项目负责人孙肖肖;女;计算机科学与技术17-4;学生..2.3 项目指导人高贤强;男;信息工程学院教师;讲师..正文3.1 设计的目的和意义本设计要求学生开发一个龟兔赛跑游戏;主要是对学生多线程编程、游戏方案设计、游戏背景及动漫制作等能力进行培养锻炼;同时还要求保证游戏有一个真实的操作界面和人性化操作设计..此外;学生通过该题目的设计过程;可以初步应用软件系统的开发原理和开发方法;全面培养软件开发过程中的分析、设计、编码、测试及文档规范书写的能力;得到软件工程的训练;提高解决实际问题的能力..1有助于加深我们对Java程序设计这门课程的理解;我们在课堂上学的都是基础理论知识;对于如何用程序语言来描述所学知识还是有一定的难度..通过课程设计;我们可以真正理解其内涵..2有利于我们逻辑思维的锻炼;程序设计能直接有效地训练学生的创新思维、培养分析问题、解决问题的能力..即使是一个简单的程序;依然需要学生有条不紊的构思..3有利于培养严谨认真的学习态度;在程序设计的过程中;当我们输入程序代码的时候;如果不够认真细心;那么就可能导致语法错误;从而无法得出运行结果..那么;这个我们反复调试;反复修改的过程;其实也是对我们认真严谨治学的一个锻炼..3.2 目标与总体方案1用图形用户界面实现游戏界面;同时通过设置布局;背景;字体等来丰富界面;最大程度的模拟龟兔赛跑的场景..2能设置比赛时间;龟兔的数量等等;实现对比赛中龟兔的数量;比赛时间等参数的设置..3在任意时间段内龟兔的速度是随机的;为了模拟龟兔赛跑结果的不确定性;在游戏开始后乌龟和兔子的速度都是通过随机函数产生的;保证兔子比乌龟速度要快;兔子在赛跑途中看到乌龟落后下会偷懒睡觉的前提下给予乌龟;兔子以随机的速度;从而使得游戏的结果不确定;给用户更多的游戏的真实感..4开始比赛之后以动画显示赛跑过程;用户进入游戏界面后;先选择游戏模式;然后单击开始按钮;乌龟和兔子将会以随机的速度开始朝终点线爬行;通过重复刷新技术达到动画效果;给用户更逼真的感官..5系统的开发可以采用Java语言来实现;6在基本要求达到后;可进行创新设计;如改善算法性能、友好的人机界面.. 3.3 设计方法和内容硬件环境:一台清华同方电脑;其配置为:CPU: IntelR CoreTM i5-4570 3.2GHz 内存:4G 硬盘:500G 主板:4260LA-2922P软件环境:Windows 7旗舰版版本2009 Service Pack 1;并且安装了可供编程的eclipse-standard-kepler-SR1-win32赛跑的过程是两个比赛对象并行前进的过程;考虑到应用需求;我们可以利用多线程技术;所谓多线程就是指同时存在几个执行体;按几条不同的执行线索共同工作的情况;这与要求刚好吻合;Java语言对多线程提供强大的支持..用直观图形描述龟兔赛跑前进过程:每过一秒;兔子走过的文本框中增加三个“#”号;乌龟走过的路程文本框中增加一个“#”号..跑完路程结束线程;并显示各自跑完全程总共用的时间..一、设计分析第一步:设计良好游戏界面功能:实现基本的开始、退出游戏功能、选择游戏模式等..基本步骤:在实现过程中会遇到的问题及解决方案:1、背景面板上加载图片时需要重写paintComponent方法2、布局必须合理设置GridLayout不能改变组件的具体位置但可以缩放时相对位置不变..FlowLayout默认是占满第一行转向第二行;并且放大时相对位置改变..Null 布局可以自由布置组件位置和大小;但不易实现窗口放大时相对大小随之变化..若设置不合理;就可能出现多种错误..列如:无法插入背景图片;组建不能显现;组件位置与设计不符等等..3、添加背景面板监听重置各面板位置才能实现窗口放大时的相对位置不变第二步:线程类的设计功能:实现多只乌龟;兔子的多线程运行具体步骤:第二步会遇到的问题及解决方案:1、建立兔子线程;继承接口Runnable并正确的实现run方法..同时要特别注意兔子在比赛中还要模拟睡觉的动作..2、建立乌龟线程;继承接口Runnable并实现其run方法;要与兔子多线程运行;3、为了实现可选择多只龟兔进行赛跑;要实现多个兔子;乌龟线程;并能并发运行..4、游戏中提供了模式选择的功能;通过建立ItemSelect类来建立不同的游戏模式..二、各模块的功能及程序说明龟兔赛跑程序主要由以下几个模块构成:模块一:初始图形界面模块public class RRTT extends Applet implements ActionListener{ Graphics g;Panel panel;Label label1;label2;label3;Button button1;button2;RabTor1 rabTor1;public void init//Applet中的初始化函数有类中构造函数的作用最先调用 { panel=new Panel;panel.setLayoutnew FlowLayout;label1=new Label"欢迎使用该软件;1.0版本;不足之处;请多多指教";label2=new Label"*********东瑞制作*****程序员*****陈杰*********";label3=new Label;button1=new Button"进入游戏";button2=new Button"退出游戏";button1.addActionListenerthis;button2.addActionListenerthis;setLayoutnew BorderLayout;panel.addbutton1;panel.addlabel3;panel.addbutton2;addlabel1;BorderLayout.NORTH;addlabel2;BorderLayout.SOUTH;addpanel;BorderLayout.CENTER;}public void actionPerformedActionEvent e {ife.getSource==button1{ rabTor1=new RabTor1;//dispose;}else ife.getSource==button2{ System.exit0;}}}该模块主要是用来提供进入该程序游戏的初始图形用户界面;显示该程序的基本信息;提示用户进行操作..模块二:兔子线程模块该模块主要是实现兔子运行线程;类RabbitThread 继承了接口Runnable并实现其方法run;主要有两个功能的实现:1.来为兔子定义随机速度x1=x1+intMath.random*30;2.兔子动的实现方法ifthreadName.equals"rabbit"&&x1<=800int t1=0;t2=0;str1="rabbit";x1=x1+intMath.random*30;rab_time=rab_time+1;rab_road+=intMath.random*25;3.兔子获得一个随机的时间睡眠0—30秒str1="乌龟跑这么慢;我先睡一会";str2="哼;别以为自己是兔子就了不起你就睡吧";rabbit = getImage getCodeBase;"4.jpg";try{ t1=intMath.random*30000;Thread.currentThread.sleept1;}catch InterruptedException e{}模块三:乌龟线程模块该模块主要是实现乌龟运行线程;类TortoiseThread继承了接口Runnable并实现其方法run;主要功能的实现:乌龟移动实现的方法else ifthreadName.equals"tortoise"&&x2<=600{x2+=intMath.random*20;tor_road+=intMath.random*20;tor_time=tor_time+1;ifx2>140&&x2<240{ str2="tortoise"; }ifx2>255&&x2<=480{ str2="tortoise"; }ifx2>480&&x1<580{ str2="就快到终点了;我要坚持下去;坚持就是胜利";} 通过随机函数实现乌龟随机速度爬行..模块四:画布界面的设置与布局class Imagecanvas extends Canvas{Toolkit tool;Image image1;Imagecanvas{ setSize800;500;tool=getToolkit;image1=tool.getImage"6.gif";}public void paintGraphics g{ g.drawImageimage1;10;10;image1.getWidththis;image1.getHeightthis;thi s;}public Image getImage{ return image1;}}三、操作方法及试验结果:第一局比赛开始兔子领先兔子胜利第二局比赛开始兔子中途睡觉乌龟反超兔子;最终胜利本系统是一个基于多线程模式的龟兔赛跑小游戏;系统的规模很有限;功能实现也相对简单;但作为一个完整的系统;在整个过程中我还是学到了不少的知识;也对java语言有了较深的体会..通过本次课设试验;我对java的熟练程度得到了很大的提升;对包括多线程在内的java语言高级技术掌握的也更加熟练了;更对面向对象的分析思想;面向对象的设计方法有了直观的体会..同时;在游戏的制作过程中要用到很多课本上并未介绍到的知识;例如多线程队列事件等等;通过网络学习和与老师同学的交流使得自己对该部分的知识有了更广泛更深刻的体会..当然本次课设;通过我不断的尝试;不断的修改错误;解决问题;终于明白了程序员生活中天堂与地狱的感觉是什么了..虽然这个过程很苦;但我对java的熟练程度得到了很大的提升..同时;在游戏的制作过程中要用到很多课本上并未介绍到的知识;如当我遇到如何在一个Japplet类中创建另外一个Applet类的对象并运行线程的问题时;我纠结了很久没能找到解决办法;最终通过上网百度;不断尝试;不断错;在不断改;终于解决了..通过网络学习使得自己对该部分的知识有了更广泛更深刻的体会..这次的课程设计时间有点短;仅有二周的时间..在调试过程中屡调屡败的状态下;老师给了我热情的帮助;老师指导我们调试程序;说哪些是错的;哪些是多余的;哪些是必要的;一个杂乱无章的程序被修改得有条不紊;很显然结果也是最最正确的..本次系统的功能相对还比较单一;只能选择两种游戏模式;并且游戏也相对单调;缺乏趣味性;离一个真正的游戏软件还相差很远;以后如有时间;可以考虑去做一个真正的游戏软件..3.4 设计创新与关键技术3.4.1 设计创新1、用图形用户界面实现游戏界面;通过使用java中Jlabel;Jbutton;JtextArea;JcomboBox等swing组件来实现图形用户界面;同时通过设置布局;背景;字体等来丰富界面;最大程度的模拟龟兔赛跑的场景..2、能设置比赛时间;龟兔的数量等等..通过组合框组件的使用以及事件的订阅来实现用户对不同游戏模式的选择;在本程序中只是简单的设计了两种游戏模式供用户选择;也一定程度上实现了对比赛中龟兔的数量;比赛时间等参数的设置..3、在任意时间段内龟兔的速度是随机的..为了模拟龟兔赛跑结果的不确定性;在游戏开始后乌龟和兔子的速度都是通过随机函数产生的;当然;我们会在保证兔子比乌龟速度要快;兔子在赛跑途中看到乌龟落后下会偷懒睡觉的前提下给予乌龟;兔子以随机的速度;从而使得游戏的结果不确定;给用户更多的游戏的真实感..4、开始比赛之后以动画显示赛跑过程..用户进入游戏界面后;先选择游戏模式;然后单击开始按钮;乌龟和兔子将会以随机的速度开始朝终点线爬行;通过java中重复刷新技术达到动画效果;给用户更逼真的感官..3.4.2 关键技术游戏中提供了模式选择的功能;通过建立ItemSelect类来建立不同的游戏模式.. 建立兔子和乌龟线程;继承接口Runnable并正确的实现run方法..3.5结论程序的语法错误很容易查找和修改;但找出了语法错误并不代表程序已经完成..很多编译错误是由于函数名或变量名等程序对象的拼写错误引起的..在编写程序的过程中;需要认真仔细;以免出现拼写错误;增加调试程序的工序;浪费不必要的时间和精力..在这个过程中;我收获颇多;不仅理论知识掌握的更牢;实际动手能力也有所提高;再次让我感受到Java语言强大的功能;更激发了我Java语言的兴趣..如果说以前的编程仅仅是按照课本的要求进行的;那这个课程设计难度就提高了一个级别;它让们将所知道的知识联系到了一起;更加显示了程序的强大..致谢首先我要感谢我的老师在课程设计上给予我们的指导和提供给我们的支持和帮助;这是我们能顺利完成这次课程设计的主要原因;更重要的是老师帮我解决了许多技术上的难题;让我们能把程序做得更加完善..在此期间;我不仅学到了许多新的知识;而且也开阔了视野;提高了自己的设计能力..其次;我要感谢曾经帮助过我的同学;他们也为我解决了不少我不太明白的设计语言;和一些细节上的差错..本次设计是在高贤强老师的悉心指导下完成的;老师渊博的知识;严谨的治学态度;一丝不苟的工作作风;平易近人的性格都是我们学习的楷模..在论文的整理期间;高老师给了我们很多的意见和指导;才使得论文得以顺利的完成..最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学..在此;我诚心的对所有帮助过我的老师同学们说一句:谢谢参考文献1 丁振凡Java语言使用教程. 北京邮件大学出版社;2006.92 丁振凡Java语言使用教程实验指导. 北京邮件大学出版社;2006.93 Bruce Eckel Java编程思想. 机械工业出版社 2007.64 耿祥义 JAVA2实用教程.清华大学出版社 2009.55 陈国君 java 程序设计基础第二版清华大学出版社6 刘艺;吴英.Java程序设计大学教程 M.北京:科学出版社;2005年.7 赵文靖.Java程序设计基础与上机指导.北京:清华大学出版社;2006年.8 吴其庆.Java程序设计实例教程.北京:冶金工业出版社;2006年.9 耿祥义;张跃平.Java基础教程第2版 M.北京:清华大学出版社;2007年.10 美Bruce Eckel. Thinking In Java.英文第4版.北京:机械工业出版社;200711 杨昭编着.二级Java语言程序设计教程.北京:中国水利水电出版社;200612 赵文靖编着.Java程序设计基础与上机指导.北京:清华大学出版社;200613 张海藩.软件工程导论第四、五版M.北京:清华大学出版社;2008.14Cay SandGaryC.Java2核心技术卷1:基础知识M.机械工业出版社;2003.15邓光伟;李阿午;朱志.Java2核心技术卷2:高级特性M.机械工业出版社;2000. 16WatsonK;NagelC;齐立波.C#入门经典M.清华大学出版社;2002.17张广彬;孟红蕊;张永宝.C++课程设计案例精编M.清华大学出版社;2005.18朱喜福.C++程序设计M.人民邮电出版社;2005.19宛延闿.实用C++程序设计教程M.机械工业出版社;2006.附录源程序package sxx;import java.awt.*;import ng.*;@SuppressWarnings{ "unused"; "serial" }class Imagecanvas extends Canvas{Toolkit tool;Image image1;Imagecanvas{ setSize800;500;tool=getToolkit;image1=tool.getImage"6.gif";}public void paintGraphics g{g.drawImageimage1;10;10;image1.getWidththis;image1.getHeightthis;this;}public Image getImage{ return image1;}}/*public class frame extends Frame implements ActionListener{Panel panel;Label label1;label2;label3;Button button1;button2;RabTor1 rabTor1;frame{panel=new Panel;panel.setLayoutnew FlowLayout;label1=new Label"欢迎使用该软件;1.0版本;不足之处;请多多指教";label2=new Label"*****东瑞制作*****程序员*****孙肖肖******";label3=new Label;button1=new Button"进入游戏";button2=new Button"退出游戏";button1.addActionListenerthis;button2.addActionListenerthis;//label1.setText"欢迎使用该软件;1.0版本;不足之处;请多多指教";//label2.setText"*****东瑞制作*****程序员*****孙肖肖******";setLayoutnew BorderLayout;panel.addbutton1;panel.addlabel3;panel.addbutton2;addlabel1;BorderLayout.NORTH;addlabel2;BorderLayout.SOUTH;addpanel;BorderLayout.CENTER;addWindowListenernew WindowAdapter{public void WindowClosingWindowEvent e{System.exit0;}};setBounds300;200;300;200;setVisibletrue;validate;}public void actionPerformedActionEvent e{ife.getSource==button2{ rabTor1=new RabTor1;}}}*/package sxx;@SuppressWarnings"serial"public class RabTor1 extends JApplet implements Runnable{Graphics g;int i=1;Image backpic;rabbit;tortoise;zhongdian;tortoise2;rabbit2;int x1=0;y1=80;j=0;int x2=0;y2=180;//图片的位移int rab_road=0;tor_road=0;//图片跑的路程double rab_time=0.0;tor_time=0.0;//图片移动用的时间String str1="rabbit";str2="tortoise";//给字符串付初值{ setSize800;400;}///为什么没用public void init//Applet中的初始化函数有类中构造函数的作用最先调用{backpic = getImagegetCodeBase; "起跑.jpg";//将图片对象与图片绑定rabbit = getImage getCodeBase;"兔子.gif";tortoise = getImagegetCodeBase; "乌龟.jpg";zhongdian = getImagegetCodeBase; "乌龟赢了.png";tortoise2 = getImagegetCodeBase;"小乌龟.jpg";rabbit2=getImagegetCodeBase;"兔子在前.jpg";//rabbit3=getImagegetBase;"3.jpg";}public void paintGraphics g//此函数第四个调用{ this.g=g;setSize760;360;ifi==1{ g.drawImagebackpic; 0; 0; 800; 600; this;g.setColorColor.green;g.fillRect0; 0; 1600; 800;//填充矩形g.setColorColor.red;g.drawString"-————背景音乐————孙肖肖制作";30;30;g.drawLine0;75;600;75;//画跑道g.drawLine0;160;600;160;g.drawLine0;260;600;260;g.drawLine603;80;603;300;g.drawRoundRect0;10;680;300;60;60;//圆角矩形g.setColorColor.black;g.drawImagerabbit; x1; y1; 60; 60; this;g.drawStringstr1; x1; y1+80;g.drawImagetortoise; x2; y2; 60; 60; this;g.drawStringstr2; x2; y2+80;g.drawImagezhongdian; 600; 0; 60; 80; this;}else ifi==2g.drawImagetortoise2; 600; 180; 60; 60; this;/*else ifi==3{ int x3=245;y3=80;g.drawImagerabbit2;600;80;60;60;this;}else{ int x4=490;y4=80;g.drawImagerabbit2;x4;y4;60;60;this;}*/}public void updateGraphics g//用不到{}public void start//此函数第二个调用{Thread rab = new Threadthis; "rabbit";//创建一个兔子线程;this表示在这个类中找.rabbit是线程的名子.Thread tor = new Threadthis; "tortoise";rab.start;//线程对象调用start方法然后调用对应的run方法tor.start;}/*public void stop{ try{rab.stop;rab=null;tor.stop;tor=null;}catchException e{}}*/ //为什么没用//public void destroy//{ }public void run//此函数第三个调用{URL codebase=getCodeBase;AudioClip audio1=getAudioClipcodebase;"龟兔赛跑.wav";g.drawString"-————背景音乐————鲁晶晶制作";30;30;audio1.loop;boolean stop=false;//标志;此函数的精典之处.控制兔子;龟什么时候停whilestop{try{Thread.currentThread;Thread.sleep1000;//当前线程调用sleep函数.}catch InterruptedException ex{}String threadName=Thread.currentThread.getName;//取得当前线程的名子.ifthreadName.equals"rabbit"&&x1<=800//兔子动的实现方法{ int t1=0;t2=0;str1="rabbit";x1=x1+intMath.random*30;rab_time=rab_time+1;rab_road+=intMath.random*25;ifx1>=120&&x1<=140&&x1<x2{str1="乌龟跑这么慢;我肯定能追上他我先睡一会"; str2="哼;别以为自己是兔子就了不起你就睡吧"; rabbit = getImage getCodeBase;"兔子睡觉.jpg";}ifx1>=120&&x1<=130{str1="乌龟跑这么慢;我先睡一会";str2="哼;别以为自己是兔子就了不起你就睡吧"; rabbit = getImage getCodeBase;"兔子睡觉.jpg"; try{t1=intMath.random*30000;Thread.currentThread;Thread.sleept1;}catch InterruptedException ex{}rab_time+=doublet1/1000;}ifx1>140{ rabbit = getImage getCodeBase;"rabbit.gif";}ifx1>=240&&x1<=250{ str1="乌龟跑这么慢;让我再睡一会吧";str2="哼;别以为自己是兔子就了不起你就睡吧";rabbit = getImage getCodeBase;"兔子睡觉.jpg";try{t2=intMath.random*20000;Thread.currentThread;Thread.sleept2;}catch InterruptedException ex{}rab_time+=doublet2/1000;}ifx2>=600&&x1<600 //乌龟已经到终点{stop=true;str1="啊我输了这次不算;因为我睡觉了;再比一次";str2="我到终点啦总用时秒:"+tor_time;}ifx1>=600&&x2<600{stop=true;str1="哈哈;我赢啦;还想跟我比总用时秒:"+rab_time;//兔子到终点rabbit = getImage getCodeBase;"兔子赢了.jpg";//换图片str2="我要坚持"; //乌龟继续跑}ifx1>=600&&x2>=570{ stop=true;str2="虽然我失败了;但我并不会气馁"+"总用时秒:"+tor_time;}}else ifthreadName.equals"tortoise"&&x2<=600//乌龟移动实现的方法{x2+=intMath.random*20;tor_road+=intMath.random*20;tor_time=tor_time+1;ifx2>140&&x2<240{ str2="tortoise"; }ifx2>255&&x2<=480{ str2="tortoise"; }ifx2>480&&x1<580{str2="就快到终点了;我要坚持下去;坚持就是胜利";}ifx2>=600&&x1<600{i=2;str2="我到终点啦总用时秒:"+tor_time;str1="不这一局不算数;我刚才睡觉了才输的;在比一局的话;我肯定能赢";stop=true;repaint;new Imagecanvas;}}}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
System.out.println("请输入月份");
Scannersc=new Scanner(System.in);
intm=sc.nextInt();
inttemp = 0;
for (inti = 3; i <=m; i++) {
if (m==1||m==2)
f2=1;
else
temp=f2;
f2=f1+f2;
f1=temp;
}
System.out.println(f2);
}
}
intm =sc.nextInt();
for (inti = 1; i <= m; i++) {
System.out.println("第" + i + "个月的兔子为:" + f(i));
}
}
public staticintf(intx) {
if (x == 1 || x == 2)
return 1;
else
return f(x - 1) &:
package rabbit;
importjava.util.Scanner;
public class Rabbit1 {
public static void main(String[]args) {
intf1 = 1;
intf2=1;
源代码如下:
递归方式:
package rabbit;
importjava.util.Scanner;
public class Rabbit {
public static void main(String[]args) {
System.out.println("请输入月份");
Scannersc= new Scanner(System.in);
java经典问题——生兔子
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
从第三个月起,后面的兔子总数都等于前面两个月的兔子总数之和,即为斐波那契数列。
相关文档
最新文档