2 zpc10cs zpc10cs 于 2015.05.26 17:14 提问

关于加法问题,2+22+222+2222.。。。这样的
for

public class ClassMat26 {
/*
* 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
* 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
*/

public static int Count;

int test(int a,int i) {
      int aa;
    for ( int j = 0; j <=i; j++) {
        aa = a * 10 + a;
        Count = a + aa;
    }
    System.out.println("Count="+Count);
    return 0;
}

public static void main(String[] args) {
    ClassMat26 cm = new ClassMat26();
    cm.test(2,5);
}

}

我的理解的一直加下去,cm.test(2,5); 表示2为初始的,一共加5次,我这样的实现哪里不对吗;如果参数换位cm.test(5,3);,就是5+55+555 这样了

10个回答

Tiger_Zhao
Tiger_Zhao   Rxr 2015.05.26 17:20
已采纳
    int aa = 0;
    Count = 0;
    for ( int j = 0; j <i; j++) {
        aa = aa * 10 + a;
        Count += aa;
    }
ffjdd
ffjdd   2015.05.26 17:17

( int j = 0; j <=i; j++)
多加了一次

bdmh
bdmh   Ds   Rxr 2015.05.26 17:18

for循环里,应该是a*10的i次方才对吧

zpc10cs
zpc10cs 不是哦,我采纳的那位方法 是对的
大约 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2015.05.26 17:18
 int test(int a,int i) {
int sum = 0;
for(int x = 1; x <= i; i++)
{
    int mul = 1;
    for (int y = 1; y <=x; y++)
        {
            sum += a * mul;
            mul *= 10;
        }
}
System.out.println("Count="+sum);
return sum;
}
caozhy
caozhy   Ds   Rxr 2015.05.26 17:24
/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    int test(int a,int i) {
        if (i == 1) return a;
        int sum = 0;
        for(int x = 1; x <= i; x++)
        {
            int mul = 1;
            for (int y = 1; y <= x; y++)
                {
                    sum += a * mul;
                    mul *= 10;
                }
        }
        return sum;
    }
    public static void main (String[] args) throws java.lang.Exception
    {
        Ideone cm = new Ideone();
        System.out.println("Count="+cm.test(2,5));
    }
} 
caozhy
caozhy   Ds   Rxr 2015.05.26 17:24

Count=24690
http://ideone.com/vQX2sy
通过在线编译

LSL1618
LSL1618   2015.05.26 17:30

s=(ax10^0)+(ax10^1+ax10^0)+(ax10^2+ax10^1+ax10^0)+(ax10^3+ax10^2+ax10^1+ax10^0)+...+(ax10^(n-1)+ax10^(n-2)+...+ax10^0)
这个是规律,自个儿想想逻辑实现。

u014749886
u014749886   2015.05.26 17:31

public static int Count;

int test(int a,int i) {
int aa;
count = a;
if(i>1)
{

for ( int j =2; j <=i; j++) {
aa = a * 10 + a;
Count += aa;
}
}
System.out.println("Count="+Count);
return 0;
}

public static void main(String[] args) {
ClassMat26 cm = new ClassMat26();
cm.test(2,5);
}

u012271952
u012271952   2015.05.26 17:32

int aa = 0;
Count = 0;
for ( int j = 0; j <i; j++) {
aa = aa * 10 + a;
Count += aa;
}
其实这段代码很常用,被应用到很多题目中,当初学习编程的时候,对此印象深刻,aa = aa*10 +a;利用这个代码,当然还要添加其他代码可以实现另外一个功能,输入一个字符串,
把其中的数字提取出来,比如输入“ab12c3d4e5”,输出12345。很经典的哦

u014749886
u014749886   2015.05.26 17:32

你出错的原因就是没考虑好1个数的情况,见我的回复

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
计算2 +22+222 ...
#define _CRT_SECURE_NO_WARNINGS #include void main() { int a = 2, n = 3; int sum = 0; int m = 0; while (n--!=0) { //n=2 sum=2 a=22 n=1 sum=2+22 a= 222 n=0 sum=22+ 220 sum+=a; pr
求2+22+222+2222+.....的N项之和
import java.util.Scanner; public class SumDemo3 { public static void main(String[] args) { // 求2+22+222+2222+..... for (;;) { Scanner scanner = new Scanner(System.in); System.out.println("
java中求2+22+222+2222+22222.........
如题目所示,今天在java学习宝典里面看到一个这样的编程题目,具体简单的实现下: package excise; import java.util.Scanner; public class Test2 { public static void main(String args[]){ Scanner s=new Scanner(System.in); System.
高精度计算2 + 22 + 222 + 2222...(做法1)
如标题所示,正常我们的LONGLONG是有上限的,这就涉及到了我们需要用到大数据,具体怎么实现,我用数组进行模拟,每个数组存6位数字,从高位存到低位。算法如下 #include using namespace std; int main() { long long a[100]; long long sum[156]; /*for(int i = 0;
1.求2+22+222+2222+…+22…22(精确计算).
#include#define m 200main(){           long a[m],b,d;            int n,i,j,r;             printf("please input the number:");            scanf("%d",&n);            for(i=1;i         a[i]=0;           
利用JAVA实现2+22+222+2222+22222的问题
如果指定基数为2,次数为5, 则求2+22+222+2222+22222的值分析这个问题乍眼一看是有点麻烦的,但是静下来仔细分析还是有一些门路的。 我们从每一项中可以总结出规律: 项数n 值a 拆分 1 2 0*10+2=2 2 22 2*10+2=22 3 222 22*10+2=222 4 2222 2222*10+2=2222 5
计蒜客-排序后的数组删除重复数字
给定升序排序的数组,如果数组有 22 个或 22 个以上相同的数字,去掉他们,直到剩下 22 个为止。 例如: 数组 A[] = [1,1,1,2,2,3]A[]=[1,1,1,2,2,3] 你的算法需要返回新数组的长度 55, 此时 A为 [1,1,2,2,3]。 输入格式第一行输入一个不超过 200 的数字 n,第二行输入 A[n]。输出格式 输出新数组的长
a+aa+aaa+...+(aaa...a)
1.问题描述    求Sn=a+aa+aaa+⋯+(aaa…a)S_n=a+aa+aaa+⋯+(aaa…a) n个a的值,其中a是一个数字,a和n都由键盘输入。例如,2+22+222+2222+22222(此时a=2,n=5)2.思路分析 首先,这个题目中Sn求和形式告诉我们,这道题一定要用到循环结构,用到循环结构就要定义循环变量,这道题我们定义循环变量为i以及循环退出的条件为i>n。 其次是当a=
求Sn=a+aa+aaa+……+aa……a的值,其中a和n通过键盘输入,假设a输入2,n输入5.则Sn=2+22+222+2222+22222
/* *程序的版权和版本声明部分: *Copyright(c)2013,烟台大学计算机学院学生 *All rights reserved. *文件名称:
计算2 + 22 + 222 + 2222 + ...
//12.计算2 + 22 + 222 + 2222 + ... int n ,a , sum1 = 0, sum = 0;     printf("请输入一个数a=");     scanf("%d", &a);     printf("请输入几位数n=");     scanf("%d", &n);     sum1 = a;     sum = a;