7-1 编程题:兔子繁殖问题
已知有一对兔子,每个月可以生一对兔子,而小兔子一个月后又可以生一对小兔子(比如:2月份出生的小兔子4月份可以生育)。也就是说,兔子的对数为:第一个月1对,第二个月2对,第三个月3对,第四个月5对…假设兔子的生育期为两年,且不死。那么问题来了,你能说出每个月的兔子数么?
输入格式:
输入一个数n,表示第n个月,1<=n<=24。
输出格式:
输出这个月兔子的数目。
输入样例:
4
输出样例:
5
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int month=in.nextInt();
int a=1,b=2,c=0;
if (month==1)
System.out.println("1");
else if (month==2)
System.out.println("2");
else{
for (int i=3;i<=month ;i++ ) {
c=a+b;a=b;b=c;
}
System.out.println(c);
}
}
}
7-2 编程题:空心字母金字塔
输入一个大写的英文字母,输出空心的字母金字塔。
输入格式:
一个大写英文字母。
输出格式:
一个空心的大写英文字母金字塔,其中第1层的“A”在第1行的第40列,列从1开始计数。
输入样例:
E
输出样例:
A B B C C D D EEEEEEEEE
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
char cha = in.next().charAt(0);
int m = cha-'A';//计算输入的字母与字母A的距离
for (int i=0;i<m ;i++ ) {//分行输出
for (int j=1;j<40-i ;j++ ) //先输出字母前的空格
System.out.print(" ");
if(i==0)
System.out.println((char)((int)'A'+i));//如果是第一行,则输出后回车
else
System.out.print((char)((int)'A'+i));
for (int t=1;t<=2*i-1 ;t++ )//输出字母间的空格
System.out.print(" ");
if(i>0)
System.out.println((char)((int)'A'+i));//如果不是第一行,则输出第二个字母后回车
}
for (int k=1;k<=40+m ;k++ ) {//输出最后一行
if (k<40-m)
System.out.print(" ");
else
System.out.print(cha);
}
}
}
7-3 上三角数字三角形
输入一个正整数n,输出具有n层的上三角数字三角形。
输入格式:
只有一个正整数n,1<=n<=100。
输出格式:
一个上三角数字三角形,每个数字占四个字符位置。
输入样例:
5
输出样例:
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){
Scanner reader= new Scanner(System.in);
int n = reader.nextInt();
int i = 1;
for (int j=1;j<=n;j++){
for (int k=n-j+1;k>0;k--)
System.out.printf("%4d",i++);//每个数字占四个字符位
System.out.print("\n");
}
}
}
7-4 编程题:统计符合条件元素的个数-hebust
统计1…n的闭区间中,能够被3整除元素的奇数和偶数的个数
输入格式:
输入值n的范围是 【1…1000】
输出格式:
奇数个数,偶数个数
输入样例:
5
输出样例:
1,0
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in = new Scanner (System.in);
int x=in.nextInt();
int jishu=0;
int oushu=0;
for (int i=1;i<=x ;i++ ) {
if (i%3==0) {
if (i%2==0)
oushu++;
if (i%2==1)
jishu++;
}
}
System.out.println(jishu+","+oushu);
}
}
7-5 编程题:分解质因数
求出区间[a,b]中所有整数的质因数分解。
输入格式:
输入两个整数a,b。数据规模和约定 2<=a<=b<=10000
输出格式:
每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)
输入样例:
在这里给出一组输入。例如:
3 10
输出样例:
3=3
4=2*
2
5=5
6=2*
3
7=7
8=2*
2*
2
9=3*
3
10=2*
5
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
int []num=new int[b];
int i,j,k=0;
for (i=2; i<=b;i++ ) { //将2-b之间的素数用数组存储
for (j=2;j<=i/2 ;j++ ) {
if (i%j==0)
break;
}
if(j>i/2){
num[k]=i;
k++;
}
}
int q = 0;
for (int p=a;p<=b ;p++ ) {
System.out.print(p+"=");
q=p;
for (int t=0;t<k;t++){
while(q%num[t]==0){
//将质因数由小到大排列,一直对num[t]取余,直到不能整除,再进行下一个循环
q=q/num[t];
if (q!=1)
System.out.print(num[t]+"*");
else
System.out.print(num[t]);
}
if(q==1)//如果已分解结束,则跳出循环
break;
}
System.out.println("");//换行
}
}
}
7-6 编程题:学投资
小白学习了一些复利投资知识,想比较一下复利能多赚多少钱(所谓复利投资,是指每年投资的本金是上一年的本金加收益。而非复利投资是指每年投资金额不包含上一年的收益,即固定投资额)。假设他每年固定投资M元(整数),每年的年收益达到P(0<P<1,double),那么经过N(整数)年后,复利投资比非复利投资多收入多赚多少钱呢?计算过程使用双精度浮点数,最后结果四舍五入输出整数(Math的round函数)。
输入格式:
M P N
输出格式:
复利收入(含本金),非复利收入(含本金),复利比非复利收入多的部分(全部取整,四舍五入)
输入样例:
10000 0.2 3
输出样例:
17280 16000 1280
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in = new Scanner (System.in);
int M = in.nextInt();
double P = in.nextDouble();
int N = in.nextInt();
double fu =(double)M;
double feifu = 0;
fu = M*Math.pow(1+P,N);
feifu = M*P*N+M;
System.out.print(Math.round(fu)+" ");
System.out.print(Math.round(feifu)+" ");
System.out.println(Math.round(fu-feifu));
}
}
7-8 编程题:数据的规范化处理问题-hebust
在进行数据处理时,输入数据未经过滤,存在一些不符合要求的数据 要求编写数据处理程序,小于0的数据一律指定为0,大于100的数据一律指定为100
输入格式:
输入:所有元素占一行,元素之间使用空格分开,元素均为整数,范围【-300…300】
输出格式:
输出:所有元素占一行,元素之间使用西文逗号分开,最后一个元素末尾保留西文逗号
输入样例:
在这里给出一组输入。例如:
-1 10 105
输出样例:
在这里给出相应的输出。例如:
0,10,100,
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in = new Scanner (System.in);
String x=in.nextLine();
String [] example = x.split(" ");//将x用空格分割,储存在数组里
//1.split()方法
for (int i=0 ;i<example.length;i++ ){
//2.String length() 方法
if (Integer.parseInt(example[i])<0)//将字符转换为integer数据类型
//3.Integer.parseInt()的使用
System.out.print("0,");
else if (Integer.parseInt (example[i])>100)
System.out.print("100,");
else
System.out.print(example[i]+",");
}
}
}
- split() 方法
- String length() 方法
- Integer.parseInt() 的使用
7-9 编程题:复杂情况下的数据统计问题-hebust
复杂环境下的数据统计问题
进行数值统计的时候,可能会混入一些非数值的元素,下面请编程完成对输入序列进行求和统计并输出, 如果遇到非数值元素,则自动跳过,并在最终结果输出行之后另起一行,输出attention
输入格式:
单行输入,元素之间使用空格分开
输出格式:
对元素所对应的整数进行求和并输出
如果遇到非数值元素,则自动跳过,并在最终结果输出行之后另起一行,输出attention
输入样例a:
在这里给出一组输入。例如:
1 2 3 4 5
输出样例a:
在这里给出相应的输出。例如:
15
输入样例b:
在这里给出一组输入。例如:
1 2 3 4 a 5
输出样例b:
在这里给出相应的输出。例如:
15
attention
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in = new Scanner (System.in);
String x=in.nextLine();
String [] example = x.split(" ");//同上一题
int sum = 0;
boolean p = true;
for (int i=0 ;i<example.length;i++ ){//1.求数组长度方法
if (example[i].charAt(0)>='0'&&example[i].charAt(0)<='9'){//3.chatAt(),如果字符的第一位是数字
try{//2.try...catch使用
sum+=Integer.parseInt(example[i]);}
catch(Exception e){//如果将字符转换为Integer数据类型的执行抛出异常
p=false;
continue;
}
}
else if (example[i].charAt(0)=='-')//如果是负数
sum+=Integer.parseInt(example[i]);
else
p=false;
}
System.out.println(sum);
if (p==false) {
System.out.println("attention");
}
}
}
1.length:求数组长度 2.try…catch使用1⃣️ or2⃣️ 3.charAt()使用
7-10 编程题:按正整数的相反数字顺序输出
本题目要求输入一个正整数,按数字的相反顺序输出。
输入格式:
输入一个正整数。
输出格式:
按输入正整数的数字相反顺序输出一个数字。
输入样例:
5236
输出样例:
6325
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
String x = in.nextLine();
String [] strings;
int i = 0;
for (i=x.length()-1;i>=0;i-- ) {
System.out.print(x.charAt(i));//按照从后往前的顺序输出
}
}
}