先说第二个:
#include<stdio.h>
int a(int x)
{
int j,t=1,i;
int l=0;
for(i=1;i<=x;i++)
{
for(j=1;j<=i;j++)
t=t*j;//求阶乘,第二个for循环的管辖范围到此为止;
l=t+l;//求和
t=1;//表示把重新置1,以便下一次求阶乘;
}
return l;
}
void main()
{
int b;
b=a(10);
printf("%d\n",b);
}
首先main函数没有错,其次你的for循环的大括号错了。你的l表示求阶乘的和,t表示阶乘,i表示循环的次数,j是求一次循环的判断条件吧。我没有在tuborC上运行。呵呵。。。
再说第一个:
6是完数吧。6=1+2+3;我理解的不错吧。
#include <stdio.h>
void main()
{
int x,j=0,t,y,z,a=0;
for(x=1;x<=500;x++)
{
y=x/2;//表示如果在x/2之前除1之外没有数字可以整除他,那么他是一个素数;
for(z=1;z<=y;z++)//z表示循环的条件吧;
{
t=(x%z==0)?z:0;
a=a+t;//a表示除本身外其他因子的和;
}
if(x==a)
{
printf("%d\t",x);
j++;
}
if(j%8==0)
printf("\n");
}
}
楼主你的意思是输出1到500之间的所有的完数,并且每行有8个。我改了一下,程序我没有运行,呵呵。。。