第三周课程总结&实验报告(一)
实验报告(一)
1.打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身。例如,153是一个“水仙花数”。
(1).实验代码:
package 测试;
public class 测试0 {
public static void main(String[] args) {
int sum,a,b,c;
for(a=1;a<=9;a++)
{
for(b=0;b<=9;b++)
{
for(c=0;c<=9;c++)
{
sum=a*100+b*10+c;
if(sum==a*a*a+b*b*b+c*c*c)
{
System.out.println(sum);
}
}
}
}
}
}
(2)实验运行结果截图:
(3)实验大致思路:
题目限制了3位数,所以可以直接用3个数进行循环,然后判断符合的数进行输出
2. 编写Java程序,求13-23+33-43+…+973-983+993-1003的值。
(1).实验代码:
package 测试;
public class 测试0 {
public static void main(String[] args) {
int sum=0,a,b=1;
for(a=1;a<=100;a++)
{
sum+=(a*10+3)*b;
b=-b;
}
System.out.println(sum);
}
}
(2).实验运行结果截图:
(3)实验大致思路:
观察题目就大致能看出来是a*10+3模式的数进行循环加减,直接循环之后输出最后的结果就完成了
3. 编程求1!+2!+3!+…+20!。
(1).实验代码:
package 测试;
public class 测试0 {
public static void main(String[] args) {
long sum=0,a,b,c;
for(a=1;a<=20;a++)
{
b=1;
for(c=1;c<=a;c++)
{
b*=c;
}
sum+=b;
}
System.out.println(sum);
}
}
(2)实验运行结果截图:
(3)实验大致思路:
需要在题目中建立一个循环来计算阶乘,完成了计算阶乘这一步剩下的就只是相加然后输出结果,但是如果定义的变量为int,就会出问题,结果是268040729,改成long之后就正常了,结果为2561327494111820313.原因是数字太大,超出了范围.
4. 编写Java程序,计算8+88+888+…前10项之和。
(1).实验代码:
package 测试;
public class 测试0 {
public static void main(String[] args) {
int sum=0,a,b=0;
for(a=1;a<10;a++)
{
b=b*10+8;
sum+=b;
}
System.out.println(sum);
}
}
(2)实验运行结果截图:
(3)实验大致思路:
和第二题类似,都是找到循环相加的式子直接循环相加并输出
5. 一个数如果恰好等于它的因子之和,这个数就称为完数。编写程序输出1000以内的所有完数。
(1).实验代码:
package 测试;
public class 测试0 {
public static void main(String[] args) {
int sum;
for(int i=1;i<=1000;i++)
{
sum=0;
for(int j=1;j<=i-1;j++)
{
if(i%j==0)
{
sum+=j;
}
}
if(i==sum)
{
System.out.println(sum);
}
}
}
}
(2)实验运行结果截图:
(3)实验大致思路:
循环1~1000所有的数,将不等于本身的他们的因子相加之后再与原来的数进行比较,相同则可以直接输出
6. 编写应用程序,输出满足1+2+3+…+n<8888的最大正整数。
(1).实验代码:
package 测试;
public class 测试0 {
public static void main(String[] args) {
int sum=0;
for(int i=1;i<8888;i++)
{
sum+=i;
if(sum>8888)
{
sum=sum-i;
i--;
System.out.println("n为"+i);
System.out.println("最大总和为"+sum);
break;
}
}
}
}
(2)实验运行结果截图:
(3)实验大致思路:
把1,2,3...n逐渐相加,直到出现大于8888的,这个时候总数减去这轮循环加的数,这轮循环加的数减一就可以求出n还有小于8888的最大和
7. 使用for循环打印下面的图(等腰三角形)
(1).实验代码:
package 测试;
public class 测试0 {
public static void main(String[] args) {
int a=4,b=0;
for(int i=1;i<=5;i++)
{
for(int j=1;j<=a;j++)
{
System.out.print(" ");
}
System.out.print("*");
for(int k=1;k<=b;k++)
{
System.out.print(" *");
}
a--;
b++;
System.out.println("");
}
}
}
(2)实验运行结果截图:
(3)实验大致思路:
设计好要输出多少空格和什么时候输出空格和*,然后用for循环输出就可以了
第三周课程总结:
这周对java进一步的学习,学习了很多新的用法,但是还是不能很熟练的运用到实际使用,这次作业的7道题不难,能用C语言的模式稍微变动一下就行了,不过java还是对我来说有些复杂,我觉得我要通过题目才能把java的那些方法运用起来.
理论比起实践来说还是后者比较重要而且相对更容易弄懂.