怎么发不出图片,图片中这个程序有什么问题吗

img

改对不重要,重要的是从这段代码的问题中学到什麽
1、scanf("%d,&a");这句错误,双引号只能是逗号前面的内容,%d是格式化符号,&a是接收格式化数据的变量,不能放在引号里面,修改为 scanf("%d",&a);
2、第6、7、8行都是while循环体内容,需要加大括号包起来,否则只有第一个分号前的语句属于while循环体,后面所有语句得while循环结束才会运行。所以改为
for(a=100;a<1000;a++)
{
s = a/100;
d=a%100/10;
f=a%10;
if(a==sss+ddd+fff)
printf("%d ",a);
}
3、main是函数,需要加括号,改为void main(),并且main之后所有代码都是主函数内容,因此需要用大括号括起来
4、既然题目是求三位数的水仙花数,就没有必要用scanf输入任何值,可以去掉

long类型输入应该是%ld

img


给你改好了

#include <stdio.h>
int main(void)
{
    long a,b,s,d,f;
    for(a=100;a<1000;a++){
        s=a/100;
        d=a%100/10;
        f=a%10;
        if(a==s*s*s+d*d*d+f*f*f)
            printf("%ld ",a);
    }
    return 0;
}

img

scanf那句没意义啊,后面给a赋值了100。还有for循环部分请用大括号包起来,不然只会执行下一句

主函数得是int型 void改成int 结尾处加个retuen 0;
第四行&a后面多了个分号
for循环得用大括号括起来,不然只运行一个语句