java语言程序设计与数据结构7.1
package one;
import java.util.*;
public class SpecifyTheLevel7_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of students: ");
int n=input.nextInt();
int[] scores = new int[n];
int best=0;
System.out.print("Enter 4 scores: ");
for(int i=0;i<n;i++) {
scores[i]=input.nextInt();
if(scores[i]>best)
best=scores[i];
}
for(int i=0;i<n;i++) {
System.out.print("Student "+i+" score is "+scores[i]+" and grade is ");
char x;
if(scores[i]>=best-10)
x='A';
else if(scores[i]>=best-20)
x='B';
else if(scores[i]>=best-30)
x='C';
else if(scores[i]>=best-40)
x='D';
else
x='F';
System.out.println(x);
}
}
}
//4
//40 55 70 58
2.
package one;
import java.util.Scanner;
public class ReverseNumber7_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
int[] number=new int[10];
System.out.print("Enter 10 numbers: ");
for(int i=0;i<10;i++)
number[i]=input.nextInt();
System.out.print("Reverse numbers: ");
for(int i=9;i>=0;i--)
System.out.print(number[i]+" ");
}
}
//0 1 2 3 4 5 6 7 8 9
3.
package one;
import java.util.Scanner;
public class CalculateTimes7_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
int[] num=new int[100];
int i=0;
System.out.print("Enter the integers between 1 and 100: ");
do {
num[i]=input.nextInt();
i++;
} while(num[i-1]!=0); //结束的时候,i=非零数字个数+1
//计数
int[] times=new int[101];
for(int j=0;j<i-1;j++)
times[num[j]]++;
//输出
for(int j=1;j<101;j++)
if(times[j]!=0)
if(times[j]==1)
System.out.println(j+" occurs "+times[j]+" time");
else
System.out.println(j+" occurs "+times[j]+" times");
}
}
/**
每次输入1个数字,在1-100之间,每输完一次后,程序运行一次,当输入0的时候,不再继续运行(这样不行)。
建一个足够大的数组,输入的时候用do-while,当输入的为0时,循环结束,这个循环的i很有用,还可以做计数器的循环次数判断。
在计数的时候,建一个长度为101的数组,初始化为0,每当出现一次,加一。
最后把计数数组再遍历一次就好了。
如何初始化?如何初始化为0_直接默认。不初始化为全零可能需要一个遍历。
数值型默认为0
*/
//2 5 6 5 4 3 23 43 2 0
4.
所以说,有什么好办法可以读入不确定个数的数字呢?
如果建一个足够大的数组后,在循环输入数据,感觉会浪费内存空间。(本题使用)
那么有没有可以改变数组长度的方法呢?
package one;
import java.util.Scanner;
public class AnalysisResults7_4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
//当知道数据个数时,可以用这种方法
//System.out.print("Enter the number of grades");
//int n=input.nextInt();
int n=100;
int[] grades=new int[n];
int i=0;
System.out.print("Enter numbers: ");
do {
grades[i]=input.nextInt();
i++;
} while(grades[i-1]>=0);
double average,sum=0;
int q1=0,q2=0;
for(int j=0;j<i-1;j++)
sum=sum+grades[j];
average=sum/(i-1);
System.out.println(average);
for(int j=0;j<i-1;j++) {
if(grades[j]>=average)
q1++;
else
q2++;
}
System.out.println(q1+" "+q2);
}
}
//90 80 70 -1