20170803 - 今日技能封装 - Q

Posted 清及

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20170803 - 今日技能封装 - Q相关的知识,希望对你有一定的参考价值。

1 如何生成0-0.99999的随机小数?使用其生成0-1000的随机数需注意什么?

 

2 while的语法是?

 

3 如何跳出while循环?

 

4 循环三要素有哪些?

 

5 循环的关键在于?三要素的关键在于?循环10次,每次变量a加1,结果与循环变量是什么?

 

5.5 累加1-100的是?

 

6 循环结构有?区别是?如何选择?

 

7 Java中else..if分支结构,可以省略else吗?

 

8 Java中定义了类型后后续还可以改变吗?

 

9 下例输出的是浮点数还是整型?

double num = Math.random();

num *= 1000;

num = (int)(num+1);

 

10 do...while结构内do部分为什么?

 

11 循环中的循环体是什么?

 

12 do..while的语法是?

 

13 for循环的语法是?

 

14 for循环中,三要素如何设置多条件?

 

15 如何跳出当前循环?如何调出整个循环?

 

16 如何优化代码量?

 

17 升序算法是?a,b,c,d如何排序?

 

18 for循环中定义的变量是什么变量?如果是局部变量,如何使其的值能够传递出来?

 

19 如何生成0-99的随机数?

 

21 编写算法的技巧:for循环,结果与上次相关的,如何编写算法?

找到真正的变量.

 

有数列为:9,99,999,...,9999999999。要求使用程序计算此数列的和

显然,计算10次,每次用上次的值加本次的值,如第三次,则为999

 

 

设计算法时,卡在了计算本次的值上,由于限定了不可用幂方函数,只能从该次值与上次值关系入手.

9

99

999

显然

9 = 10 - 1

99 = 100 - 1

999 = 1000 - 1

再理清思路,可见1为常量(变量不用理会,要找的是变量和变量的关系),而左边的值又为结果,因此要找出的关系的两个变量便是上一次值与10,100,1000

 

于是易得出,

方式1,

除第一次外,本次值 = (上一次总和+1) * 10 - 1,

本次总和 = 本次值 + 上和

 

方式2,

本次值 = 10 乘以 当此次数 - 1;

 

理清思路理清思路理清思路

 

//关键步骤,需要想到可以用上一步骤得到的结果用来交互得出该步所需变量,而不是想着直接10乘以该次的幂方

 

package Day04;

 

public class addition9 {

 

public static void main(String[] args) {

 

//for循环10次

//循环变量是次数

//变体是10的乘等

long ten = 10;

long result = 0;

int num = 0;

long value = 0;

for(int times = 1;times <= 10;times++){

//每次乘等于10,每次ten的值都比上一轮大一个级别

value = ten - 1;

System.out.println(ten);

ten = ten * 10;//关键步骤,需要想到可以用上一步骤得到的结果用来交互得出该步所需变量,而不是想着直接10乘以该次的mi‘fang

result = value + result;

}

System.out.println(result);

 

}

 

}

 

 

public class SumOfSeq {

public static void main(String[] args) {

// 数列求和

long nine = 9;

long result = nine;

for (int i = 2; i <= 10; i++) {

nine = nine * 10 + 9;

result += nine;

}

System.out.println("9+99+999+...+9999999999=" + result);

}

}

