首先了解一个问题,应该怎么去编程?
1、解决一个问题的时候,可以先使用汉语描述思路。(养成好习惯)
2、复杂的问题可以“一步一步”去实现,没必要以下全部实现。
编程思想/思路都是一步一步分析,积累出来的。
编程最主要的就是写汉语思路。思路有了,代码就不远了。
把问题拆开,一个一个去解决一下。
练习题.png
第一题:
第一步:从1开始循环,循环到1000,先保证每一个数字都能取到。
第二步:在第一步的循环过程中,一个数字一个数字筛查,判断该数字是否是“不能被7整除的整数”。
public class Homework1{
public static void main(String[] args){
int sum = 0;
for (int i = 1 ;i <=1000 ;i++ ){//从1循环到1000
if(i%7!=0){//判断,如果i对7取余不等于0,求和
sum = sum +i;//不能被7整除就累加/求和
}
}
System.out.println("sum = " + sum);
}
}
第二题:
有规律,除了1以外,奇数是减法,偶数是加法
第一种思路: 可以把所有的偶数求和,再把所有的奇数求和,然后偶数求和的结果减去奇数求和的结果再加上1
第二种思路:循环过程中,取出每个值,判断该数是偶数还是奇数,偶数是加,奇数就减。
这里我给出第二种思路的写法。
public class Homework2{
public static void main(String[] args){
int sum = 1;
for (int i = 2 ; i <= 100 ; i ++){
if(i % 2 == 0){//偶数
sum +=i;
}else{//奇数
sum -=i;
}
}
System.out.println("结果为:" + sum);
}
}
第三题:
第一步:怎么在键盘上接收一个正整数
第二步:先不管乘法的事儿,先从输入的正整数取到1(逐次递减)
public class Homework3{
public static void main(String[] args){
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请输入一个正整数:");
long jieCheng = 1;
for ( int i = s.nextInt() ; i > 0 ; i-- ){
jieCheng = jieCheng * i;
}
System.out.println("它的阶乘为:" + jieCheng);
}
}
第四题:
重点题目: 主要练习,在外部打布尔标记
什么是因数?例如3*5=15 3和5都是15的因数
质数就是除了1和他本身就没有因数的数。
public class Homework4{
public static void main(String[] args){
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请输入一个正整数:");
int num = s.nextInt();
//可以考虑用一个布尔标记
boolean zhiShu = true;//true表示是质数
//判断该数字是不是质数
for (int i = 2 ; i< num ;i++ ){
if(num %i ==0){//余数是0表示不是质数,循环没必要执行了,为了效率,这里要终止循环
zhiShu = false;
break;
}
}
System.out.println(num + (zhiShu ? "是" : "不是") + "质数");
}
}
第五题:
空格的规律:第1行4个空格、第2行3个空格、第3行2个空格,第4行1个空格、第5行0个空格
星号的规律:第1行1个、第2行3个、第3行5个、第4行7个、第5行9个、行号 * 2 - 1
public class Homework5{
public static void main(String[] args){
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请输入一个正整数作为行数:");
int rows = s.nextInt();
for (int i = 1;i <= rows ;i++){//外循环控制总行数
//在这里需要一行全部输出
//输出空格以及“*”
//输出空格循环
for (int j = 0;j<rows - i ;j++ ){
System.out.print(" ");
}
//输出星号循环
for (int k = 0;k<i*2-1 ;k++ ){
System.out.print("*");
}
//换行
System.out.println();
}
}
}
第六题:
主要练习:while循环和
每一天都会得到2.5元
即使是花了6元,当天依然有2.5元的收入
public class Homework6{
public static void main(String[] args){
int day = 0;//天数的默认初始值为0
double money = 0.0;
while(true){
day++;//天数加1
money += 2.5;//钱数加2.5元
if(day % 5 == 0 ){
money -= 6.0;
}
//当money >= 100.0 的时候,循环结束
if (money >= 100.0){
break;
}
}
System.out.println("小芳通过" + day + "天积攒了" + money + "元钱");
}
}
第七题:
一个数如果恰好等于它的因子之和,这个数就是完数。
因子怎么找?
例如:10的因子怎么找
10 % 1 == 0
10 % 2 == 0
10 % 5 == 0
不算10本身
10的因子:1,2,5
1 + 2 + 5 = 8
10不是完数
public class Homework7{
public static void main(String[] args){
//第一步:先从1到1000,每个数字都取出来
//1不属于完数,从2开始判断
for (int i = 2;i <= 1000 ;i++ ){
//第二步:在这里可以拿到i,那么此时应该判断i是否是一个完数
//数字有了,接下来找这个数字的因子
int sum = 0;
for (int j = 1; j <= i / 2 ; j++ ){
//假设这个数是6,j取到的值就是:1 2 3 4 5
//但是实际上j只取了:1 2 3
//取到一半就行
if(i % j == 0){
//此时j就是因子。
//记得将因子j追加,累计。
sum += j;
}
}
//以上for循环结束,表示:所有银子求和完毕了
if (i == sum){
//i是一个完数
System.out.println(i);
}
}
}
}
网友评论