首页 新闻 会员 周边

用这个程序输出水仙花数,但运行后没有结果,请大佬们帮我看一下。谢谢!

0
悬赏园豆:5 [待解决问题]

include<stdio.h>

void main()
{
int i[1001],j,k,m,q=0,count=0;
for(j=0;j<=1000;j++)
i[j]=j;
for(j=2;j<1000;j++)
{
m=j;
while(j!=0)
{
k=j%10;
j=j/10;
q=kkk+q;
}
if(q==m)
{count++;
printf("%5d",i[j]);
if(count%5==0)
printf("\n");}
}
}

轻松玩编程的主页 轻松玩编程 | 初学一级 | 园豆:189
提问于:2019-03-24 00:31
< >
分享
所有回答(2)
0

初始化没问题
下面的给你改下 从0开始判断水仙花数哈
你要是从其他数开始就改下
for(j=0;j<1000;j++){
m=j;
if(j<10)q=m;
if(j>=10&&j<100)q=(m%10)10+m/10;
}
if(j>=100)q=(m%10)
100+(m%100)*10+m/100;
if(q==m){count++;printf("%5d",m);if(count%5==0)printf("\n");}}注意:还有很大的简化空间!

Drake19 | 园豆:209 (菜鸟二级) | 2019-03-24 01:06
0

void main()
{
int i[1001],j,k,m,q=0,count=0;//数组声明开空间语法错误
for(j=0;j<=1000;j++) //给数组赋值有何意义
i[j]=j;
for(j=2;j<1000;j++)//用数组赋值和直接使用j有区别么
{
m=j;
while(j!=0)
{
k=j%10;
j=j/10;
q=kkk+q;
}
if(q==m)
{count++;
printf("%5d",i[j]);
if(count%5==0)
printf("\n");}
}
}

星空嘉的主页

一世红尘 | 园豆:321 (菜鸟二级) | 2019-03-25 12:21

按空格快了
void main()
{
int i[1001],j,k,m,q=0,count=0;//数组声明开空间语法错误
for(j=0;j<=1000;j++) //给数组赋值有何意义
i[j]=j;
for(j=2;j<1000;j++)//用数组赋值和直接使用j有区别么
{
m=j;
while(j!=0)//内循环多余有错直接在外循环内计算int a=i%10,b=i%100/10;c=i%100/100;
{ //判断输出if(i==aaa+bbb+ccc){System.out.println(i)}
k=j%10;
j=j/10;
q=kkk+q;
}
if(q==m)
{count++;
printf("%5d",i[j]);
if(count%5==0)
printf("\n");}
}
}

支持(0) 反对(0) 一世红尘 | 园豆:321 (菜鸟二级) | 2019-03-25 12:29

@一曲相思:非常感谢你的回复,首先需用数组输出水仙花数,所以给数组赋值,如果你有更好的方法还请你不吝赐教,然后内循环有错,请告知错在哪里,而非简单的换个算法,谢谢!

支持(0) 反对(0) 轻松玩编程 | 园豆:189 (初学一级) | 2019-03-25 13:12

@星空嘉: package com.test;

public class test {
public static void main(String[] args){
int i[]=new int[1001],j,k,m,q=0,count=0;
/for(j=0;j<=1000;j++)
i[j]=j;
/
for(j=2;j<1000;j++){
m=j;
q=0;
while(m>0){
k=m%10;
m=m/10;
q=kkk+q;
if(m==0){
if(q==j){
i[count]=j;
count++;
}
}
}

    }
    for(int li:i){
        System.out.println(li);
    }
    
}

}
建议用集合,数组后面一大串0看着都不好,名后你自己弄了个死循环,报错太多不说了我要休息会压压惊

支持(0) 反对(0) 一世红尘 | 园豆:321 (菜鸟二级) | 2019-03-25 14:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册