Java50道经典习题-程序18 乒乓球赛

题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。
a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
分析:如果是人经过逻辑推理可以很快的得到结论。但是计算机处理此问题,不可能立即得出结论,而必须对每一种组合一一验证,找出符合条件的组合。
假设甲队a,b,c的对手分别是i,j,k i,j,k互不相等并且分别都是乙队x,y,z中的一人
利用三重for循环保证i,j,k互不相等
再将题设条件“a说他不和x比,c说他不和x,z比”转换成if判断语句进行判断,最后输出结果

 1 public class Prog18{
 2     public static void main(String[] args) {
 3         char i,j,k;  //假设a的对手是i,b的对手是j,c的对手是k
 4         for (i = ‘x‘; i <=‘z‘;i++) {               //i可能是x,y,z中的任意一个,对i进行遍历
 5             for (j = ‘x‘; j <=‘z‘;j++) {           //j可能是x,y,z中的任意一个,对j进行遍历
 6                 for (k = ‘x‘; k <=‘z‘;k++) {       //k可能是x,y,z中的任意一个,对k进行遍历
 7                     if(i!=j&&i!=k&&j!=k){           //要满足i,j,k互不相等,首先要满足 i!=j其次要满足 i!=k    最后要满足j!=k
 8                         if(i!=‘x‘&&k!=‘x‘&&k!=‘z‘){//a的对手是i,a不与x比,即i!=‘x‘    c的对手是k,c不与x,z比,即k!=‘x’&& k!=‘z‘
 9                             System.out.println("a的对手是"+i+"  b的对手是"+j+"  c的对手是"+k);
10                         }
11                     }
12                 }
13             }
14         }
15     }
16 }
17 /*运行结果
18 a的对手是z  b的对手是x  c的对手是y
19 */

原文地址:https://www.cnblogs.com/parkour1026/p/10796809.html

时间: 2024-10-02 11:26:45

Java50道经典习题-程序18 乒乓球赛的相关文章

Java50道经典习题-程序11 求不重复数字

题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 1 public class Prog11 { 2 public static void main(String[] args) { 3 int count=0; 4 int n=0; 5 for(int i=1;i<5;i++) { 6 for(int j=1;j<5;j++) { 7 if(i==j) 8 con

Java50道经典习题-程序8 输入数字求和

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制. 分析:关键是计算出每一项的值. 1 import java.util.Scanner; 2 public class Prog8{ 3 public static void main(String[] args){ 4 System.out.print("求s=a+aa+aaa+aaaa+...的值,请输入a的值:");

Java50道经典习题-程序12 计算奖金

题目:企业发放的奖金根据利润提成.利润(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,求应发放奖金总数? 分析:请利用数轴来

Java50道经典习题-程序10 自由落体

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? 1 import java.util.Scanner; 2 public class Prog10 { 3 public static void main(String[] args) { 4 System.out.println("请输入小球落地时的高度和求解的次数:"); 5 Scanner scan=new Scanner(System.in); 6

Java50道经典习题-程序13 根据条件求数字

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?分析:完全平方数:如果一个数能是由两个相同的数相乘的结果,那么这个数就是完全平方数,例如:9==3*3:9就是完全平方数.在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果. 1 public class Prog13 { 2 public static void main(String[] args) { 3 int n=0; 4 for

Java50道经典习题-程序9 求完数

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. 1 public class Prog9 { 2 public static void main(String[] args) { 3 int n=1000; 4 compNumber(n); 5 } 6 //求完数 7 private static void compNumber(int n) { 8 System.out.println(n+"以内的完数:&q

Java50道经典习题-程序20 求前20项之和

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.分析:请抓住分子与分母的变化规律.三个连续分数之间的规律是:上两个分子之和等于第三个分数的分子,上两个分母之和等于第三个分数的分母 1 public class Prog20{ 2 public static void main(String[] args){ 3 double n1 = 1; 4 double n2 = 1; 5 double fraction = n1/n2; 6 dou

Java50道经典习题-程序16 在控制台上打印九九乘法表

题目:输出9*9口诀.分析:利用双重for循环进行输出,分行与列考虑,共9行9列,i控制行,j控制列. 1 public class Prog16 { 2 public static void main(String[] args) { 3 for(int i=1;i<10;i++) { 4 for(int j=1;j<i+1;j++) { 5 System.out.print(j+"*"+i+"="+(j*i)+"\t");//使用

Java50道经典习题-程序19 输入行数打印菱形图案

题目:根据用户输入的行数打印菱形图案,若用户传入的是为偶数则提示用户重新输入,例如输入数字7打印出如下菱形图案   *  *** ************ *****  ***   *分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列. 1 import java.util.Scanner; 2 public class Prog19 { 3 public static void main(String[] args) { 4 Sca