贪吃蛇c语言代码水仙花数问题,我的代码不知问题在哪里?

C语言筛选水仙花数的问题
C语言筛选水仙花数的问题
#include&stdio.h&#include&math.h&int is(int N);//应该先对is函数定义,否则后面程序无法识别,还要记得打分号“;”
main()//为何要把void去掉呢????{&int m,n,number,N;&printf("please input m,n(m&n):");&scanf("%f%f",&m,&n);//先输入m,n值,确定值域。&&&&& if(n&1000 || m&1)&& {&&&&&& printf("Your word isn't right!Please input again.");&& }&&&&& else//值域确定之后,进入水仙花数判断阶段&& {&&&&&& for(number=m;number&=n;number++)//for语句中间是用分号,而不是逗号!,通过设置将所有水仙花数筛选出来(条件设置阶段)&&& { &&&& if(number=is(N))&&&&& printf("%f",number);//此处书写参考《解析C程序设计》159页习题5.4&&& }&& }&&& return 0;}
&&& int is(int N)//分段程序,用于专门筛选水仙花数&{&&int a,b,c;
&&a=N/100;//此次应该输入N,就可以构建起N与上一程序number的联系。如果直接输入number,会造成无法识别。&&b=N/10-a*10;&&c=N%10;&&if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)&&&return N;&&&&else&&{&&&&&&&&&&& printf("Sorry,the word is simple!");&&}&&return 0;
编程如上,但是系统无法运行,请问高手是怎么回事?
#include&stdio.h&#include&math.h&#include&stdlib.h&int is(int N);//应该先对is函数定义,否则后面程序无法识别,还要记得打分号“;”int main()//为何要把void去掉呢????{&int m,n,number,N;&printf("please input m,n(m&n):");&scanf("%d %d",&m,&n);//先输入m,n值,确定值域。&& & &if(n&=1000 && m&=1)&& {&& & & printf("Your word isn't right!Please input again.");&& }&& & &else//值域确定之后,进入水仙花数判断阶段&& {&& & & for(number=m;number&=n;number++)//for语句中间是用分号,而不是逗号!,通过设置将所有水仙花数筛选出来(条件设置阶段)&& &{&&& & {&& & & &&& & & & if(is(number))&& & & & &printf("%d &",number);//此处书写参考《解析C程序设计》159页习题5.4&& & }&& &}&& }&& system("pause");&& &return 0;}&&&& &int is(int N)//分段程序,用于专门筛选水仙花数&{&&int a,b,c;&&a=N/100;//此次应该输入N,就可以构建起N与上一程序number的联系。如果直接输入number,会造成无法识别。&&b=N/10-a*10;&&c=N%10;&&if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)&& {&& & & return 1;&& }&&&&else&&{&&&& & & & & &return 0;&&}&&&}
???,怎么看不懂呢?
#include&stdio.h&#include&math.h&#include&stdlib.h&int is(int N);//应该先对is函数定义,否则后面程序无法识别,还要记得打分号“;”int main()//为何要把void去掉呢????{&int m,n,number,N;&printf("please input m,n(m&n):");&scanf("%d %d",&m,&n);//先输入m,n值,确定。&& & &if(n&=1000 && m&=1)&& {&& & & printf("Your word isn't right!Please input again.");&& }&& & &else//值域确定之后,进入判断阶段&& {&& & & for(number=m;number&=n;number++)//for语句中间是用分号,而不是逗号!,通过设置将所有水仙花数筛选出来(条件设置阶段)&& &{&&& & {&& & & &&& & & & if(is(number))&& & & & &printf("%d &",number);//此处书写参考《解析C》159页习题5.4&& & }&& &}&& }&& system("pause");&& &return 0;}&&&& &int is(int N)//分段程序,用于专门筛选水仙花数&{&&int a,b,c;&&a=N/100;//此次应该输入N,就可以构建起N与上一程序number的联系。如果直接输入number,会造成无法识别。&&b=N/10-a*10;&&c=N%10;&&if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)&& {&& & & return 1;&& }&&&&else&&{&&&& & & & & &return 0;&&}&&&}上面的没发好!
qq多少 ? 直给你
提问者 的感言:前段时间太忙,没来得及回应你,太感谢你了!
等待您来回答
软件领域专家新手问个关于水仙花数的问题_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:257,086贴子:
新手问个关于水仙花数的问题收藏
貌似很简单,不过找了好久都没发现我错在哪里描述输入一个三位数n,输出所有小于等于n的水仙花数。输入输入一个三位数n输出输出所有小于等于n的水仙花数。每行一个符合条件的水仙花数提示若3位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花数。例如153就是水仙花数。153=1×1×1+5×5×5+3×3×3
我的代码如下#include &stdio.h&#include &stdlib.h&int main(){
int n,a,b,c;
int k=100;
scanf("%d", &n);
while(k&=n)
if(k==a*a*a+b*b*b+c*c*c)
printf("%d", n);
system("pause");
运行之后输入500会输出三个500即“”这明显不是我想要的
a=k/100;b=k/10%10;c=k%10;if(k==a*a*a+b*b*b+c*c*c)printf("%d ", k);
我发现了自己的一个问题,printf里面应该输出k但还是不对啊#include &stdio.h&#include &stdlib.h&int main(){
int n,a,b,c;
int k=100;
scanf("%d", &n);
while(k&=n)
if(k==a*a*a+b*b*b+c*c*c)
printf("%d", k);
system("pause");
我发现弱弱的我又错了现在程序已经能够做到求出水仙花数了但是我想问一下题目中要求每个数一行的情况怎么实现?#include &stdio.h&#include &stdlib.h&int main(){
int n,a,b,c;
int k=100;
scanf("%d", &n);
while(k&=n)
b=k/10%10;
if(k==a*a*a+b*b*b+c*c*c)
printf("%d", k);
system("pause");
k=100是干嘛的? *************单相思有时候比两厢情愿更让人羡慕!!!
请问下怎实现输出的数据换行啊
谢谢诸位了最终成功了代码如下#include &stdio.h&#include &stdlib.h&int main(){
int n,a,b,c;
int k=100;
scanf("%d", &n);
while(k&=n)
b=k/10%10;
if(k==a*a*a+b*b*b+c*c*c)
printf("%d", k);
printf("\n");
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或c语言 水仙花数 我哪里错了?_百度知道
c语言 水仙花数 我哪里错了?
,要求输出所有在给定范围内的水仙花数。,则输出no。输入输入数据有多组;=m& 每个测试实例的输出占一行,每组占一行,它的各位数字的立方和等于其本身;=n&lt,比如,数学上有个水仙花数,就是说。 现在要求输出所有在m和n范围内的水仙花数,则要求从小到大排列在一行内输出。。示例输入100 120300 380示例输出no370 371
为什么我的答案是 no370 371 no
多一个no。,并且小于等于n,输出的水仙花数必须大于等于m,包括两个整数m和n(100&=999)。,是这样定义的,如果有多个: “水仙花数”是指一个三位数; 如果给定的范围内不存在水仙花数,之间用一个空格隔开,水仙花就是其中最迷人的代表。输出对于每个测试实例:153=13+53+33题目描述春天是鲜花的季节
; while(scanf(&quot,a;c=i%10,&n),t;i++)
{a=i/=n,s=0 ;void main(){ int m.h&no\
for(i=m,b,n;%d &m=n;10%10;
if(i==a*a*a+b*b*b+c*c*c)
printf(&quot,i,i);%d %d&100,c;),&m;
else s=1;n)
t=m;i&lt#include&b=i&#47!=EOF) {if(m&
printf(&n=t;n&
提问者采纳
s=0;;%d %d&no\stdio!=EOF) {if(m&gt,里面每次for结束还有置0#include&=n,n,b;void main(){ int m,i),&m,s=0 ;c=i%10;100; while(scanf(&
printf(&10%10;i++)
s=1;%d &quot,t;n)
t=m;i&m=n,i;
if(i==a*a*a+b*b*b+c*c*c)
printf(&quot,c;b=i/n&),&n).h&
for(i=m;n=ts是有没有的标志位
提问者评价
其他类似问题
4人觉得有用
水仙花数的相关知识
其他4条回答
我估计no是放错循环语句的括号了~把代码放上来看看啊
很明显·····s在最后没有被重新置为零·····所以经过一次判断后值一直为 1
当然会输出no最后在输出no以后记得把s重新置0,就是赋0值给S
#include&stdio.h&void main(){ int m,n,t,i,a,b,c,s=0 ; while(scanf(&%d %d&,&m,&n)!=EOF) {if(m&n)
t=m;m=n;n=t;
for(i=m;i&=n;i++)
s=0; //这里!这里!这里!这里!这里!这里每次开始一个新的数的判断前,需要将S置为0,用以取消上一个数判断后的影响
a=i/100;b=i/10%10;c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
printf(&%d &,i);
printf(&no\n&);
记得把 s 置 0.。。。
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言程序 判断水仙花数,在学校编译平台上提示编译错误_百度知道
C语言程序 判断水仙花数,在学校编译平台上提示编译错误
#include&stdio.h&int main(){
int a[100],b[100],c[100],n[100],i,j; for(i=0;i&100;i++) {
scanf(&%d&,&n[i]);
if(n[i]==0)
a[i]=n[i]/100;
b[i]=(n[i]/10)%10;
c[i]=n[i]%10; }
for(j=0;j&i;j++) {
if(n[j]==a[j]*a[j]*a[j]+b[j]*b[j]*b[j]+c[j]*c[j]*c[j])
printf(&YES\n&);
printf(&NO\n&);} return 0;}所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。根据题意判断一个数是否为“水仙花”数。
提问者采纳
首先要吐槽一下,谭老师的《C语言》书太多错误了,153 = 13 + 53 + 33 很明显是错误的,应该是153 = 1*1*1 + 5*5*5 + 3*3*3.回归正题:&&&&&&&&你的程序在我的电脑里编译没有错,能正常运行。但是,我很疑惑你这个程序的功能。它实现的是:连续输入100个三位数后,程序就会输出YES或NO,共100个。这样子,就要连续输入100个数,麻烦就不说了,输出结果也不清晰,因为输出结果与输入没有明显的对应关系。你必须根据100个数的顺序找到输出结果中的YES或NO, 就是要自己一个个地数数。比如说,当你输入第45个数是183,那么你就要从输出结果数到第45个,看它是YES还是NO,才能确定183是否为水仙花数。我认为,关于水仙花数,只有两个有实际意义的程序:输入一个三位数, 判断它是否为水仙花数;输出所有的水仙花数。以上两个程序都不需要用到数组,变量用int n, a, b, c, 就已经足够了, 再使用循环语句和判断语句就能实现了。所以,你的这个程序用了4个长度为100的整型数组纯粹是浪费内存。而且,程序实现的功能很不明确。
谢谢了,我之前把题理解错了,现在弄明白了
不客气,嘻嘻。。
提问者评价
其他类似问题
水仙花数的相关知识
按默认排序
其他1条回答
第二个循环for(j=0;j&i;j++)改成for(j=0;j&i-1;j++)试试
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 水仙花数c语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信