for语句初始化

今天写PTA上的题目求不大于n的所有完数,折腾了老半天运行不出结果,最后发现问题出现再for语句上,经过一番查阅总算是解决了
#include<stdio.h>
int main()
{
 int i, n,j,s,count=0;
 scanf_s("%d", &n);//输入n的值
 if (n <= 0)
 {
  printf("error data");
  exit(0);
 }//判断输入的值时候符合要求
 
  for (i = 2;i <= n;i++)
  {s = 0;/*一开始想把s=0;这条语句写入for括号中,写成for (i = 2,s=0;i <= n;i++),运行老半天,就是不出结果。
原来for (i = 2,s=0;i <= n;i++)相当于
*************
i=2;
s=0;
for (;i <= n;i++)
*****************
s=0;这个值不是在循环以内,也就是说只有第一次循环的时候s=0,经过循环s进行了叠加,
每次结束循环后必须让其返回为0*/
   for (j = 1;j < i;j++)
   {
    if (i % j == 0)
     s = s + j;//因子之和
   }
  if (s == i)//判断因子之和是否等于i
  {
   printf("%5d", i);
   count++;//计数器如果等于0则输出none
  }
 }
  if (count == 0)
   printf("none");
 return 0;
}
原文地址:https://www.cnblogs.com/ArnoldSchwarzenegger/p/11743673.html