首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

底下的i-着实不懂。

2013-10-06 
下面的i--着实不懂。。/***任意给出一个自然数K,数K不为0,计算其各位数字的平方和k1,再计算k1的各位数字的平

下面的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--吧……说实话程序未看懂……

热点排行
Bad Request.