30天学会JAVA—练习题(2021韩顺平)——Day3
1. 判断一个整数是否是水仙花数(其 各个 位 上数字立方和 等于其本身。153=1^3 + 3^3 + 5^3)
public static void main(String[] args) {
System.out.println("请输入一个三位数字,用于判断是否是水仙花数");
Scanner sc = new Scanner(System.in);
int s = sc.nextInt();
int ge = s % 10; //个位
int shi = s / 10 % 10; //十位
int bai = s / 100; //百位
if(s == ge*ge*ge + shi*shi*shi + bai*bai*bai){
System.out.println(s + "是水仙花数");
}else{
System.out.println(s + "不是水仙花数");
}
sc.close();
}
2. 输出1-100之间的不能被5整除的数,每5个一行
public static void main(String[] args) {
int count = 0;
for(int i = 1; i < 100 ; i++){
if(i % 5 != 0){
System.out.print(i+ " ");
count++;
if(count % 5 == 0){
System.out.println("");
}
}
}
}
3. 输出小写的a-z以及大写的Z-A
public static void main(String[] args) {
System.out.println("小写英文字母为");
for(int i = 0 ; i <= 25 ;i++){
System.out.print((char)('a' + i) + " ");
}
System.out.println("");
System.out.println("大写英文字母为");
for(int i = 0 ; i <= 25 ;i++){
System.out.print((char)('A' + i)+ " ");
}
}
4. 求出1-1/2+1/3-1/4……1/100的和
public static void main(String[] args) {
double sum = 0;
for(int i = 1; i <=100; i++){
sum += (Math.pow(-1, i-1)) * 1/i;
}
System.out.println(sum);
}
5. 求1+(1+2)+(1+2+3)+……(1+2+3+…+100)的结果
public static void main(String[] args) {
int sum = 0;
for(int i = 1 ; i <= 100; i++){
for( int j = 1; j <= i; j++){
sum += j;
}
}
System.out.println(sum);
}
6. 创建一个char类型的26个元素的数组,分别放置’A’-‘Z’。使用for循环访问所有元素并打印出来。
public static void main(String[] args) {
char[] c = new char[26];
for(int i = 0; i < c.length; i++){
c[i] = (char)('A' + i);
System.out.print(c[i] +" ");
}
}
7. 请求出一个数组int[]的最大值,并得到对应的下标。
public class Test01 {
public int max(int[] a){
int max = 0;
for(int i = 0; i <= a.length/2 ; i++){
max = Math.max(a[i], a[a.length- 1 -i]);
}
System.out.println(max);
return max;
}
public static void main(String[] args) {
Test01 t = new Test01();
int[] a = new int []{
1,3,3,9,8,5,3};
t.max(a);
}
}
8. 求一个数组的和 和 平均值。
public class Test01 {
public int sum_avg(int[] a){
int sum = 0;
int avg = 0;
for(int i = 0; i <= a.length - 1 ; i++){
sum += a[i];
avg = sum/a.length;
}
System.out.println("数组和为"+ sum + ",平均值为:" + avg);
return avg;
}
public static void main(String[] args) {
Test01 t = new Test01();
int[] a = new int []{
1,2,3,1};
t.sum_avg(a);
}
}
9. 遍历二维数组{ {4,6},{1,4,5,7},{-2}},并得到和
public static void main(String[] args) {
int sum = 0;
int[][] array = new int[][]{
{
4,6},{
1,4,5,7},{
-2}};
for(int i = 0 ; i < array.length ; i++){
for(int j = 0; j < array[i].length ; j++){
System.out.print(array[i][j] + " ");
sum += array[i][j];
}
System.out.println("");
}
System.out.println("");
System.out.println("数组和为:"+sum);
}
10. 使用二维数组打印一个10行杨辉三角
public static void main(String[] args) {
int[][] s = new int[10][];
for(int i = 0 ; i < 10 ; i++){
s[i] = new int [i+1]; //定义一维数组
s[i][i] = 1; //对角线为1
s[i][0] = 1; //第一列为1
for(int j = 1; j < i; j++){
s[i][j] = s[i-1][j-1]+s[i-1][j];
}
System.out.println(Arrays.toString(s[i]));
}
}
自己写的,输出不太一样
public static void main(String[] args) {
int[][] s = new int[10][];
for(int i = 0 ; i < s.length ; i++){
s[i] = new int [i+1]; //定义一维数组
for(int j = 0; j < s[i].length; j++){
if(j == 0 || j == s[i].length -1){
s[i][j] =1;
}else{
s[i][j] = s[i-1][j-1]+s[i-1][j];
}
}
}
//输出杨辉三角
for(int i = 0; i < s.length ; i++){
for(int j = 0; j <s[i].length; j++){
System.out.print(s[i][j] + "\t");
}
System.out.println();
}
}