PTAJava实验二

程序填空题

填空题无法在线评测,正确性未知,错了别怪俺
还有,这程序填空题能不能写个注释!!!
在这里插入图片描述
在这里插入图片描述

5-1

以下程序的功能是求一个二维数组中每行的最大值和每行的和。
输入样例

3 
1 2 3 
6 5 4 
7 9 8

输出样例

1  2  3  3  6
6  5  4  6 15
7  9  8  9 24

不知道正确与否的答案:

import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int a[][]=new int[n][n];
        int b[]=new int[n];
        int c[]=new int[n];
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a[i].length;j++){
                a[i][j]=sc.nextInt();
            }
        }        
        int max,s;
        for(int i=0;i<a.length;i++){
            max=a[i][0];
			s=0;
            for(int j=0;j<a[i].length;j++){
                if(a[i][j]>max){
                   max=a[i][j];
                }
                s+=a[i][j];
            }
            b[i]=max;
            c[i]=s;
        }
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a[i].length;j++){
                System.out.printf("%3d",a[i][j]);
            }
            System.out.printf("%3d%3d",b[i],c[i]);
            System.out.println();
        }
    }
}
5-2

以下程序中函数fun的功能是:根据整型形参m的值,计算如下公式的值。
在这里插入图片描述
不知道正确与否的答案:

import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //int n=sc.nextDouble();//此行语句有错误,改正后填到下侧空格内
        int n=sc.nextInt();
        double x=fun(n);
        System.out.printf("%f",x);

    }
    //public static void fun(int m)//此行语句有错误,改正后填到下侧空格内
    public static double fun(int m)
    {
        double t=1;
        int i;
        //for(i=2;i<m;i++)//此行语句有错误,改正后填到下侧空格内
        for(i=2;i<=m;i++)
        {
            //t=t-1/(i*i);//此行语句有错误,改正后填到下侧空格内
            t=t-1.0/(i*i);
        }
        //return i;//此行语句有错误,改正后填到下侧空格内
        return t;
    }
}
5-3

输入一行字符,请分别统计出英文字母、数字、空格和其他字符个数。
不知道正确与否的答案:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        char x[]=str.toCharArray();
        int a=0;
        int b=0;
        int c=0;
        int d=0;
        for(int i=0;i<x.length;i++;i++){
            char ch=x[i];
            if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
                a++;
            else if(ch>='0'&&ch<='9')
                b++;
            else if(ch==' ')
                c++;
            else
                d++;
        }
        System.out.println("letters="+a);//输出英文字母个数
        System.out.println("digits="+b);//输出数字个数
        System.out.println("spaces="+c);//输出空格个数
        System.out.println("others="+d);//输出其他字符个数
    }
}

5-4
功能:求1!+2!+3!+4!+5!。
不知道正确与否的答案:

public class Main {
    public static void main(String[] args) {
        fun();
    }
    public static void fun(){
        int n,j;
        //float s=0.0,t=1.0;//此行语句有错误,改正后填到下侧空格内
        float s=0.0f,t=1.0f;
        for(n=1;n<=5;n++){
            //s=1;//此行语句有错误,改正后填到下侧空格内
            t=1;
            for(j=1;j<=n;j++){
                //t=t*n;//此行语句有错误,改正后填到下侧空格内
                t=t*j;
            }
            //s+t=s;//此行语句有错误,改正后填到下侧空格内
            s=s+t;
        }
        System.out.printf("jiecheng=%.0f\n",s);
    }
}
5-5

功能:计算正整数num的各位上的数字之积。
例如:输入252,则输出应该是20。
不知道正确与否的答案:

import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //int n=sc.next();//此行语句有错误,改正后填到下侧空格内
        int n=sc.nextInt();
        //System.out.println(fun(int n));//此行语句有错误,改正后填到下侧空格内
        System.out.println(fun(n));
    }
    //public int fun(int num)//此行语句有错误,改正后填到下侧空格内
    public static int fun(int num)
    {
        //int k;//此行语句有错误,改正后填到下侧空格内
        int k=1;
        do{
            k=k*(num%10);
            //num\=10;//此行语句有错误,改正后填到下侧空格内
            num/=10;
        }while(num>0);
        return k;
    }
}

函数题

6-2 人口统计 (10 分)

本题运行时要求键盘输入10个人员的信息(每一个人信息包括:姓名,性别,年龄,民族),要求同学实现一个函数,统计民族是“汉族”的人数。

函数接口定义:

public static int numofHan(String data[])

其中 data[] 是传入的参数。 data[]中的每一个元素都是一个完整的人员信息字符串,该字符串由“姓名,性别,年龄,民族”,各项之间用英文半角的逗号分隔。函数须返回 值是汉族的人数。

裁判测试程序样例:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        final int HUMANNUM=10;
        String persons[]=new String[HUMANNUM];
        Scanner in=new Scanner(System.in);
        for(int i=0;i<persons.length;i++)
            persons[i]=in.nextLine();
        int result=numofHan(persons);
        System.out.println(result);
    
    }
    
    /*在此处给出函数numofHan()*/
    

}

