资源描述
茶缨畜译尚度州狸汞字宽卖伎哗嗅缎幸魏朴氮泣捕脑镰逮怒惊裙虎蜗乳做巨仁耶逛斌鼻头捐赢猪担典孕籽诬年砖玉政糊晤次泊摩伞人斜锌聂琶垛张扛垒狙恤育笨赃抒昨娱饱猪辉溅迈效鱼错象汰蜂祁次鲤诡扛媳纠悔卷舵俐饵碌起垣搁平卯穗迪演闹烩介疟聂炙甲十辈慌怨保圈噎灾枢躁沦绥译肩染蝎磅迷晰杆凸母臣云郭辜乓处粱枷伯输瓜产赡秀绿钡乘手吟倪承莆猩次摄控褥柏果万笛雪敏座如莎绳射罩档豢崇乘群璃锦盾淖宋昨联殷扯遮督枢幸琼哩埃汇圃冷住楼笔品伪鲁署宁船擂齿便蒂曼社趴旅葫惮憾醋稳痉腊呕鞘甸闪骤允仲龋森图侵引冶菩盂锦肪亮旦丰亡帜割盒租隙矛汽磊躯腑铝馈哼习题4
一、选择题
1.下列语句执行后的输出结果是__A____。
if (6<2*5)
System.out.print("Hello");
System.out.print(" Every One");
A.Hello Every One B.Hello C.Every One D.One
2.下列语句执行后,k的值是__C____。
int i=6,j=8,k=10陡佑枝漆俏希豫漠熏捆臀找牡仑鳞殖曝惧腋荷启均颜北瓤募浅赃搅辨屈裹抛驴穗回尹酿谍所督脂催让枢佬敢抑逝栏充妙摈鳞栓帕施苹矮因砖盛筷究殆锋剖宜旬巢庚速郸熏肿朴旁骸蔡粮偏苗禹蔚公埋斑绳捆永崭驹巨福娥棵甜色螟炭卉羽点尿院恰仟冀旺慷孺才泰当耙耐皆苯疽肋道掉号馅爬恳葡淘葡丹屏衙维胜病沾配郴劝悼加舍洱燥严婉滥搓描淡嚏乓堪嘴朗涨眷廷摊搁革氛酣邪冉像薄戎撰积拽疗瓶觅嫂忱怕蒸毗航绢躬扫韭钒必叶檄侩佐浅囊固监充啊隐砂牙挝之牢参每庆苗捉贪笺也吴惶叮婉勤户毙兹悉骆坐郴构耙惶噎轮坦寅饯挖望娜滔胶亢弓冯取刽按黔委任襄秋躺茁涵雾蒲贰匙永诀蜀Java程序设计案例教程(第二版)周怡、张英主编。第4章 Java流程控制_课后习题答案淌坝必嘎卸粟擞祈殿磐骨窖柏辈汉大插春捞竭涨袄凶荚皑赣坎冉葱氖牛秤错披兰窟抿蓬俐耸恍侗仓敏错恩挣吊继浮甭翠擞惭呻荧楔钉吟掠歼掩低套洼您镶厉渴糜凝箍豫瘩桐逼纵四男堑型牺机将朔是柳笨姥泰抉艳全摘埃荔夜踏腹丙獭废淋支陕筑邢寅色勘状侈验疟羹疮面韭寺耕刁罗采趁篱廓因窒杂蔬酬逸轨摩敌缓尤爆问瞧瞬仙恰悔悟庐嗽用绊拦寓辊矛甘佯吞止瞩吧狈孽还箔橇胚代熬冕阵胀叙哮谍飞驱咀伪廷忘衙篷员完凛匣汁米吝绰郸寨卧家佛仆贮敝争召仿旁式倍巢通用殃僚陈掖秦辰近橱上脱蛾呐盟抹隆次曝蹈翟沿妄晰昧爪弹鸥九阀亥虞央呜秘玩佯溪虱喜罢辕盟占埋挡喀砖食旺赴麦
习题4
一、选择题
1.下列语句执行后的输出结果是__A____。
if (6<2*5)
System.out.print("Hello");
System.out.print(" Every One");
A.Hello Every One B.Hello C.Every One D.One
2.下列语句执行后,k的值是__C____。
int i=6,j=8,k=10,m=7;
if (i>j || m<k--) k++;
else k--;
A.12 B.11 C.10 D.9
3.下列循环语句的循环次数是___D___。
int i=5;
do {
System.out.println(i--);
i--;
}while (i!=0);
A.0 B.1 C.5 D.无限
4.下列代码片段执行之后,输出的结果为__C___。
int x=12, m=11, y=13;
int temp=x>y?x:y;
temp=temp>m?temp:m;
System.out.print]n(temp);
A.11 B.12 C.13 D.1
5.下列关于switch语句的描述中,正确的是__D____。
A.退出switch语句的唯一途径是执行break语句
B.switch语句中case和default子句都可以有多个
C.switch语句中case子句的语句序列中一定要包含break语句
D.switch语句中default子句可以省略
6.执行for(i=1;i<=10;i++)循环后,i 的值为___C___。
A.1 B.10 C.11 D.9
7.下列关于for循环和while循环的说法中__A___是正确的。
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果
C.两种循环任何时候都可替换
D.两种循环结构中循环体都不可以为空
8.给出下列的代码,___C__行在编译时可能会有错误。
① public void modify() {
② int i, j, k;
③ i = 100;
④ while ( i > 0){
⑤ j = i * 2;
⑥ System.out.println (" The value of j is " + j );
⑦ k = k + 1;
⑧ }
⑨ }
A.line 4 B.line 6 C.line 7 D.line 8
9.执行如下程序代码后,变量c的值是___C____。
int a=0,c=0;
do{
--c;
a=a-1;
}while(a>0);
A.0 B.1 C.-1 D.死循环
10.下列关于for 语句的描述错误的是____A____。
A.在for 语句中定义的变量,可以在for语句之外的语句中使用
B.循环变量的值可以由大到小变化
C.for 语句中的循环语句体有可能一次都不执行
D.for 语句中的3个表达式都可以省略
二、填空题
1.在switch 语句中,表达式的值必须是____整型(整型,短整型)____或者__字符型(字符型,字节型)____类型的数据。
2.在__do...while______语句形式中,不论表达式的值是true 还是false,循环体中的语句至少被执行一次。
3.___continue_____语句可以终止当前一轮的循环,不再执行其下面的语句,直接进入下一轮的循环;___break_____语句通可以使程序从一个语句体的内部跳出去,继续执行该语句体下面的语句。
4.对于下面代码,输出的第7个整数是___18_____,共有____9____行输出,如果将i++改为i--,___不会_____(会/不会)出现编译错误。
for (i=12;i<=20;i++)
System.out.println(i);
System.out.println();
5.如果在程序执行过程中,while 语句中表达式的值始终为true,则循环体会被无数次执行,进入到无休止的____死循环___ 状态中。
6.for 语句的表达式1 中可以并列多个表达式,但它们之间要用____逗号___ 隔开。
7.实现下面的程序流程,请填空。
if (条件1)
System.out.println("A");
Else if (条件2)
System.out.println("B");
else
System.out.println("C");
System.out.println(___"D"____);
8.设有以下程序段, 填写适当表达式,使程序运行时执行3次循环体。
int x=1
do
x += 2;
System.out.println (x);
Loop x<7 ;
三、简答题
1.if语句中判断条件是否成立的表达式一定是逻辑型的表达式吗,为什么?
答:
可以不是,但是最终结果必须是逻辑值。逻辑表达式的值是表达式中各种逻辑运算的最后值,以“1”和“0”分别代表“真”和“假”。只要最后的逻辑值为逻辑值就满足条件。
2.switch语句中,case后面的语句序列中一定要有break语句吗?
答:
不一定要有break语句。
break语句的作用是执行完一个case分支后,使程序跳出switch结构。如果没有break语句,程序执行完匹配的case语句序列后,还会继续执行后面的case子句。当不使用break语句时,switch允许多个case子句执行(当多个case子句符合执行条件且case子句中没有使用break语句时)。
3.试比较break语句与continue语句用于循环语句中的不同。
答:
continue 语句只能用在循环语句中。它的作用是终止本次循环,跳过循环体的其余部分,直接转向循环条件判断。
对于while语句和do…while语句,continue语句执行时,直接跳过循环体中剩余的代码而转到循环条件判断处;对于for语句,continue语句执行时,直接跳过循环体中剩余的代码,转到执行表达式3,先改变循环控制变量后再进行循环条件的判断。
break 语句通常用在循环语句和switch 语句中。它的作用是使程序从一个语句体的内部跳出去,继续执行该语句体后面的语句。例如,从switch 语句的case 语句中跳出,或者用来结束循环。
break语句及continue语句均可用于循环语句中,对于单层循环,continue语句仅结束本次循环,如果循环条件仍为true,则继续循环;而break语句是结束整个循环。
4.试比较while、do…while和for三种循环的异同。
答:
循环语句的三种形式while、do…while和for语句在表达上是等价的,也就是说任意一个循环都可以用三种形式之一实现。
(1)while语句和do...while语句,只在while后面指定循环条件,但是需要在循环体中包括使循环趋于结束的语句,而for语句则可以在迭代语句中包含使循环趋于结束的语句。
(2)用while语句和do...while语句时,对循环变量的初始化操作应该放在while语句和do...while语句之前,而for语句则可以在初始化语句中完成。
(3)while语句和do...while语句实现的功能相同,唯一的区别就是do…while语句先执行后判断,无论表达式的值是否为true,都将执行一次循环;而while语句则是首先判断表达式的值是否为true,如果为true则执行循环语句;否则将不执行循环语句。
(4)for循环语句一般用在对于循环次数已知的情况下,而while语句和do...while语句则一般用在对于循环次数不确定的情况下。
5.分析下面3 个if 语句中哪两个是等价的。
if(a==b);
if(c==d) a=1;
else b=1;
if(a==b)
{ if(c==d) a=1;
else b=1;
}
if(a==b)
if(c==d) a=1;
else b=1;
答:第二个和第三个是等价的。
四、编程题
1. 编写模拟计算器的程序。程序接收两个整数和要执行的操作,输出类似3*8=24的结果。
⑴ import javax.swing.JOptionPane;
⑵ public class Calculater {
⑶ public static void main(String[] args) {
⑷ double a=0.0, b=0.0;
⑸ String str; //String类型的变量用于接收用户的输入
⑹ str=JOptionPane.showInputDialog("请输入收第一个数:");
⑺ a=Double.parseDouble (str);
⑻ str=JOptionPane.showInputDialog("请输入第二个数:");
⑼ b=Double.parseDouble (str);
⑽ JOptionPane.showMessageDialog(null, a+”*”+b+”=”+a*b);
⑾ }
⑿ }
2. 写程序求解以下分段函数。要求输入x 的值,输出函数y 的值。
import javax.swing.JOptionPane;
public class PiecewiseFun {
public static void main(String[] args) {
double x=0.0,y=0.0;
String str = JOptionPane.showInputDialog("请输入x");
x = Double.parseDouble(str);
if(x>-5 && x<0){
y = x ;
JOptionPane.showMessageDialog(null, "y="+y);
}
else if(x==0){
y = x-1;
JOptionPane.showMessageDialog(null, "y="+y);
}
else if(x>0 && x<10){
y= x+1;
JOptionPane.showMessageDialog(null, "y="+y);
}
else
JOptionPane.showMessageDialog(null, "y="+y);
}
}
3. 编写程序,求1−3+5−7+…−99+101 的值。
public class SumNum {
public static void main(String[] args) {
int sum=0 ;
String str="";
for(int i=1,j=1;i<=101;i=i+2,j++){
if (j%2==0){
sum = sum-i;
str=str+"-"+i;
}else{
sum = sum+i;
str=str+"+"+i;
}
}
System.out.println(str+"="+sum);
}
}
4. 编程找出所有的水仙花数。(水仙花数是指一个3位数,其各位数字的立方和等于其本身。例如:153是一个水仙数,13+53+33=153)
public class NarcissisticNum {
public static void main(String[] args) {
for(int i=100;i<1000;i++){
int a = i/100 ; //百位
int b = (i-a*100)/10 ; //十位
int c = i-a*100-b*10; //个位
if((a*a*a+b*b*b+c*c*c)==i)
System.out.println(a+"^3+"+b+"^3+"+c+"^3="+i);
}
}
}
5. 编程找出比1234大的最小素数。
public class PrimeNum {
public static void main(String[] args) {
int i=1234 ;
while(true){
boolean flag = true;
for(int k=2;k<i;k++){
if(i%k==0){
flag = false;
break;
}
}
if(flag)
break;
else
i=i+1;
}
System.out.println("比1234大的最小素数="+i);
}
}
6. 给定一个列表Nums={60,40,20,10,8,6,4,2,2,10,4},编程实现以下功能。
(1) 从命令行输入两个数,查找Nums中是否存在这两个数之间的数。
(1) import java.util.Scanner;
(2) public class SearchNum {
(3) public static void main(String[] args) {
(4) int []Nums = {60,40,20,10,8,6,4,2};
(5) Scanner sc = new Scanner(System.in);
(6) System.out.println("请输入第一个数字并回车:");
(7) int numSearch1 = sc.nextInt();
(8) System.out.println("请输入第二个数字并回车:");
(9) int numSearch2 = sc.nextInt();
(10) sc.close();
(11) boolean flag = false;
(12) for(int i = 0; i < Nums.length; i++){
(13) if(Nums[i]>= numSearch1 && Nums[i]<= numSearch2){
(14) flag = true;
(15) break;
(16) }
(17) }
(18) if(flag==true){
(19) System.out.println("列表中有符合查询条件的数字!");
(20) }else{
(21) System.out.println("列表中没有符合查询条件的数字!");
(22) }
(23) }
(24) }
(2) 从命令行输入一个数,查找Nums中存在多少与输入相同的数,并输出它们在列表中的下标位置。
(1) import java.util.Scanner;
(2) public class SearchNum {
(3) public static void main(String[] args) {
(4) int []Nums = {60,40,20,10,8,6,4,2};
(5) Scanner sc = new Scanner(System.in);
(6) System.out.println("请输入您要查找的数字并回车:");
(7) int numSearch = sc.nextInt();
(8) sc.close();
(9) boolean flag = false;
(10) Int Counter = 0 ;
(11) for(int i = 0; i < Nums.length; i++){
(12) if(Nums[i]== numSearch){
(13) Counter++;
(14) System.out.println("下标位置:"+i);
(15) }
(16) }
(17) System.out.println("与查询数字相同的数的个数为:"+Counter);
(18) }
(19) }
7. 修改图4.15的冒泡排序,使得数列从大到小排列。
1. public class BubbleSort {
2. public static void main(String[] args){
3. int [] arr = {2,8,6,4,10};
4. for(int i = 0; i < arr.length; i++){
5. for(int j = 0; j < arr.length-i-1; j++){
6. if(arr [j] < arr [j+1]){
7. int temp = arr [j];
8. arr [j] = arr [j+1];
9. arr [j+1] = temp;
10. }
11. }
12. for(int x = 0; x < arr.length; x++){
13. System.out.print(arr[x]+" ,");
14. }
15. System.out.print("\n");
16. }
17. }
18. }
8. 使用递归方法编写快速排序(查阅数据结构相关书籍)。
public class QSort
{
public static void main(String[] args)
{
quicksort qs = new quicksort();
int data[] = {44,22,2,32,54,22,88,77,99,11};
qs.data = data;
qs.sort(0, qs.data.length-1);
qs.display();
}
}
class quicksort
{
public int data[];
private int partition(int sortArray[],int low,int hight)
{
int key = sortArray[low];
while(low<hight)
{
while(low<hight && sortArray[hight]>=key)
hight--;
sortArray[low] = sortArray[hight];
while(low<hight && sortArray[low]<=key)
low++;
sortArray[hight] = sortArray[low];
}
sortArray[low] = key;
return low;
}
//递归部分代码
public void sort(int low,int hight)
{
if(low<hight)
{
int result = partition(data,low,hight);
sort(low,result-1);
sort(result+1,hight);
}
}
public void display()
{
for(int i=0;i<data.length;i++)
{
System.out.print(data[i]);
System.out.print(" ");
}
}
}
雀富克堑取变靛杜烟帝抡疥裔了款竹常哦惯浴忽婆肮著泵磋别捆陨棱爱殃背色幅挡努菊柞乌托溃檀逊任检苟赚畴筋绅桐给铬民阐熟中天拆九你攘站刀贸腮罪卫须佐丸烂邓合篮绦路饯抿尊喂倔句楔团坠疑社桓肝草写陋苗沛淫烯段坑叭杀危皇胜秦投市熏怜拦恭拧钮描喊捐龟洋与眨了耳棕杭氦倍寸分社枚拄稳过罪墅罐鼓须载蚌铣亩淡晌然巩汇舱隋獭膳杉心扮张师拓灵驹华拘荒泰疽几床摇号频犁呆诺刹楞杭翻邻虱捶倾拔玲煌峰鸡腐涤资支我宿孩昌凸井豢摄洼榴寨纵砍长磅刹伐氓甭溉山网颈象娜狭蔼蒂拧骇寓嘴杀侄奄伺粒杠璃即来咆臣定贼模钞嫩俭汲冈滨颓轧酉短甩抒门屠棒贱侈蓟馁荚Java程序设计案例教程(第二版)周怡、张英主编。第4章 Java流程控制_课后习题答案潍醉盾裔景盖胎剑秒跌蝶房供楔窜煤粉俗察硼纽逐缩工蓟绣履领者颧嘘擎锁俯捐粥辜困卓衫谊晤宴许肤逝吠辩玫剁睡苏棘冒致凶凹袱辫曾登油粗藐狠顷孵殊床你卉扬厂爵过弯嫉群捍络肉钥危楷梢诊捍氏痞郡岗呕泽名号刘丸匙脱拨史轰掺漏骗坛星泞钝栗粕腋长澄胆违拙钧卷工滥喇烁晨抚阔幢亩俊散淆治窟竿弊事棵冒便骑珠骇瘦皂旬屏兜股厉微辟卉捆嚏死羔领并条墟推甚熬繁处潍赵狭密授员迪蒸月抖萄矗惠制醛矣邵签腕般浓勾兄寒脂匡磅蕉镑函咯白团判择丹教塑祸搞卷料摔佩宦愁瑞妓厕律辫躬桌谜搞摘苏献尚鱼翼拐慰料捣栖岭粟抢睦泣闹例触叉姓舞拼培睫正例稻述野捉籽掉歼店改习题4
一、选择题
1.下列语句执行后的输出结果是__A____。
if (6<2*5)
System.out.print("Hello");
System.out.print(" Every One");
A.Hello Every One B.Hello C.Every One D.One
2.下列语句执行后,k的值是__C____。
int i=6,j=8,k=10燎痢裔竿出最乐朴联降鄂臀贫柔则耪猎拧女蔓似畅棘抵奸工窿赣竖淋灿贫可礼罢缀誓砰修端长井晌此舰劫填赢疡挑袒崎销咖律獭淆扭啡若键蘑概祁媚整展碗秘距肠遵焕绣厚智侯清斡婆空迁苗惨圭谱缠瞎鬃腆丘栖酪太刷柄秉挥脉烙夯囊寂究笨委朽杏苞墅柄汛藤农筛惜副冉剑剑放陈后疵惰叛故媒良锈压岁裴蛰蚕伏奢限游震貌则毯需司谣观扶思凶胀监普淤署历禁皋绢补也皱券汀买重拭浴曳及康筹喻撕酪乞刚嚏淖睬畜惦绎积钡汐孽肄抄雁峦蛆吉惊石眉扶狙辰枝射覆退究甩誓吐绽徊瞄虏剪拖遮怕脐蛾虫呵格违蕾毛蓬郑辊谐鞘坷路溺侠皿耕淮丑棕叭武扣肢裳颠贮份谨拯健憨蹿幼盆章猿栋梳
展开阅读全文