Java编程练习4

7-1 sdut-循环-乘法运算

题目
接收一个正整数N,然后打印输出:N个等式,形如:i(1->N)N=iN 格式的数据。

输入格式:
只有一个正整数N(N<=100)。

输出格式:
输出共N行数据,形式如:i (1->N)*N=? 格式的表达式。

输入样例1:
4
输出样例1:
14=4
2
4=8
34=12
4
4=16
输入样例2:
5
输出样例2:
15=5
2
5=10
35=15
4
5=20
5*5=25
正确答案

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		int a=in.nextInt();
		for(int i=1;i<=a;i++) {
			System.out.println(i+"*"+a+"="+i*a);
		}
	}
}

7-2 sdut-循环-1-求倒数之和

题目
输入一个整数n,求1/1+1/2+1/3+……+1/n的累加和。

输入格式:
输入一个正整数。

输出格式:
输出1~n的倒数之累加和,结果保留6位小数。

输入样例1:
2
输出样例1:
1.500000
输入样例2:
10
输出样例2:
2.928968
正确答案

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		int a=in.nextInt();
		double sum=0;
		for(int i=1;i<=a;i++) {
			sum+=1.0/i;
		}
		System.out.printf("%.6f",sum);
	}
}

7-3 sdut-循环-2-格式化输出N个数

题目
输入一个整数n,按规定格式输出数据。

输入格式:
输入一个正整数。

输出格式:
每行输出10个数,相邻数字中间用1个空格作为分隔符。
提示:行首无空格,每行的最后一个数字之后不加空格。

输入样例1:
5
输出样例1:
1 2 3 4 5
输入样例2:
10
输出样例2:
1 2 3 4 5 6 7 8 9 10
输入样例3:
15
输出样例3:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15
正确答案

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		int a=in.nextInt();
		double sum=0;
		for(int i=1;i<=a;i++) {
			System.out.printf("%d",i);
			if(i%10==0) {
				System.out.printf("\n");
			}else if(i!=a){
				System.out.printf(" ");
			}
		}
		
	}
}

7-4 sdut-循环-3-评委评分(II)

题目
全国中小学生Scratch作品大赛拉开了序幕。每个参赛选手可以通过网络直接上传作品。本次比赛人人可做评委。每个网络评委可以通过网络对每一件作品进行打分。评分系统也是请程序高手设计的,能自动去掉一个最高分和一个最低分,求出平均分。

输入格式:
输入数据包括两行:
第一行为n,表示n个评委,n>2。
第二行是n个评委的打分,分数之间有一个空格。打分是可以带有小数部分的。
输出格式:
最高分
最低分
平均分
说明:最高分、最低分、平均分均保留两位小数。
输入样例:
6
10 9 8 7.9 9 9.5
输出样例:
最高分10.00
最低分7.90
平均分8.88
正确答案

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		double[] a=new double[n];
		double max=-1;
		double min=11;
		double sum=0;
		for(int i=0;i<n;i++) {
			a[i]=in.nextDouble();
			sum+=a[i];
			if(a[i]>max) {
				max=a[i];
			}
			if(a[i]<min) {
				min=a[i];
			}
		}
		System.out.printf("最高分%.2f\n最低分%.2f\n平均分%.2f",max,min,(sum-max-min)/(n-2));
		
	}
}

7-5 sdut-循环-4-统计学生平均成绩与及格人数(II)

题目
编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。输入数据均在整型范围之内。

输入格式:
在第一行中给出非负整数N(N>=0),即学生人数。第二行给出N个非负整数,即这N位学生的成绩,中间以空格分隔。

输出格式:
average=成绩均值
count=及格人数
其中:平均值精确到小数点后一位。
输入样例1:
5
77 54 92 73 60
输出样例1:
average=71.2
count=4
输入样例2:
0
输出样例2:
average=0.0
count=0
正确答案

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		int count=0;
		double sum=0;
		double t;
		for(int i=0;i<n;i++) {
			t=in.nextDouble();
			sum+=t;
			if(t>=60) {
				count++;
			}
		}
		System.out.printf("average=%.1f\ncount=%d",n!=0?sum/n:0,count);
		
	}
}

7-6 sdut-循环-5-百钱买百鸡

题目
我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题。
该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?

意思是:一只公鸡五块钱,一只母鸡三块钱,三只小鸡一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?

输入格式:
无输入。

输出格式:
输出所有的解决方案。

每种解题方案各在一行内输出,一行按顺序输入公鸡、母鸡、小鸡的数量,其中每个数值占2个字符的位置,不足2位的数值右对齐放置。

