黑马程序员技术交流社区
标题:
Java基础班第四天作业
[打印本页]
作者:
kelin410
时间:
2016-3-7 12:57
标题:
Java基础班第四天作业
1.分析以下需求,并用代码实现:
(1)打印1到100之内的整数,但数字中包含9的要跳过
(2)每行输出5个满足条件的数,之间用空格分隔
(3)如:1 2 3 4 5
/*
思路:
1.因为是打印1~100之间的整数,所以要用一个for循环将1~100全部遍历一遍。
2.因为要将包含9的数给跳过,所以要对当前被遍历的数进行判断。判断是否包含9。这里我用%10 和 /10 分别判断个位和10位是否为9。
3.因为每行要只能输出5个数据,所以我用一个count变量来记录已经打印了多少次,如果count的值%5为0就打印一个换行符。
*/
class Task1 {
public static void main(String[] args) {
for (int x = 1, count = 0; x <= 100; x++) {
if (x % 10 != 9 && x / 10 != 9) {
count++;
System.out.print(x + "\t");
if (count % 5 == 0) {
System.out.println();
}
}
}
}
}
2.分析以下需求,并用代码实现:
(1)打印1-100之间的所有素数及个数
(2)每行输出5个满足条件的数,之间用空格分隔
(3)如果一个大于1的自然数,这个数只能被1和其本身整除,这个数就叫素数。
(4)如:2 3 5 7 11
/*
思路:
1.因为是1~100之间的数,所以要用for循环遍历1~100的数。
2.又因为是求素数,所以1直接排除在外。只需要遍历2~100即可。
3.判断是否为素数的办法就是将这个数除以2~自身减1的所有数。
一旦这个数能被整除,那么这个数就不是素数,就继续遍历下一个数,否则就将这个数打印出来。我这里用for循环 2~自身减1。
4.要统计个数就要用计数器思想。定义一个变量count在for循环外。没判断出一个素数count自身就加1。
5.因为每行只能输出5个数字,所以我用count变量%5来判断是否已经成功打印出5个素数。如果是就插入一个换行符。
6.外循环执行完以后将count也打印出来。
*/
class Task2 {
public static void main(String[] args) {
int count = 0;
w:for (int x = 2; x <= 100; x++) {
for (int y = 2; y < x; y++) {
if (x % y == 0) {
continue w;
}
}
System.out.print(x+"\t");
if (++count % 5 == 0) {
System.out.println();
}
}
System.out.println("素数的个数为:"+count);
}
}
3.分析以下需求,并用代码实现:
(1)按照从大到小的顺序输出四位数中的个位+百位=十位+千位(3553,2332,1166,8228,3773)的数字及个数
(2)每行输出5个满足条件的数,之间用空格分隔
(3)如:9999 9988 9977 9966 9955
/*
思路:
1.因为是计算4位数,所以值的范围是在1000~9999之间,这里我用for语句进行遍历。
2.对遍历出来的数字进行拆位,例如:4352拆位后得出:4 3 5 2,拆位后分别存入ge,shi,bai,qian 四个变量。这里用/ 和 % 运算符。
3.判断ge+bai是否等于shi+qian。如果相等就输出这个数。并在for语句外定义一个count变量用来存放已经找出了多少个。
4.因为每行只能输出5个,所以在输出完以后对count变量进行判断,如果%5=0就插入一个换行符。
5.最后在循环外将count变量打印输出。
*/
class Task3 {
public static void main(String[] args) {
int count = 0;
for (int x = 1000; x <= 9999; x++) {
int ge, shi, bai, qian; //定义四个变量用来存放个位,十位,百位和千位的数。
ge = x % 10;
shi = x / 10 % 10;
bai = x / 100 % 10;
qian = x / 1000;
if (ge + bai == shi + qian) {
System.out.print(x + "\t");
if (++count % 5 == 0) {
System.out.println();
}
}
}
}
}
4.分析以下需求,并用代码实现:
(1)珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.001米。
(2)请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
/*
思路:
1.一张纸折叠一次厚度增加一倍,折叠第二次,厚度有增加一倍,他的规律是 1 变 2, 2 变 4, 4 变 8 。
2.从分析可以看出,每次的厚度都增加了一倍;这个要用循环来实现。在循环内用thickness=thickness*2,记录当前的厚度。
但是循环多少次不知道。因为n是未知的。所以这里我用死循环来做。在循环外定义一个count来记录折叠的次数。
3.在循环内每次算出thickness的值后判断是否等于8848,如果相等跳出循环。
4.最后输出count的值。
*/
class Task4 {
public static void main(String[] args) {
double altitude = 8848;
double thickness = 0.001;
int count = 0;
while (true) {
count++;
thickness = thickness * 2;
if (thickness >= altitude) {
break;
}
}
System.out.println(count);
}
}
5.分析以下需求,并用代码实现:
(1)倒着打印九九乘法表
class Task5 {
public static void main(String[] args) {
for (int x = 9; x >= 1; x--) {
for (int y = 1; y <= x; y++) {
System.out.print(y + "*" + x + "=" + x * y + "\t");
}
System.out.println();
}
}
}
6.分析以下需求,并用代码实现:
(1) 计算15+25+35+....+1005的和
/*
思路:
1.从上面的要求中可以看出要将15~1005遍历一遍,而每个数都比上个数多10。所以循环的跳距是10。
2.对每个遍历的数据累加求和。
*/
class Task6 {
public static void main(String[] args) {
int sum = 0;
for (int x = 15; x <= 1005; x += 10) {
sum += x;
}
System.out.println("15+25+35+....+1005的和为:"+sum);
}
}
7.分析以下需求,并用代码实现:
(1)打印倒直角三角形
*****
****
***
**
*
(2)打印等边三角形(题目较难,可作为扩展)
*
* *
* * *
* * * *
class Task7 {
public static void main(String[] args) {
//打印第一个三角形。
for (int x = 1; x <= 5; x++) {
for (int y = x; y <= 5; y++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("----------------");
//打印第二个三角形。
for (int x = 1; x <= 4; x++) {
for (int y = x; y <= 3; y++) {
System.out.print(" ");
}
for (int z = 1; z <= x; z++) {
System.out.print("* ");
}
System.out.println();
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2