标签:*** 输入 int bsp 循环 输出 就是 nbsp 语句
今天写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;
}
for语句初始化
标签:*** 输入 int bsp 循环 输出 就是 nbsp 语句
原文地址:https://www.cnblogs.com/ArnoldSchwarzenegger/p/11743673.html