B站 av88459449 162P
问题
1. 计算1000以内所有不能被7整除的整数之和
2. 计算 1+2-3+4-5+6-7...+100 的结果
3. 从控制台输入一个正整数, 计算概述的阶乘. 例如输入5, 阶乘为 5*4*3*2*1
4. 从控制台接收一个正整数, 判断该数字是否为质数
质数: 在大于1的自然数中, 除了1和它本身以外不再有其它因数的自然数
5. 从键盘接收一个正整数, 该正整数作为行数, 输出以下图形
例如, 输入5, 打印图形
*
***
*****
*******
*********
6. 小芳的妈妈每天给她2.5元钱, 她都会存起来, 每当这天是存钱的第5天或者5的倍数的话, 她就会花6元钱. 请问, 经过多少天, 小芳可以存到100元钱.
7. 一个数如果恰好等于它的因子之和, 这个数就是完数, 例如 6=1+2+3, 编程找出1000内的所有完数
8. 给一个不多于5位的正整数
要求:
* 求它是几位数
* 逆序打印出各位数字
对应作业
1.
public class Homework00 {
public static void main(String[] args) {
int result = 0;
for (int i = 1; i <= 1000; i++) {
if (i % 7 != 0) {
result += i;
}
}
System.out.println("结果是: "+result);
}
}
2.
public class Homework01 {
public static void main(String[] args) {
int result = 1;
for (int i = 2; i <= 100; i++) {
if (i%2 == 0) {
result += i;
} else {
result += i * -1; // 这里老师用的写法是 result -= i;
}
}
System.out.println("结果是: "+result);
}
}
3.
import java.util.Scanner;
public class Homework02 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入您要计算的正整数: ");
int input = s.nextInt();
int result = 1;
if (input > 0) {
for (; input > 0; input--) {
result *= input;
}
} else {
System.out.println("您的输入似乎不正确");
return; // 这里我一开始用的 break , 不对哦
}
System.out.println("结果是: "+result);
}
}
4.
import java.util.Scanner;
public class Homework03 {
public static void main(String[] args) {
/*
这题老师用了布尔标记, 在这边加一个 boolean isPrime = true
*/
Scanner s = new Scanner(System.in);
System.out.print("请输入您要判断的正整数: ");
int input = s.nextInt();
for (int i = 2; i < input; i++) {
if (input % i == 0) {
System.out.println(input+" 不是质数");
return;
}
}
System.out.println(input+" 是质数");
}
}
5.
public class Homework04 {
public static void main(String[] args) {
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请指定您要打印的行数: ");
int line = s.nextInt();
for (int i = 1; i <= line; i++) {
for (int j = line - i; j > 0; j--) {
System.out.print(" ");
}
for (int j = 1; j < i * 2; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
6.
public class Homework05 {
public static void main(String[] args) {
int day = 1; // 因为 for 循环没有初始条件, 所以直接从 1 开始, 我一开始用的 0
double total = 0;
for (;; day++) {
/*
老师用的是 while 循环
写法如 while(total < 100)
*/
total += 2.5;
if (total >= 100) {
/*
这里要用 >= , 我一开始用了 >
同时注意钱数的判断放在扣钱前面, 因为一旦存够, 条件就已经满足
*/
System.out.println("这是第 "+day+" 天, 小芳存够了 100 元.");
return;
}
if (day % 5 == 0) {
total -= 6;
}
}
}
}
7.
public class Homework06 {
public static void main(String[] args) {
System.out.println("1000以内的完数有: ");
for (int i = 2; i <= 1000; i++) { // 1 不是完数, 所以从 2 开始
int sum = 0;
for (int j = 2; j < i; j++) { // 这里老师用了 j < i/2 , 测试了下, 确实可以
if (i % j == 0) {
sum += j;
}
}
if (i == 1+sum) {
System.out.println(i+" ");
}
}
}
}
8.
public class Homework07 {
public static void main(String[] args) {
java.util.Scanner s = new java.util.Scanner(System.in);
int input = s.nextInt();
int w5 = input / 10000;
int w4 = (input - w5 * 10000) / 1000;
int w3 = (input - w5 * 10000 - w4 * 1000) / 100;
int w2 = (input - w5 * 10000 - w4 * 1000 - w3 * 100) / 10;
int w1 = input - w5 * 10000 - w4 * 1000 - w3 * 100 - w2 * 10;
if (w5 > 0) System.out.println("五位数");
else if (w4 > 0) System.out.println("四位数");
else if (w3 > 0) System.out.println("三位数");
else if (w2 > 0) System.out.println("两位数");
else System.out.println("一位数");
System.out.println(""+w1+(w2==0?"":w2)+(w3==0?"":w3)+(w4==0?"":w4)+(w5==0?"":w5));
}
}