C语言求完数的程序,哪里错了啊啊啊。

#include<stdio.h>
#include<math.h>
int main()
{
int a=1;
for(a=1;a<=10;a++)
{
int b=1,x=0,c;
int k1=0,k2=0,k3=0,k4=0,k5=0,k6=0,k7=0,k8=0,k9=0;
c=sqrt(a);
for(b=1;b<=c;b++)
{
if(a%b==0)
{
x=x+1;
switch(x)
{
case 1:k1=b;break;
case 2:k2=b;break;
case 3:k3=b;break;
case 4:k4=b;break;
case 5:k5=b;break;
case 6:k6=b;break;
case 7:k7=b;break;
case 8:k8=b;break;
case 9:k9=b;break;
}
}
else continue;
if(a=k1+k2+k3+k4+k5+k6+k7+k8+k9)
printf("%d,factor is %d %d %d %d %d %d %d %d %d %d\n",a,k1,k2,k3,k4,k5,k6,k7,k8,k9,c);
}
}
return 0;
}
因为还没有看到数组之类,所以用的switch语句,可是找不出来哪里有错,循环到死。。。
需要求出<1000的完数 并且输出因子。

if(a=k1+k2+k3+k4+k5+k6+k7+k8+k9)
printf("%d,factor is %d %d %d %d %d %d %d %d %d %d\n",a,k1,k2,k3,k4,k5,k6,k7,k8,k9,c);

这个if里边的判断写错了,应该是 if(a==(k1+k2+k3+k4+k5+k6+k7+k8+k9))注意这里是两个=号,好的编程习惯会写成 if((k1+k2+k3+k4+k5+k6+k7+k8+k9)==a)这样编译器在编译的时候就会帮你检测出来追问

谢谢啊,我改过来了,不是死循环了,不过还是算不出来,只能算到a=1。。。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-17
#include<stdio.h>
#include<math.h>
int main()
{
int a = 1;
for (a = 6; a <= 1000; a++)
{
int b = 1, x = 0, c;
int k1 = 0, k2 = 0, k3 = 0, k4 = 0, k5 = 0, k6 = 0, k7 = 0, k8 = 0, k9 = 0;
c = a/2;//6/2=3
for (b = 1; b <= c; b++)
{
if (a%b == 0)
{
x = x + 1;
switch (x)
{
case 1:k1 = b; break;
case 2:k2 = b; break;
case 3:k3 = b; break;
case 4:k4 = b; break;
case 5:k5 = b; break;
case 6:k6 = b; break;
case 7:k7 = b; break;
case 8:k8 = b; break;
case 9:k9 = b; break;
}
}
//

}if (a == k1 + k2 + k3 + k4 + k5 + k6 + k7 + k8 + k9)//=
printf("%d,factor is %d %d %d %d %d %d %d %d %d %d\n", a, k1, k2, k3, k4, k5, k6, k7, k8, k9, c);
}
return 0;
}

C语言求完数的程序,哪里错了啊啊啊。
这个if里边的判断写错了,应该是 if(a==(k1+k2+k3+k4+k5+k6+k7+k8+k9))注意这里是两个=号,好的编程习惯会写成 if((k1+k2+k3+k4+k5+k6+k7+k8+k9)==a)这样编译器在编译的时候就会帮你检测出来

找完数的C语言题目,麻烦各位大神我是哪里错了啊
从提示看是格式错误,第5行的scanf错写成5canf了。其实这个程序基本全错,不仅没有按题目要求,就是算法本身也是错误的,无法输出完数。由于程序已经全错,并不在于某一句或几句,就不详细写了,直接给出本题的程序:include <stdio.h>int main(){int i,j,m,n,t,sum=0,c=0;scanf("%d%d",...

我编的求完数的C语言代码哪错了
for(i=1;i<=n;i++)这两循环中的<=中的=号都不要,就可以了。完数是因子之和等于它本身,但这个因子,不包括它本身,如6,它的因子有1,2,3,6,除去6本身,那么1+2+3刚好等于6.你的<=中,就把1000本身包括进去了,当然结果是错的了 这个回答,你还满意 吧?

c语言算完数,这个程序错在哪了
main(){ int a,i,s=0;for(a=2;a<100;a++){ s=a;\/\/\/注意此处,该赋值语句应当在找约数时只赋值一次 for(i=1;i

请问我的c语言程序哪里错了(求“完数”的程序),谢谢
主要问题是while中,并没有调用factor函数,只是声明了一下,应该去调用 sum = factor(i, n, sum);if(n == sum)

c语言编程 完数 哪里错了啊
include<stdio.h> void main(){ int a,b,c=0;for(a=1;a<=1000;a++){ for(b=1;b

求完数c语言代码,自己写的。不知道错哪里
factorsum(int number);int main(void){ int m,shu,n,i; bool h=true; printf("Enter m,n:\\n"); scanf("%d%d",&m,&n); for(i=m;i<=n;i++){ shu=factorsum(i); if(shu==i) printf("%d到%d其中的一个完数为%d\\n",m,n,shu); else{ h=f...

C语言关于完数的程序,请问我哪里出现错误,总是得不出答案(目前只用循环...
include <stdio.h> void main(){ int x,i,s,sum=0;for(x=2;x<=1000;x++){ s=0;\/\/放在这边,x每改变一次,s要重新归零 for(i=1;i<=x\/2;i++)if(x%i==0) s+=i;if(x==s){ printf("%d+",x);sum+=x;} } printf("\\b=%d\\n",sum);} ...

c语言求100以内的完数,我写了是这种情况,不明白哪里错了,求原因
代码没有语法错误,唯一的就是如果调用库中的头文件应该用<>;而不是"";但是也没有什么影响;我不知道什么叫完数;但是你试下数就知道了;i=1的时候,j=1;里层循环条件不成立;i=2的时候,i=1条件成立,sum=1;sum==i的条件不成立,所以不会输出;i=3的时候sum =2;i=4的时候sum=5; i...

C语言:求1000以内的完数,哪里错了啊
int a = 1, b, i = 0;while (a < 1000) {a = a + 1;b = a;i = 0;\/\/每次都要清零while (b > 1) {\/\/因为你在判断a%b前先减了1,所以这里改为1b = b - 1;if (a%b == 0) {i = i + b;}else continue;}if (i == a) {printf("%5d", i);}else continue...

相似回答