微生物增殖
题目
假设有两种微生物 X 和 Y
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90呢?
本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
问题分析
//本题的要求就是写出两种初始条件下,60分钟后Y的数目。
//吞吃节点 0,0.5,1,1.5,2,2.5…,是包含了两种变化
//而其对应的下标为0,1,2,3,4,5…,对应到单位时间来说
//在与下标的除法中,%2的余数为1就减(比如1,3,5…),
//在%4与%6余数为0的时候,y与x分别翻倍(4,6,8,12,…)
//因为涉及半分钟的变化,所以将30s作为单位时间
//通过七月末取模,确定变化节点
思路通过循环,和if分支判断来实现
代码实现
x=10, y=89
public static void main(String[] args) {
int x=10,y=89;
//进入循环
for (int i = 1; i < 121; i++) {
if(i%2==1) {
y -=x ;//y数量,
}
if (i%4==0){
y*=2;//两分钟y翻倍
}
if(i%6==0){
x*=2;//三分钟x翻倍
}
System.out.println("第"+i+"单位时间");
System.out.print("x:"+x);
System.out.println("y:"+y);
}
代码如图,经过对比讨论区和其他博主的答案,可以确定这个给条件下y会小
![](https://img-blog.csdnimg.cn/img_convert/f7dda1e1f222ee239700c54162a46559.png)
成绩统计
题目
问题描述
编写一个程序,建立了一条单向链表,每个结点包含姓名、学号、英语成绩、数学成绩和C++成绩,并通过链表操作平均最高的学生和平均分最低的学生并且输出。
输入格式
输入n+1行,第一行输入一个正整数n,表示学生数量;接下来的n行每行输入5个数据,分别表示姓名、学号、英语成绩、数学成绩和C++成绩。注意成绩有可能会有小数。
输出格式
输出两行,第一行输出平均成绩最高的学生姓名。第二行输出平均成绩最低的学生姓名。
样例输入
2
yx1 1456787
yx2 2889099
样例输出
yx2
yx1
问题分析
需要扫扫描器确定学生数量。每个学生的数据然后统一处理
所以需要一个循环次数为n的(n为学生数量)的循环,录入数据
需要对所有学生进行平均值的计算,然后排序,
排序可以用冒泡排序,也可以通过数学函数来请确定一个数组的最大值。
if判断需要在循环內部才可以使用,但每次循环输入,不能确定最值,所以需要每次循环更新最值
成绩可能是小数,那么就需要float或者double类型的数据
、代码实现
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
String Max = ""; // 成绩最高
String Min = ""; // 成绩最低
double maxavg = Integer.MIN_VALUE; // 最大平均值
double minavg = Integer.MAX_VALUE; // 最小平均值
for (int i = 0; i < n; i++) {
String name = scanner.next(); // 姓名
String id = scanner.next(); // 学号
int English = scanner.nextInt(); // 英语
int Math = scanner.nextInt(); // 数学
int Ccc = scanner.nextInt(); // C++
double avg = (English + Math + Ccc) / 3; // 平均成绩
if (maxavg < avg) { // 最大平均值<平均成绩
Max = name; // 最大值=姓名
maxavg = avg; // 最大平均值=平均成绩
}
if (minavg > avg) { // 最小平均值>平均成绩
Min = name; // 最小值=姓名
minavg = avg; // 最小平均值=平均成绩
}
}
scanner.close();
System.out.println(Max); // 输出成绩最高者
System.out.println(Min); // 输出成绩最低者
}
输出效果如下,解决问题!
![](https://img-blog.csdnimg.cn/img_convert/b3ec42a4f1097ff9f646f7c45c903a89.png)