永发信息网

C语言问题 ,提示 warning C4715: 'flower' : not all control paths return a value 求指导

答案:5  悬赏:10  手机版
解决时间 2021-11-11 20:52
C语言问题 ,提示 warning C4715: 'flower' : not all control paths return a value 求指导
最佳答案
你在函数的最外层再写一个return 0; //就不会警告了,而且对程序也不会用影响
估计编译器比较笨,理解不了你的意图。追问确实是没警告了。谢谢 。但是我的程序运行起来还是有问题 就是不能输出三位数数的水仙花数。以运行就是PRESS ANY KEY TO CONTINUE。。请问高手这是咋回事?能帮我看看么。。。我是新手。。追答这个我就帮不了你了,你还是对照算法好好检查一下程序的逻辑对不对吧。追问我才学函数、。。。。。。看了半天看不出来了才来问。。。追答#include
void main()
{
int m;
int flower(int n);
for(m=100;m<1000;m++)
{
if (flower(m))
printf("%d\n",m);
}
}

int flower(int n)
{
int i,j,k;
i = n/100; //得到百位数
j = n%100/10; //得到十位数
k = n%10; //得到个位数
if( n == (i*i*i+j*j*j+k*k*k))
return 1;
else
return 0;
}
恩,那就帮你写一下。追问。。。饿谢谢 但是我的为神马不行呢。。。。 这个我同学都是写的你这样的。追答等一下哈,我帮你仔细看看哈。
改好了,你的逻辑真不是一般人啊。
不过这种写法一点也不好,效率太低
也不符合正常逻辑。
#include
void main()
{
int m = 0;
void flower(int n);
flower(m);
}

void flower(int n)
{
int i,j,k;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
{
n=i*100+j*10+k;
if(n==((i*i*i)+(j*j*j)+(k*k*k)))
printf("%d\n",n);
}
}追问我同学也这么说。。。。但是我想试试不用正常方法写。。。。虽然很不好意思再问了。。。但是我们的题目是要用RETURN。。。2. 定义一个函数int flower(int n),其功能是;检验一个三位的正整数n是否是水仙花数,如果是,则返回1;否则返回0。在main函数中调用flower函数,找出所有的水仙花数并输出。追答思维独特是很好的,不过也要注重程序的效率和可读性。
#include
int flower(int n); //函数声明放外面
void main()
{
int m = 0;
int counter = 0; //记录水仙花数的个数
printf("%d\n",counter=flower(m));
}

int flower(int n)
{
int i,j,k;
int count = 0;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
{
n=i*100+j*10+k;
if(n==((i*i*i)+(j*j*j)+(k*k*k)))
{
printf("%d\n",n);
count++;
}
}
return count; //返回找到的水仙花数的个数
}
个人观点,返回找到的水仙花数的个数是一个比较好的做法。
找没找到通过输出就一目了然了,但是如果出现的水仙
花数非常多的,通过返回个数就能知道你一共找到了几个。
你可以把这个想法跟你老师交流一下。
全部回答
#include
void main()
{
int m;
int flower(int n);
for(m=100;m<1000;m++)
{
if (flower(m)==1)
printf("%d\n",m);

}
}
int flower(int n)
{
int i,j,k;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
{
n=i*100+j*10+k;
if(n==((i*i*i)+(j*j*j)+(k*k*k)))
{
return 1;
}
}
return 0;
}追问如果这样的话就会输出701到999的所有的数。我是想输出三位数的水仙花数。我的程序还有什么问题。能指点下么。谢谢追答#include
void main()
{
int m;
int flower(int n);
for(m=100;m<1000;m++)
{
if (flower(m)==1)
printf("%d\n",m);

}
}
int flower(int n)
{
int i,j,k;
i=n/100;
j=n/10%10;
k=n%10;
if(n==((i*i*i)+(j*j*j)+(k*k*k)))
{
return 1;
}
return 0;
}
#include

void main()
{
int m;
int flower(int n);
for(m=100;m<1000;m++)
{ if (flower(m)==1)
printf("%d\n",m);
}

}
int flower(int n)
{
int i=n/100,j=(n/10)%10,k=n%10;
if(n==((i*i*i)+(j*j*j)+(k*k*k)))return 1;
else return 0;
}
不知道是不是这个意思,可以运行,开始的问题是你传入了一个m给flower,但是在这个子函数中的循环里又改变了m(就是给n赋了值),所以才会说没有有效的返回值。追问子函数是FLOWER那个么?。。我没在这个函数里写到M饿。。
你这个函数由于有错误,因此在for循环里有很多满足条件,所以有很多返回值,而一个函数只需要一个返回值,因此有警告,我把你的程序改了,也没有警告了!!
#include
int flower(int n);
void main()
{
int m;
int flower(int n);
for(m=100;m<1000;m++)
{ if (flower(m)==1)
printf("%d\n",m);

}
}
int flower(int n)
{
int i,j,k,flag=0;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
{
if(n==i*100+j*10+k)
{
if(n==((i*i*i)+(j*j*j)+(k*k*k)))
{flag++;
}
}
else
continue;
}
if(flag>0)
return 1;
else
return 0;
}追问我擦。。。看懂了。。。。。我错了。。。。用的好悲催。。。。 谢谢。。
你的最后return 1; 0
这里出现的问题,所以有警告,追问谢谢。这个是什么问题呢?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
带“怨”字的诗句
人问个前端的问题人工智能会把人力资源代替吗
关于叠衣服的好词好句
请教海杆钓大头,该钓半水多深?
我是做高低压配电搞结构的想学电气怎么学呀?
天津新东方学校(创智中心西)地址有知道的么?
一港币等于多少毫港币?
有谁会操作amos软件吗
老郭包装器材地址在什么地方,想过去办事,
欲益反损的成语诉洋河成语释义。
64*111+999*4怎样简便算
彼此陌生人是什么意思?
各位大神,20到30万之间,有没有什么好的车推
我阴历95年10月份的,我周岁多少?虚岁多少?
顺产后怎么瘦肚子快 8个小妙招让你3天肚子平
推荐资讯
三峡的春天和虎丘的春天,各自的特点是什么。
GPI电子顽皮小怪兽经验心得?
我在女子监狱当管教
大乔和谁是一对 王者荣耀
镁块和水反应有危险吗 ( 热水和冷水) 我
浙江省台州市玉环县清港镇有哪些公司
谁能介绍几个ppr热熔管品牌?
2014年10月12日11点21分出生的生辰八字
你们说做混混有出息吗???
川普上台,事情起了什么样的变化
用什么特效p的图
诸暨东白湖殿南村会拆迁吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?