求Sn=a+两个a+三个a+…+(n个a)之值,其中a是一个数字,n表示a的位数,a,n由键盘输入


#include<stdio.h>
#include<math.h>
int main()
{
    int a,n,i,s=0;
    scanf("%d,%d",&n,&a);
for(i=0;i<=n;i++)
{
    s+=a*pow(10,i);
    while(i>0)
    {
        i--;
        s+=a*pow(10,i);
    }
}

    printf("%d",s);
    return 0;
}

题主代码修改如下:

#include<stdio.h>
#include<math.h>
int main()
{
    int a,n,i,k,s=0;
    scanf("%d%d",&n,&a); //scanf("%d,%d",&n,&a);
    for(i=0;i<n;i++)     //for(i=0;i<=n;i++)
    {
        s+=a*pow(10,i);
        k = i;
        while(k>0)
        {
           k--;
           s+=a*pow(10,k);
        }
    }
    printf("%d",s);
    return 0;
}

你的for循环体内,i自增1后,while内又自减。看你代码意思应该加一个j=i。


for(i=0;i<=n;i++)
{
    s+=a*pow(10,i);
    int j=i;
    while(j>0)
    {
        j--;
        s+=a*pow(10,j);
    }
}

修改如下,供参考:


//#include<math.h>
#include<stdio.h>

int main()
{
    int a,n,i,k=0,s=0;
    scanf("%d%d",&n,&a); //scanf("%d,%d",&n,&a);
    for(i=1;i<=n;i++)  //for(i=0;i<=n;i++)
    {
       k = k*10+a;
       s += k;
       //s+=a*pow(10,i);
       //while(i>0)
       //{
       //   i--;
       //   s+=a*pow(10,i);
       //}
    }
    printf("%d",s);
    
    return 0;
}