我这个C语言哪里错了呀,输出的结果不正确?

如题所述

求Sn的前5项之和的C语言程序,我帮你改完了(改动的地方见注释)

#include<stdio.h>

int main(){

 int a;

 scanf("%d",&a);

 long int Sn=0,x=0;//这里去掉Sn0=a

 for(int k=1;k<=5;k++){

  //for(int i=1;i<=k-1;i++){//这里去掉for_i循环

   x=x*10+a;//这里把i*10改成x*10

   Sn=Sn+x;//这里把Sn0改成Sn

  //}//这里去掉for_i循环

  //Sn+=Sn0;//这里去掉这句

 }

 printf("%ld",Sn);//这里把Sn+a改成Sn

 return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-09-04

这样写就可以了:

#include<stdio.h>

int main()

{ int a,s=0,sn=0;

  scanf("%d", &a);

  for(int k=1;k<=5;k++)

  {s=s*10+a;

   sn+=s;

  }

  printf("%d\n",sn);

  return 0;

}

本回答被网友采纳
第2个回答  2021-09-04
应该用内层循环构建数,外层循环求和。

内层循环中的 i 不能参与运算,即 x=i*10*a;语句错误,这样会多出 i 倍。
以下代码请参考对照:
int a,k,i;
scanf("%d", &a);
long int Sn=0, Sn0=a;
for( k=1; k<6; k++)
{
for( i=1; i<k; i++)
{
Sn0=Sn0*10+a;
}
Sn+=Sn0;
}

printf("%ld", Sn);
第3个回答  2021-09-04
你可以使用程序的调试功能,然后查看每个变量,它在程序中变化的值,这样子就能够判断错误在哪里。
第4个回答  2021-09-04
你单步算算看看你怎么构造了出一个aa来?x= i * 10 *a永远不会出现个位的a啊
相似回答