龙龙龙龙龙龙 发表于 2020-2-15 00:04:16

能运行结果一直错 忧伤

验算过好多遍,感觉没什么问题,但结果不正确
希望就在这个基础上改改,感谢!

求Sn=a+aa+aaa+...+aaa...a(n个a)之值,其中a是一个数字,n表示a的位数,n由键盘输入。
例:2+22+222+2222(此时n=4)

#include <stdio.h>
#include <math.h>
int main()
{
    int a,n,S=0;
    int i;
    printf("输入数字a的值(0~9的一个数):");
    scanf("%d",&a);
    printf("输入想加到的位数n的值(整数):");
    scanf("%d",&n);

    for(i=0; i<=n-1; i++)
    {
      S+=a*pow(10,i)*(n-i); //i是10的指数,(n-i)是几个相同的数
    }
    printf("\n%d",S);
    return 0;
}

大概是这样

                                          4                      3                        2                   1         (n-i)
2                2                        2*10^0
22                2+20                        2*10^0+2*10^1
222                2+20+200                2*10^0+2*10^1+2*10^2
2222                2+20+200+2000        ...+   ...       +      ...      +        ...               

4goodworld 发表于 2020-2-15 00:24:31

    int a,n,S,s;
        S=s=0;
    printf("输入数字a的值(0~9的一个数):");
    scanf("%d",&a);
    printf("输入想加到的位数n的值(整数):");
    scanf("%d",&n);
        for(int j=0;j<n;j++){
               for(int i=0; i<=j; i++)
               {
                        s+=a*(int)pow(10,i); //i是10的指数
               }
               S+=s;
               s=0;
        }
    printf("\n%d",S);
改成这样子

龙龙龙龙龙龙 发表于 2020-2-15 10:17:33

本帖最后由 龙龙龙龙龙龙 于 2020-2-15 10:21 编辑

4goodworld 发表于 2020-2-15 00:24
改成这样子

害 我懂了你的拿codeblocks 试了也是结果错,然后灵光一现换了个编译器,就对了,我那个也对了
但还是感谢,又学到了,可是为什么会这样?

莫谦 发表于 2020-2-15 10:23:24

#include <stdio.h>
#include <math.h>
int main()
{
    int a,n,S=0,j;
    int i;
    printf("输入数字a的值(0~9的一个数):");
    scanf("%d",&a);
    printf("输入想加到的位数n的值(整数):");
    scanf("%d",&n);

    for(i=0; i<=n-1; i++)
    {
                for(j=0;j<=i;j++)
      S+=a*pow(10,j); //i是10的指数,(n-i)是几个相同的数
    }
    printf("%d\n",S);
    return 0;
}

龙龙龙龙龙龙 发表于 2020-2-15 10:38:09

莫谦 发表于 2020-2-15 10:23
#include
#include
int main()


了解 感谢{:10_297:}
页: [1]
查看完整版本: 能运行结果一直错 忧伤