输入样例:

Tom_1,,19,汉族
Tom_2,,18,汉族
Tom_3,,20,满族
Tom_4,,18,汉族
Tom_5,,19,汉族人
Tom_6,,17,汉族
Tom_7,,19,蒙古族
汉族朋友_1,,18,汉族
Tom_8,male,19,老外
Tom_9,female,20,汉族

输出样例:

7
public static int numofHan(String data[]) {
        int num = 0;
        for (int i = 0; i < data.length; i++) {
            String[] str = data[i].split(",");
            if (str[3].indexOf("汉族") != -1)
                num++;
        }
        return num;
    }

编程题

7-2 JAVA-求整数序列中出现次数最多的数 (10 分)

要求统计一个整型序列中出现次数最多的整数及其出现次数。

输入格式:
在一行中给出序列中整数个数N(0<N≤1000),依次给出N个整数,每个整数占一行。

输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。

输入样例:
在这里给出一组输入。例如:

10
3
2
-1
5
3
4
3
0
3
2

输出样例:
在这里给出相应的输出。例如:

3 4
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];  //创建数组
        int num = 0, max = 0;
        for (int i = 0; i < n; i++)  //输入
            arr[i] = sc.nextInt();
        for (int i = 0; i < n; i++) {
            int cnt = 0;  //arr[i]的计数器
            for (int j = 0; j < n; j++) {
                if (arr[j] == arr[i])
                    cnt++;
            }
            if (cnt > max) {
                num = arr[i];
                max = cnt;
            }
        }
        System.out.println(num + " " + max);
    }
}
7-3 统计正数和负数的个数然后计算这些数的平均值 (15 分)

编写程序,输入未指定个数的整数,判断读入的正数有多少个,读入的负数有多少个,然后计算这些输入值得总和及平均值(不对0计数)。当输入为0时,表明程序结束。将平均值以double型数据显示。

输入格式:
输入在一行中给出一系列整数,其间以空格分隔。当读到0时,表示输入结束,该数字不要处

输出格式:
在第一行中输出正整数的个数; 在第二行中输出负整数的个数; 在第三行中输出这些输入值的总和(不对0计数); 在第四行中输出这些输入值的平均值(double型数据)。

输入样例:

1 2 -1 3 0

输出样例:

3
1
5
1.25
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int pos_int = 0, neg_int = 0, sum = 0;  //正整数,负整数,和
        int n = sc.nextInt();
        if (n == 0)
            return;
        while (n != 0) {
            if (n > 0) pos_int++;
            else neg_int++;
            sum += n;
            n = sc.nextInt();
        }
        double avg = sum * 1.0 / (pos_int + neg_int);
        System.out.println(pos_int);
        System.out.println(neg_int);
        System.out.println(sum);
        System.out.println(avg);
    }
}


7-5 jmu-Java-02基本语法-05-浮点数的精确计算 (1 分)

输入若干对浮点数,对每对浮点数输出其精确的和与乘积。
以下输入样例为两对浮点数输入,实际上有可能有不定对数的浮点数需要输入计算。

注1:直接使用double类型数据进行运算,无法得到精确值。
注2:输出时直接调用BigDecimal的toString方法。

输入样例:

69.1 0.02
1.99 2.01

输出样例:

69.12
1.382
4.00
3.9999
import java.math.BigDecimal;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {  //hasNext()判断输入是否为空
            String data = sc.nextLine();
            String[] str = data.split(" ");  //以空格分割字符串
            BigDecimal a = new BigDecimal(str[0]);
            BigDecimal b = new BigDecimal(str[1]);
            System.out.println(a.add(b));  //加法
            System.out.println(a.multiply(b));  //乘法
        }
    }
}
7-8 求最大值 (10 分)

本题目要求读入2个整数A和B,然后输出两个数的最大值。

输入格式:
输入在一行中给出2个绝对值不超过1000的整数A和B。

输出格式:
对每一组输入,在一行中输出最大值。

输入样例:
在这里给出一组输入。例如:

18 -299

输出样例:
在这里给出相应的输出。例如:

18
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        System.out.println(a > b ? a : b);
    }
}
7-10 编程题:统计符合条件元素的个数 (8 分)

统计1…n的闭区间中,能够被3整除元素的奇数和偶数的个数

输入格式:
输入值n的范围是 【1…1000】

输出格式:
奇数个数,偶数个数

输入样例:

5

输出样例:

1,0
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int odd = 0, even = 0;  //奇数,偶数
        for (int i = 1; i <= n; i++) {
            if (i % 3 == 0) {
                if (i % 2 == 0)
                    even++;
                else
                    odd++;
            }
        }
        System.out.print(odd + ",");
        System.out.println(even);
    }
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Re:从零开始的代码生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值