下面的i--着实不懂。。
/*
**任意给出一个自然数K,数K不为0,计算其各位数字的平方和k1,再计算k1的各位数字的平方和k2...重复此过程,最终将得到数1或145,,此时再做数的平方和运算,最终**结果始终是1或145.
*/
#include<stdio.h>
int main(int argc , char **argv)
{
int k,a[100],i;
printf("任意给出一个自然数(不为0)\n");
scanf("%d",&k);
while(k != 1 && k != 145)
{
printf("k = %d->",k);
i = 1;
while(k>0)
{
a[i++] = k % 10 ;
k /= 10 ;
}
k = 0;
i--;/*这个i--干嘛的?*/
while(i >= 1)
{
printf("%d*%d",a[i],a[i]);
if(i > 1)
printf("+");
k += a[i] * a[i];
i--;
}
printf("=%d\n",k);
} c
[解决办法]
a[i++]表示a数组付完值之后i加1,故每次循环一次i作为a数组的角标都会往后移一位,所以最后一次执行循环的时候,a数组的角标是多一位的,也就是数组的最后一位并未赋值,所以要i--吧……说实话程序未看懂……