#include
void main()
{
int i, j, k, l,n,d[100];
k=0;
for(i=2;i<1001;i++)
{
n=0;
for(j=1;j<i;j++)
if(i%j==0)
{
d[k]=j;
n+=d[k];
k++;
}
if(i==n)
printf("%d是",i);
{
for(l=0;l<k;l++)
printf("%d ",d[l]);
}
}
你这代码里少了一个花括号
tt.c:1:9: error: #include expects "FILENAME" or
#include
^
tt.c: In function ‘main’:
#include后面没有头文件
```tt.c:20:1: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
没有<stdio.h>的头文件无法使用printf();函数
还有,数组d[100]按你代码循环的次数k最后382(
3 {/*
14 d[k]=j;
15 n+=d[k];*/
16 k++;
17
18 }
19 printf("%d\n",k);//我加的代码打印K的值,
20 if(i==n)
21 printf("%d是",i);
22 {/*
23 for(l=0;l<k;l++)
24 printf("%d ",d[l]);
25
26 */
)把这两处注释掉,加上头文件和花括号,你的程序才能运行
不注释这两处就会在你程序的最后提示这个报错
*** stack smashing detected ***: <unknown> terminated

我英文不好查的百度,就是数组这里的问题
d[100]你却往d[大于100]里赋值,
还有就是最后少个花括号 }
最后你的代码问题就是没注释不好读定义的变量也是单个字符字面意思不好理解,因为不知道你代码到底要干什么的,所以没重新写个,你自己看看上面的错误。