程序填空题
填空题无法在线评测,正确性未知,错了别怪俺
还有,这程序填空题能不能写个注释!!!
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);
}
}