1 如何生成0-0.99999的随机小数?使用其生成0-1000的随机数需注意什么?
Math.random(),生成后*1000,再强转。(int强转会抹掉小数位)
2 while的语法是?
while(循环条件){
}
3 如何跳出while循环?
break;
4 循环三要素有哪些?
初始化循环变量;循环的条件;变量的变化方式。
5 循环的关键在于?三要素的关键在于?循环10次,每次变量a加1,结果与循环变量是什么?
在于循环三要素,三要素理清后,选择什么架构都可以,只是语法上的不同而已。
在于找到真正的循环变量。
循环变量是次数,结果是a
5.5 累加1-100的是?
每次的累加和而不是1,2,3
6 循环结构有?区别是?如何选择?
do...while;while;for;
while:先判断,后执行
do...while:先执行,后判断
//
初始化循环变量及变化相同则适合do...while
固定次数相同的情况适合for
先看次数,再看变化。
7 Java中else..if分支结构,可以省略else吗?
可以
8 Java中定义了类型后后续还可以改变吗?
不可以,除非重新定义并强转
9 下例输出的是浮点数还是整型?
double num = Math.random();
num *= 1000;
num = (int)(num+1);
浮点数。
10 do...while结构内do部分为什么?
相当于将第一要素及第三要素同时定义,因此适用于第一要素及第三要素相同的情况。
11 循环中的循环体是什么?
除变量变化以外的循环代码块
12 do..while的语法是?
do{
初始化循环变量(变量变化的方式)
循环体
}while(循环的条件);
13 for循环的语法是?
for(初始化变量;循环条件;循环变量变化的方式){
循环体
}
14 for循环中,三要素如何设置多条件?
(i = 6,j = 1;i < 2 && j == 2;i += 1,j += 2)
15 如何跳出当前循环?如何调出整个循环?
continue,break
16 如何优化代码量?
可以用if的用if,再不行用三目,再不行用else if.
17 升序算法是?a,b,c,d如何排序?
关键点:比大小,大则交换数值,从而保证比较数值为最大.
方法为,
a与b比,a与c比,a与d比,
b与c比,b与d比,
c与d比,
交换算法:设置中转变量t
t=a;
a=b;
b=t;
18 for循环中定义的变量是什么变量?如果是局部变量,如何使其的值能够传递出来?
局部变量,在外部先定义并赋值(必须,因为有可能不进入for循环,不赋值在使用时会报错),使其变成全局变量.
华为
19 如何生成0-99的随机数?
int a = (int)(Math.random() * 100)
int强转,会直接去掉小数位.
20 死叉
21 编写算法的技巧:for循环,结果与上次相关的,如何编写算法?
找到真正的变量.
有数列为:9,99,999,...,9999999999。要求使用程序计算此数列的和
显然,计算10次,每次用上次的值加本次的值,如第三次,则为999
设计算法时,卡在了计算本次的值上,由于限定了不可用幂方函数,只能从该次值与上次值关系入手.
9
99
999
显然
9 = 10 - 1
99 = 100 - 1
999 = 1000 - 1
再理清思路,可见1为常量(变量不用理会,要找的是变量和变量的关系),而左边的值又为结果,因此要找出的关系的两个变量便是上一次值与10,100,1000
于是易得出,
方式1,
除第一次外,本次值 = (上一次总和+1) * 10 - 1,
本次总和 = 本次值 + 上和
方式2,
本次值 = 10 乘以 当此次数 - 1;
理清思路理清思路理清思路
//关键步骤,需要想到可以用上一步骤得到的结果用来交互得出该步所需变量,而不是想着直接10乘以该次的幂方
package Day04;
public class addition9 {
public static void main(String[] args) {
//for循环10次
//循环变量是次数
//变体是10的乘等
long ten = 10;
long result = 0;
int num = 0;
long value = 0;
for(int times = 1;times <= 10;times++){
//每次乘等于10,每次ten的值都比上一轮大一个级别
value = ten - 1;
System.out.println(ten);
ten = ten * 10;//关键步骤,需要想到可以用上一步骤得到的结果用来交互得出该步所需变量,而不是想着直接10乘以该次的mi‘fang
result = value + result;
}
System.out.println(result);
}
}
public class SumOfSeq {
public static void main(String[] args) {
// 数列求和
long nine = 9;
long result = nine;
for (int i = 2; i <= 10; i++) {
nine = nine * 10 + 9;
result += nine;
}
System.out.println("9+99+999+...+9999999999=" + result);
}
}

以上是关于20170803 - 今日技能封装 - Q的主要内容,如果未能解决你的问题,请参考以下文章

20170804 - 今日技能封装 - Q

20170811 - 今日技能封装 - Q

20170810 - 今日技能封装 - Q

20170802 - 今日技能封装 - Q

20170731 - 今日技能封装 - Q

20170812 - 今日技能封装 - Q