zoukankan      html  css  js  c++  java
  • 20165312-第4周-课上内容补做以及知识点总结

    20165312-第4周-课上内容补做以及知识点总结

    1、课上内容补做

    • 教材代码完成情况测试p45

    这题很快就做完了,然后忘记提交了。。就开始做递归。想起来的时候已经过了时间。

    public class Example3_7 {
        public static void main(String args[]) {
            int sum=0,i,j;
            for(i=1;i<=10;i++) {
                if(i%2==0) {   //计算1+3+5+7+9
                    continue;
                }
                sum=sum+i;
            }
        System.out.println("sun="+sum);
        for(j=2;j<=5312;j++) {
            for(i=2;i<=j/2;i++) {                         if(j%i==0)
                 break;
            }
            if(i>j/2) {
                System.out.println(""+j+"是素数");
            }
        }
        }
    }
    

    运行截图:

    • 递归与循环

    课堂上的代码出现了一个细小的错误,导致无论输入什么数字,都会退出。出现问题的地方:

    for(int i=1;i<args.length;i++) {
        tmp[i] = Integer.parseInt(args[i]);
    }
    

    i从1开始,就导致是从第二个数字开始转化成int型,所以无论输入什么,都会退出。

    正确代码:

    public class CLSumRecursion {
            public static void main(String args[]) {
                    int sum = 0;
                    if(args.length < 1) {
                            System.out.println("Usage:java CLSumRecursion num1 num2 ...");
                            System.exit(0);
                    }
                    int tmp[] = new int[args.length];
                    for(int i=0;i<args.length;i++) {
                            tmp[i] = Integer.parseInt(args[i]);
                    }
                    if(tmp[0]<=0) {
                            System.out.println("Please check your input!");
                            System.exit(0);
                    }
                    else {
                            for(int j=1;j<=tmp[0];j++) {
                            sum += fact(j);
                            }
                    }
                    if(sum<=0) {
                            System.out.println("Please check your input!");
                            System.exit(0);
                    }
                    else
                            System.out.println(sum);
            }
            public static int fact(int n) {
                    if(n == 0)
                            return 1;
                    else
                            return n*fact(n-1);
            }
    }
    

    运行截图:

    • JDB

      • jdb CLSumRecursion 3

      • jdb CLSumRecursion 1

      • jdb CLSumRecursion 2

    2.知识点总结

    • 参考Integer类中的方法把字符串转为整数
    public static void main(String [] args) {
            int [] tmp = new int [args.length];
            for(int i=0; i<args.length; i++) {
              tmp[i] = Integer.parseInt(args[i]);
            }
    }
    

    运行时为java 文件名 int 型数据

    jdb调试时 jdb 文件名 int型数据

    3.第二章编程题目

    • 编写一个程序,给出汉字“你”,“我”,“他”在Unicode表中的位置
    public class exam2_1 {
            public static void main(String args[]) {
                    char a = '你';
                    char b = '我';
                    char c = '他';
                    System.out.println("汉字:"+a+"的位置:"+(int)a);
                    System.out.println("汉字:"+b+"的位置:"+(int)b);
                    System.out.println("汉字:"+c+"的位置:"+(int)c);
            }
    }
    

    • 编写一个程序,输出全部的希腊字母
    public class exam2_2{
            public static void main(String[] args) {
                    for (int j = 913; j < 930; j++) { //j代表每个字母的ASCII代码
                            System.out.print((char)j+" "); //将ASCII代码转换成字符就是每个字母了
                    }
                    for (int j = 932; j < 938; j++) { //中间空了一个
                            System.out.print((char)j+" ");
                    }
                    for (int j = 945; j < 970; j++) { //大小写中间空了好几个,都跳过了
                            System.out.print((char)j+" ");
                    }
            }
    }
    

    4.第三章编程题目

    • 编写应用程序求1!+2!+……+10!
    public class exam3_1 {
            public static void main(String args[]) {
                    int sum = 0;
                    int n = 10;
                    for(int i = 1;i<=n;i++) {
                            sum = sum+fact(i);
                    }
                    System.out.println(sum);
            }
           public static int fact(int i) {
                    if(i == 0)
                            return 1;
                    else
                            return i*fact(i-1);
            }
    }
    

    运行截图:

    • 编写一个程序求100以内的素数
    public class exam3_2 {
            public static void main(String args[]) {
                    int i,j;
                    for(i=2;i<=100;i++) {
                            for(j=2;j<=i/2;j++) {
                                    if(i%j==0)
                                            break;
                            }
                    if(j>i/2)
                            System.out.println(" "+i+"是素数");
                    }
            }
    }
    

    运行截图:

    • 分别用do-while和for循环计算1+1/2!+1/3!+……的前20项和
    //for循环语句
    public class exam3_3_1 {
            public static void main(String args[]) {
                    double sum = 0;
                    for(int i=1;i<=20;i++) {
                            sum = sum+1.0/fact(i);
                    }
                    System.out.println(sum);
            }
            public static int fact(int n) {
                    if(n==0)
                            return 1;
                    else
                            return n*fact(n-1);
            }
    }
    

    运行截图:

    //do-while
    public class exam3_3_2 {
            public static void main(String args[]) {
                    double sum = 0;
                    int i = 1;
                    do {
                            sum=sum+1.0/fact(i);
                            i++;
                    }while(i<=20);
                    System.out.println(sum);
            }
            public static int fact(int n) {
                    if(n==0)
                            return 1;
                    else
                            return n*fact(n-1);
            }
    }
    

    运行截图:

    • 一个数如果恰好等于它的因子之和,这个数称为完数。编写程序求1000以内的所有完数
    public class exam3_4 {
            public static void main(String args[]) {
                    int i;
                    for(i=1;i<=1000;i++) {
                            if(wanshu(i)==1)
                                    System.out.println(i+"是完数");
                            else
                                    continue;
                    }
            }
            public static int wanshu(int i) {
                    int sum = 0;
                    for(int j=1;j<i;j++) {
                            if(i%j==0)
                                    sum=sum+j;
                    }
                    if(sum==i)
                            return 1;
                    else
                            return 0;
            }
    }
    

    运行截图:

    • 编写一个程序,使用for循环语句计算8+88+888+……前10项之和
    public class exam3_5 {
            public static void main(String args[]) {
                     long i=1,sum=0,a=8,item=a;
                         for(i=1;i<=10;i++)
                         {
                                 sum=sum+item;
                                 item=item*10+a;
                         }
                      System.out.println(sum);
            }
    }
    

    运行截图:

    • 编写一个程序,输出满足1+2+3+……+n<8888的最大正整数n
    public class exam3_6 {
            public static void main(String args[]) {
                    int sum = 0;
                    int i = 1;
                    while(sum<8888){
                            sum=sum+i;
                            i++;
                    }
                    System.out.println(i-1);
            }
    }
    

    运行截图:

    参考资料:2016-2017-2 《Java 程序设计》课堂实践项目

  • 相关阅读:
    CF1132G
    CF1129B
    CF1131G
    CF1109D
    CF1110H
    CF1106F
    my.cnf 配置
    mysql 导入导出
    mysql 批量删除表数据
    国内开源镜像站
  • 原文地址:https://www.cnblogs.com/cxgg/p/8635605.html
Copyright © 2011-2022 走看看