2019

#一些简单的java程序练习
1.求1+2!+3!+…+20!的和

public class Factorial {
    static int sum = 1;
    static int result=0;
    public static void main(String[] args) {
        for (int i = 1; i <= 20; i++) {
            result += Factor(i);
            sum=1;
        }
        System.out.println(result);
    }

    static int Factor(int a) {
        int b = a;
        sum *= b;
        b--;
        if (b > 0) {
            Factor(b);
        }
        return sum;
    }
}

2.求101-200之内的素数

public class Sushu {
    public static void main(String[] args) {
        boolean b;
        for (int i = 101; i < 200; i += 2) {
            b = false;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    break;
                }
                else if (j > (i / 2)) {
                    b = true;
                    break;
                }
            }
            if (b == true) {
                System.out.println(i);
            }
        }
    }
}

3.打印菱形

public class Diamond {
    public static void main(String[] args) {
        int num=7;
        for (int i = 0; i < num; ++i) {
            int flag=Math.abs((num/2)-i);
            for (int j=0;j<flag;++j) {
                System.out.print(" ");
            }
            for (int j = 0; j < 2*(num/2-Math.abs(i-num/2))+1; ++j) {
                System.out.print("*");
            }
            System.out.print("\n");
        }
    }
}

4.打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方

public class Narcissus {
    public static void main(String[] args) {
        int thousand;
        int hundred;
        int bit;
        int sum;
        for(int i=100;i<1000;++i){
            thousand=i/100;
            hundred=(i/10)%10;
            bit=i%10;
            sum=(int)(Math.pow(thousand,3)+Math.pow(hundred,3)+Math.pow(bit,3));
            if(sum==i){
                System.out.println(i+"是水仙数");
            }
        }
    }
}

5.利用递归方法求5!。

public class Factorial {
    static int sum = 1;

    public static void main(String[] args) {
        int a=5;
        System.out.println(Factor(a));
    }

    static int Factor(int a) {
        int b = a;
        sum *= b;
        b--;
        if (b > 0) {
            Factor(b);
        }
        return sum;
    }
}

6.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?12个月

public class Rabbits {
    public static void main(String[] args) {
        int sum=2;//兔子的总数
        int[] flag=new int[12];//可以生殖兔子数量
        for(int i=1;i<=12;++i){
            if(i<3){
                flag[i-1]=0;
                System.out.println("第"+i+"月兔子数量为:"+sum);
                continue;
            }
            else if(i==3){
                flag[i-1]=2;
                sum+=flag[i-1];
                System.out.println("第"+i+"月兔子数量为:"+sum);
                continue;
            }
            else{
                flag[i-1]=flag[i-3]+flag[i-2];
                sum+=flag[i-1];
                System.out.println("第"+i+"月兔子数量为:"+sum);
            }
        }
    }
}

7.有1、2、3、4四个数字,能组成多少个互不相同且无重复的三位数。

public class Different {
    public static void main(String[] args) {
        int sum=0;
        for (int i = 1; i <= 4; i++) {
            for (int j = 1; j <= 4; j++) {
                if (j == 1) {
                    continue;
                }
                for (int l = 1; l <= 4; l++) {
                    if (l == i || l == j) {
                        continue;
                    }
                    sum++;
                }
            }
        }
        System.out.println(sum);
    }
}

8.输入三个整数x,y,z,请把这三个数由小到大输出。

public class Intsort {
    public static void main(String[] args) {
        int[] num = new int[3];
        Scanner scan=new Scanner(System.in);
        System.out.print("x=");
        num[0]=scan.nextInt();
        System.out.print("y=");
        num[1]=scan.nextInt();
        System.out.print("z=");
        num[2]=scan.nextInt();
        sort(num);
        for(int x:num){
            System.out.println(x);
        }

    }
}

9.利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

public class Scorechoose {
    public static void main(String[] args) {
        int score=80;
        if (score >= 90) {
            System.out.println("A");
        }else if(score>=60&&score<90){
            System.out.println("B");
        }else{
            System.out.println("C");
        }
    }
}

10.猴子分桃:海 滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

public class Monkeypeach {
    public static void main(String[] args) {
        int peach = 0;
        boolean flag = true;
        for (int i = 1; flag; ++i) {
            if (i % 5 == 1) {
                peach = ((i - 1) / 5) * 4;
                if (peach % 5 == 1) {
                    peach = ((peach - 1) / 5) * 4;
                    if (peach % 5 == 1) {
                        peach = ((peach - 1) / 5) * 4;
                        if (peach % 5 == 1) {
                            peach = ((peach - 1) / 5) * 4;
                            if (peach % 5 == 1) {
                                peach = ((peach - 1) / 5) * 4;
                                System.out.println(i);
                                flag=false;
                            }
                        }
                    }
                }
            }
        }

    }
}

综合练习1
掷摋子游戏博弈游戏:三个骰子,约定三个骰子的点数
最大点数:18
最小点数:3
1、如果是 大于 10 小于等于18 表示大 、
2、否则是小
3、初始值钱数为5000钱
4、每次只能下注是50的倍数但是最大不能超过1000
//5、最后一次下注必须要大于等于50