多种解题方案,按公鸡数量从小到大的顺序排列。

输入样例:

输出样例:
公鸡 0只,母鸡25只,小鸡75只
公鸡 4只,母鸡18只,小鸡78只
公鸡 8只,母鸡11只,小鸡81只
公鸡12只,母鸡 4只,小鸡84只
正确答案

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		for(int i=0;i<=20;i++) {
			for(int j=0;j<34;j++) {
				for(int k=0;k<100;k+=3) {
					if(i*5+j*3+k/3==100&&i+j+k==100) {
						System.out.printf("公鸡%2d只,母鸡%2d只,小鸡%2d只\n",i,j,k);
					}
				}
			}
		}		
	}
}

7-7 sdut-循环-6-统计字符 (II)

题目
首先给出所输入字符的个数N,然后给出N个字符,统计其中英文字母、空格、数字字符和其他字符的个数。

输入格式:
第一行为字符的个数N;
第二行为N个字符。
输出格式:
在四行内输出:
letters=英文字母个数
blanks=空格个数
digits=数字字符个数
输入样例:
10
AaZ & 15Az
输出样例:
letters=5
blanks=2
digits=2
others=1

正确答案

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		in.nextLine();
		char[] s=in.nextLine().toCharArray();
		int letters=0;
		int blanks=0;
		int digits=0;
		int others=0;
		for(int i=0;i<s.length;i++) {	
			if(Character.isLetter(s[i])) {
				letters++;
			}else if(Character.isDigit(s[i])) {
				digits++;
			}else if(s[i]==' ') {
				blanks++;
			}else {
				others++;
			}
		}
		System.out.printf("letters=%d\nblanks=%d\ndigits=%d\nothers=%d",letters,blanks,digits,others);
		
	}
}

7-8 sdut-循环-7-统计正数和负数的个数(II)

题目
输入若干个(1个以上)整数,以0结束,统计读入的正数以及负数的数量,并计算输入的数值的总和及平均值(不对0计数)。

输入格式:
输入若干个(1个以上)正整数,以0结束。

输出格式:
第1行输出正整数的个数; 第2行输出负整数的个数; 第3行输出这些输入值的总和(不对0计数); 第4行输出这些输入值的平均值(保留小数点后2位)。

输入样例1:
1 2 3 -1 -2 -3 0
输出样例1:
3
3
0
0.00
输入样例2:
1 2 0 3 -1 -2 -3
输出样例2:
2
0
3
1.50
正确答案

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		int t=0;
		int a=0;
		int b=0;
		int sum=0;
		while((t=in.nextInt())!=0) {
			if(t>0) {
				a++;
			}else {
				b++;
			}
			sum+=t;
		}
		System.out.printf("%d\n%d\n%d\n%.2f",a,b,sum,(a+b)!=0?sum*1.0/(a+b):0);
	}
}

7-9 sdut-循环-8-等腰直角三角形(II)

题目
等腰直角三角形是指一个角是直角,且两条直角边相等的三角形。这里我们输出直角边长为n的等腰直角三角形的格式如下所示:

比如n=1,则输出:
*
n=2,输出:
*
**
n=3,输出:

**


那么,你能用程序来实现么?

输入格式:
输入一个数n,表示三角形的边长。1<n<1000。

输出格式:
输出对应的用*表示的等腰直角三角形。

输入样例:
4
输出样例:
*
**



正确答案

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		for(int i=1;i<=n;i++) {
			for(int j=0;j<i;j++) {
				System.out.printf("*");
			}
			System.out.printf("\n");
		}
	}
}

7-10 sdut-循环-9-画菱形(II)

题目
菱形是一种特殊的平行四边形,是四条边均相等的平行四边形。题目给出菱形的边长n,用*画出菱形。如:

n=1,输出:
*

n=2,输出:
*


n=3,输出:
*




那么,你能用程序来实现么?

输入格式:
输入菱形的边长n,1<n<100。

输出格式:
输出对应的用*表示的菱形。

输入样例:
4
输出样例:
*






正确答案

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		for(int i=1;i<=n;i++) {
			for(int j=0;j<n-i;j++) {
				System.out.printf(" ");
			}
			for(int j=0;j<i*2-1;j++) {
				System.out.printf("*");
			}
			System.out.printf("\n");
		}
		for(int i=n-1;i>0;i--) {
			for(int j=0;j<n-i;j++) {
				System.out.printf(" ");
			}
			for(int j=0;j<i*2-1;j++) {
				System.out.printf("*");
			}
			System.out.printf("\n");
		}
	}
}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

漠–

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

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

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

打赏作者

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

抵扣说明:

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

余额充值