大一初学C语言,想写一个若输入范围内没有完数,则输出error,但现在问题是貌似不经过if结构直接有没有完数都在结尾输出error,代码写的有点乱,帮忙看一下(已经改了好多版了),谢谢,麻烦了
完数是指一个整数恰好等于它的因子之和(除自身外),则称这个数为完数。从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n(m和n均为正整数且m≤n)之间的所有完数。
【输入形式】
先后输入两个正整数m和n,用逗号分隔
【输出形式】
输出所有完数,每两个数之间用逗号分隔。若输入非法,则输出“error”
【样例输入】
1,2000
【样例输出】
6,28,496
【样例说明】
无
【评分标准】
正确性
#include<stdio.h>
int main(){
int m,n,a,b,c,sum;
int flag=0;
scanf("%d,%d",&m,&n);
if(m>9999||n>9999) printf("error");
else {if(m>n){
int temp;
temp=n;
n=m;
m=temp;
}
for(a=m;a<=n;a++){
sum=0;
c=0;
for(b=1;b<a;b++){
if(a%b==0) sum=sum+b;
}
if(sum==a){
c=c+1;
if(flag==0){
flag=1;
printf("%d",a);
}
else printf(",%d",b);
}
}
if(c==0) printf("error");
}
return 0;
}