import java.util.Scanner;

public class Dicegame {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String choose;//选择字符串
        String bigSmall;
        int bet = 0;//赌注
        int czMoney=0;
        Player A = new Player(5000);
        Dice B = new Dice();
        all:while (true) {
            System.out.println("是否开始游戏(是/否):");
            choose = scan.next();
            if (choose.equals("是")) {
                B.setPoint((int) (Math.random() * 16) + 3);//生成骰子数
                System.out.println("已经生成骰子数!");
                while (true) {
                    System.out.println("请投注(只能下注是50的倍数但是最大不能超过1000)");
                    bet = scan.nextInt();
                    if (bet % 50 == 0 && bet <= 1000 && bet >= 50&&A.getMoney()>50) {
                        break;
                    } else if(A.getMoney()<50){
                        System.out.println("余额不足,请选择:");
                        System.out.println("1、支付宝充值"+"\n"+"2、退出游戏");
                        choose=scan.next();
                        if (choose.equals("支付宝充值")) {
                            System.out.println("跳转支付宝充值");
                            System.out.println("输入充值数:");
                            czMoney=scan.nextInt();
                            A.setMoney(A.getMoney()+czMoney);
                        }else if(choose.equals("退出游戏")){
                            System.out.println("成功退出游戏");
                            break all;
                        }else {
                            System.out.println("无效命令");
                        }
                    }else{
                        System.out.println("投注失败");
                    }
                }
                System.out.println("选择大小(大/小):");
                choose = scan.next();
                if (B.getPoint() > 10 && B.getPoint() <= 18) {
                    bigSmall = "大";
                } else {
                    bigSmall = "小";
                }
                if (choose.equals(bigSmall)) {
                    System.out.println("骰子点数为:"+B.getPoint());
                    System.out.println("恭喜获胜!");
                    A.setMoney(A.getMoney() + bet);
                    System.out.println("余额:" + A.getMoney());
                } else {
                    System.out.println("骰子点数为:"+B.getPoint());
                    System.out.println("落败!");
                    A.setMoney(A.getMoney() - bet);
                    System.out.println("余额:" + A.getMoney());
                }
            } else if (choose.equals("否")) {
                System.out.println("成功退出游戏");
                break;
            } else {
                System.out.println("无效命令");
            }

        }
    }
}

class Player {
    private int money;

    Player(int money) {
        this.money = money;
    }

    public int getMoney() {
        return this.money;
    }

    public void setMoney(int money) {
        this.money = money;
    }
}

class Dice {
    private int point;

    Dice() {
    }

    public int getPoint() {
        return this.point;
    }

    public void setPoint(int point) {
        this.point = point;
    }
}

综合练习2
万年历
a:先输出提示语句,并接受用户输入的年、月。
b:根据用户输入的年,先判断是否是闰年。
C:根据用户输入的月来判断月的天数。
D:用循环计算用户输入的年份距1900年1月1日的总天数。
E:用循环计算用户输入的月份距输入的年份的1月1日共有多少天。
F:相加D与E的天数,得到总天数。
G:用总天数来计算输入月的第一天的星期数。
H:根据G的值,格式化输出这个月的日历!

import java.util.Scanner;

public class Tenthousand {
    static int[] day1 = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    static int[] day2 = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    static String[] week = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入年份:");
        int year = scan.nextInt();
        System.out.print("请输入月份:");
        int month = scan.nextInt();
        int day = 1;
        int sum = count(year, month, day);
        print(year, month, week(sum));
    }

    static boolean checkRN(int year) {
        boolean flag = false;
        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
            flag = true;
        }
        return flag;
    }

    static int returnMonth(int year, int month) {
        boolean flag = checkRN(year);
        int day;
        if (flag) {
            day = day2[month - 1];
        } else {
            day = day1[month - 1];
        }
        return day;
    }

    static int count(int year, int month, int day) {
        int count = 0;
        for (int i = 1900; i < year; ++i) {
            if (checkRN(i)) {
                for (int x : day2) {
                    count += x;
                }
            } else {
                for (int x : day1) {
                    count += x;
                }
            }
        }
        for (int i = 1; i < month; i++) {
            if (checkRN(year)) {
                for (int x : day2) {
                    count += x;
                }
            } else {
                for (int x : day1) {
                    count += x;
                }
            }
        }
        count += day;
        return count;
    }

    static String week(int a) {
        if (a%7!=0) {
            return week[a % 7 - 1];
        }else{
            return week[6];
        }
    }

    static void print(int year, int month, String s) {
        for (String a : week) {
            System.out.print(a + "\t");
        }
        System.out.println();
        int a = 0;
        int b = 1;
        for (int j = 1; !s.equals(week[j - 1]); j++) {
            ++a;
        }
        for (int i = 1; i < returnMonth(year, month)+a; ++i) {
            if (i < a) {
                System.out.print(" "+"\t\t");
            } else {
                System.out.print(b+"\t\t");
                b++;
            }
            if (i % 7 == 0) {
                System.out.println();
            }
        }

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值