求解答c++的题急用

本关任务:编写一个程序,一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出指定范围内的完数个数。
•输入:1100 表示区间1,100
输出:2,表示此区间中有2个完数
注意:最大区间为[0,10000]
例如: 输入17,表示区间在[1,7]之间的数开始循环的找,即从1开始到7,其中61+2+3.所以有一个完数,程序输出1。

#include<stdio.h>
int main(void)
{
int y,x,i,m,v;
m=0;v=0;
scanf("%d",&y);
for(x=1;x<=y;x++)
{
for(i=1;i<x;i++)
{
if(x%i==0)
{
m=m+i;
}
}
if(m==x)
{v+=1;
}
printf("%d",v);
}

}
这是在头歌上的题,我每次输出都是零,求解答。

把m=0放在第一个for里面

而且,你的printf应该放在for循环外面

#include <stdio.h>
int main(void)
{
    int l = 0, r = 0, i = 0, j = 0, sum = 0, cnt = 0;
    scanf("%d%d", &l, &r); //输入区间左右边界
    for (i = l; i <= r; i++) //遍历区间
    {
        sum = 0; //重置sum为0
        for (j = 1; j < i / 2 + 1; j++)
        {
            if (i % j == 0) sum += j; //求因子和
        }
        if (sum == i) cnt++; //如果当前数与其因子和相等,则计数器+1
    }
    printf("%d\n", cnt);
    return 0;
}