黑马程序员技术交流社区

标题: 编写程序计算12+22+32+...+1002的和 [打印本页]

作者: LTT    时间: 2015-4-24 22:06
标题: 编写程序计算12+22+32+...+1002的和
大师,求求你们啦

作者: lai19    时间: 2015-4-24 22:09
for(int i=12,i<=1002,i
作者: LTT    时间: 2015-4-24 22:09
lai19 发表于 2015-4-24 22:09
for(int i=12,i

答应不是这个,!
作者: LTT    时间: 2015-4-24 22:10
大家有没有好的推荐,帮帮忙吧
作者: 米江波    时间: 2015-4-24 22:30
class Demo
{
        public static void main(String[] args)
        {
                int y=0;
                for (int x=1;x<=102 ;x++ )
                {
                       
                        y++;//你也可以定义y+=10;
                        if (y%10==2&y>10)
                        {
                               
                                System.out.print(y+"+");        //后面的+号真的想不出来判断的方法了
                        }
                       
                }

        }
}
代码写的乱七八糟的自己都看不懂了:L

作者: LTT    时间: 2015-4-24 22:31
米江波 发表于 2015-4-24 22:30
class Demo
{
        public static void main(String[] args)

基本明白,谢谢大师!
作者: 米江波    时间: 2015-4-24 22:38
class Demo
{
        public static void main(String[] args)
        {
                int y=2,z=0;
        for (int x=1;x<=10 ;x++ )
        {
                y+=10;
                z+=y;
                System.out.print(y+" ");
        }
        System.out.println("总和="+z);
       
        }
}
我也是新手,想了半天,你看看把   我定义了两个变量不知道还有没有大牛啊   修改后的
作者: 米江波    时间: 2015-4-24 22:47
LTT 发表于 2015-4-24 22:31
基本明白,谢谢大师!

代码还能优化  定义一个变量就搞定。 for(int x=2;x<=102;x=x+10)
作者: 米江波    时间: 2015-4-24 22:53
米江波 发表于 2015-4-24 22:47
代码还能优化  定义一个变量就搞定。 for(int x=2;x

还能优化  x=x+10 写成x+=10更完美 哈哈
作者: ixue    时间: 2015-4-24 22:53
没搞懂题目要意思啊

作者: onETT    时间: 2015-4-24 23:13
这是基础测试的题?
作者: kayaking    时间: 2015-4-24 23:23
每次自增+10
作者: 18561271203    时间: 2015-4-24 23:44
for循环,初始值为12,判断语句为小于等于1002,控制语句为x=x+10或x+=10,就行啦。在for外面定义一个变量记录每次循环后的和。
int sum = 0;
for(int x = 12; x<=1002; x+=10)
{sum=sum+x}
System.out.println(sum);
作者: l763631191    时间: 2015-4-24 23:45
本帖最后由 l763631191 于 2015-4-25 00:01 编辑

我是这样考虑的,12+10*0;12+10*1;12+10*2。。。。。1002.
public class A{

        public static void main(String[] args){
                int num=0;
                int count=0;
                while(count*10<=1002){
                     
                       num=num+(12+10*count);
                        count++;
                }
                System.out.println(num);
        }
}
最后结果是51712
作者: 马士基    时间: 2015-4-24 23:46
这题显然考的是递归,虽然递归很慢,但是写法简单
class SumDemo
{
        public static void main(String[] args)
        {
                System.out.println(sum(12,10,1002));
        }       
        public static int sum(int start,int sep,int end)
        {
                if(start == end)
                        return start;
                return end + sum(start,sep,end - sep);       
        }
}
作者: fanxia_2007    时间: 2015-4-24 23:46
class Demo
{
        public static void main(String[] args)
        {
                int sum =0;
采用for循环
                for (int x= 12;x<=1002 ;x+=10 )
                {
                        sum=sum+x;
                }
                System.out.println("sum="+sum);
        }
}
作者: fanxia_2007    时间: 2015-4-24 23:48
class Demo
{
        public static void main(String[] args)
        {
                int sum = 0;int x=12;
                //采用while循环:
                while (x<=1002)
                {
                        sum=sum+x;
                        x+=10;
                }
                System.out.println("sum="+sum);
        }
}
作者: l763631191    时间: 2015-4-24 23:49
本帖最后由 l763631191 于 2015-4-24 23:52 编辑
l763631191 发表于 2015-4-24 23:45
我是这样考虑的,12+10*0;12+10*1;12+10*2。。。。。1002.
public class A{

不知道怎么样啊呵呵
作者: Chans_宇    时间: 2015-4-25 01:27

public class Test1 {
        public static void main (String[] args){
                //定义一个变量记录每次累加的和。
                int sum = 0;
                //for循环体内定义变量add记录变化的加数
                for(int add=12;add<=1002;add=add+10){
                        sum =sum+add;
                }
                //打印输出结果
                System.out.println("12+22+32+....+1002的和为:"+"\n"+sum);                               
        }               
}
作者: diy_coders    时间: 2015-4-25 08:00
先观察,求和数尾数都是2,两个数之间相差10,可以用每一个数和10取模,判断结果如果是2,就进行累加public class Test {         public static void main(String[] args) {                  int sum = 0;                 for (int i = 12; i < 1002; i+=10) {                         if (i % 10 == 2) {                                 sum += i;                                 System.out.println(i);                         }                 }                 System.out.println("总和:"+sum);         } }
作者: zhy934453950    时间: 2015-4-25 08:14
至于这么麻烦吗?
class Demo
{
        public static void main(String[] args)
        {
               System.out.println("sum="+(12+1002)*100/2);
        }
}

不就完事了

作者: smartisan    时间: 2015-4-25 09:26
顶楼上,汇总了下
  1. /**
  2. * 编写程序计算12+22+32+...+1002的和
  3. */
  4. import java.util.*;
  5. public class PlusEndWith2 {
  6.          public static void main(String[] args){
  7.                  System.out.println((12+1002)*100/2);
  8.                  jiHe();
  9.                  puTongFor();
  10.                  puTongWhile();
  11.                  
  12.          }
  13.          static  void jiHe(){
  14.                  List<Integer> list =new ArrayList<Integer>();
  15.                  int num=0;
  16.                  int sum=0;
  17.                  for(int i=1;i<=100;i++){
  18.                          num=10*i+2;
  19.                          list.add(num);
  20.                  }
  21.                  for(int j=0;j<list.size();j++){
  22.                          sum=sum+list.get(j);
  23.                  }
  24.                  System.out.println(sum);
  25.          }
  26.          static  void puTongFor(){
  27.                  int sum=0;
  28.                  for(int i=12;i<=1002;i+=10){
  29.                          sum=sum+i;
  30.                  }
  31.                  System.out.println(sum);
  32.          }
  33.          static  void puTongWhile(){
  34.                  int sum=0;
  35.                  int i=12;
  36.                  while(i<=1002){
  37.                          sum=sum+i;
  38.                          i=i+10;
  39.                  }
  40.                  System.out.println(sum);
  41.          }
  42.          }

复制代码

作者: wu1123    时间: 2015-4-25 10:28
好像是1 的平方 2的平方 加到 1000的平方吧 。我也有这个题目
作者: zhuchangbao    时间: 2015-4-25 10:36
这个应该很简单啊,随便找个程序改改就行了。
作者: frankzheng329    时间: 2015-4-25 11:49
  1.         int sum = 0;
  2.                 for(int i = 12; i <= 1002;)
  3.                 {
  4.                         sum+= i;
  5.                         i+= 10;
  6.                        
  7.                        
  8.                 }
  9.                
复制代码

作者: 怪学究    时间: 2015-4-26 15:29
class Demo
{
        public static void main(String[] args)
        {
                int sum = 0;
                for (int i = 12 ; i<=1002 ; i=i+10 )
                {
                        sum=sum+i;

                }
                System.out.println("请输出答案:"+sum);
        }
}
献丑了。。
作者: Cat    时间: 2015-4-26 20:05
学习一下、、
作者: 893269222    时间: 2015-4-26 21:26
  1. class Demo4
  2. {
  3.         /*
  4.         需求:计算12+22+32+42+。。。。1002;
  5.         思路:1 确定函数getSum
  6.               2  用for循环遍历
  7.                   3 打印结果
  8.         */
  9.         public static void main(String[] args)
  10.         {
  11.                 int sum=getSum();
  12.                 System.out.println("sum="+sum);
  13.         }
  14.         public static int getSum()
  15.         {
  16.                 int sum=0;
  17.                 for (int x=10;x<=1002 ; x+=10)
  18.                 {
  19.                         sum=sum+x;
  20.                 }
  21.                 return sum;
  22.         }
  23. }
复制代码

作者: 乘梦而飞    时间: 2015-4-26 21:31
路过打酱油的
作者: 依秋无泪    时间: 2015-4-26 22:39
class DiGi {
                  
        public static void main(String []args) {
         long s=getSum(12);
         System.out.println(s);
        }
        public static long getSum(int key) {
          
                        if(key<1002) return key+getSum(key+10);
                        else return key;
         
        }
}

看到很多人用for写,没什么意思,我用递归写了个,可以参考下
作者: 依秋无泪    时间: 2015-4-26 22:41
class DiGi {
                  
        public static void main(String []args) {
         long s=getSum(12,1002);
         System.out.println(s);
        }
        public static long getSum(int key,int max) {
          
                        if(key<max) return key+getSum(key+10,max);
                        else return key;
         
        }
}
还是递归的思路,我优化了下代码,看着比较顺眼多了
作者: guoyuan    时间: 2015-4-26 23:17
就是累加,进行加2运算的时候从12开始就可以。循环体里边加一句 i = i+10;
作者: 吾爱SF    时间: 2015-4-26 23:33
本帖最后由 吾爱SF 于 2015-4-26 23:35 编辑

// 计算12+22+32+...+1002的和
class Sum
{
        public static void main(String[] args)
        {
                int sum = 0;
                for(int x=12;x<=1002;x++)
                {
                        if(x%10==2)
                        {
                                sum+=x;
                        }
                }
                System.out.println("12+22+32+...+1002="+sum);
        }
}
结果是:
12+22+32+...+1002=50700





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2