scanf("%d,%d",&a,&n);这句话分开写就好了, scanf("%d",&a);scanf("%d",&n);因为你输入a以后会按下回车,这时这个回车符号就被赋给了n,所以就会有问题,你分开写就不存在这个问题了,你的代码没问题。
第二条语句最好改为
int a=0,n=0;
错误在循环体中,应该将循环体中第二条语句
a=a*10+a;改为 a=a*10+1;就可以实现了
a=a*10+a;
假设一开始a是1, 然后a是11这还对, 然后a是121 , 然后是1331 .。。
sum+=a;
a=a*10+a;
这两句有问题
比如a=2
执行一次a=a*10+a;后a=22
但是再执行一次后a=220+22=242!
给你这个程序参考下
main()
{
int a,n,count=1;
long int sn=0,tn=0;
printf("please input a and n\n");
scanf("%d,%d",&a,&n);
printf("a=%d,n=%d\n",a,n);
while(count<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
++count;
}
printf("a+aa+...=%ld\n",sn);
}
不过我相信你自己可以想出办法解决的!
每次计算a的时候,a的值已经改变了,再增加一个变量b就可以了
void main()
{
int m,sum=0;
int a,b,n;
printf("请输入a与n的值:\n");
scanf("%d,%d",&a,&n);
b=a;
for(m=1;m<=n;m++)
{
sum+=a;
a=a*10+b;
}
printf("sum=%d",sum);
}