目录
25:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现)
Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
(注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)
实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。
例:输入:692223361219输出:6922233612192
29:将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法?
30:用100元人民币兑换10元,5元,1元的纸币(每种都要有)共50张,计算有多少种兑换方案
31:设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?
25:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现)
提示:采用逆向思维分析问题。
public class DemoText1 {
public static void main(String[] args) {
/*
简体路程:
最后 一开始
花,酒,花,酒,花,酒,花,酒,花,酒
*/
double sum=0;
/*可以看到最后碰到花,喝完了酒,那么在最后一次酒哪里,酒只有二分之一
(遇店加一倍),所以说,就先+1,再把整体除以二(遇店加一倍),就可
以求出一开始的了。*/
for(double i=1;i<=10;i++){
if(i%2==0){
sum=sum/2;
System.out.println(sum);
}else{
sum++;
}
}
System.out.println("有酒:"+sum);
}
}
26:开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就替换为单词“Flip”,5的倍数就替换为单词“Flop”,既为3的倍数又为5的倍数则替换为单词“FlipFlop”。
public class DemoText2 {
public static void main(String[] args) {
System.out.println("------------FlipFlop------------");
int num=0;
for(int i=1;i<=100;i++){
if(i%3==0){
System.out.print("Flip\t");
}
if(i%5==0){
System.out.print("Flop\t");
}
if(i%3==0 && i%5==0){
System.out.print("FlipFlop\t");
}
System.out.print(i+"\t");
num++;
if(num%10==0)
System.out.println();
}
}
}
27:生成13位条形码
Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
例如:690123456789
计算其校验码的过程为:
@前十二位的奇数位和6+0+2+4+6+8=26
@前十二位的偶数位和9+1+3+5+7+9=34
@将奇数和与偶数和的三倍相加26+34*3=128
@取结果的个位数:128的个位数为8
@用10减去这个个位数10-8=2
所以校验码为2
(注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)
实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。
例:输入:692223361219输出:6922233612192
import java.util.Scanner;
public class DemoText3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入12位数字:");
String str = sc.next();
int jiShu = 0;
int ouShu = 0;
int sum = 0;
// 把偶数和奇数收集起来,用来做后面的乘法操作
for(int i=0;i<12;i++){
if(i%2==0){
jiShu = jiShu+(int)str.charAt(i);
}else{
ouShu = ouShu+(int)str.charAt(i);
}
}
sum=(jiShu+ouShu)*3;
// 求出校验位
int geWei = sum%10;
// 判断是否为零
if(geWei==0){
System.out.println("最终结果:");
System.out.println(str+0);
}else{
System.out.println("最终结果:");
System.out.println(str+(10-geWei));
}
}
}
28:求两个整数的最大公约数和最小公倍数
import java.util.Scanner;
public class DemoText4 {
public static void main(String[] args) {
// 最大公约数:指两个或多个整数共有约数中最大的一个。
// 最小公倍数:在两个或两个以上的自然数中,如果它们有相同的倍数,
// 这些倍数就是它们的公倍数,其中除0以外最小的一个公倍数
Scanner sc = new Scanner(System.in);
System.out.println("输入第一个数:");
int min = sc.nextInt();
System.out.println("输入第二个数:");
int max = sc.nextInt();
int x=0;
if(max<min){
x=max;
max=min;
min=x;
}
// 能除尽这两个数,且最大的数,所以说,要从大到小,减少判断
for(int a=min;a>1;a--){
if(max%a==0 && min%a==0){
System.out.println("最大公因数:"+a);
break;
}
}
// 如果最大值是,小的值的倍数,那么,最小公倍数就是最大值的本身
if(max%min==0){
System.out.println("最小公倍数:"+max);
}else{
System.out.println("最小公倍数:"+max*min);
}
}
}
29:将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法?
public class DemoText6 {
public static void main(String[] args) {
// 将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法?
int sum=0;
for(int i=0;i<=10;i++){
for(int a=0;a<=20;a++){
for(int b=0;b<=100;b++){
if(i*10+a*5+b==100){
sum++;
}
}
}
}
System.out.println("一共有:"+sum+"兑换方法。");
}
}
30:用100元人民币兑换10元,5元,1元的纸币(每种都要有)共50张,计算有多少种兑换方案
public class DemoText5 {
public static void main(String[] args) {
// 用100元人民币兑换10元,5元,1元的纸币(每种
// 都要有)共50张,计算有多少种兑换方案
int sum=0;
// 因为每种都要有,所以,起始都为一
for(int i=1;i<=10;i++){
for(int a=1;a<=20;a++){
for(int b=1;b<=100;b++){
if(i*10+a*5+b==100){
sum++;
}
}
}
}
System.out.println("一共有:"+sum+"兑换方法。");
}
}
31:设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?
public class DemoText7 {
public static void main(String[] args) {
int num=0;
int sum=0;
for(int i=50;i>0;i--){
// 计数,如果num==3,就加一瓶
num++;
if(num%3==0){
i++;
// num=0;这一句加不加都可以
}
sum++;
}
System.out.println(sum);
}
}