永发信息网

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

答案:5  悬赏:10  手机版
解决时间 2021-11-11 20:52
  • 提问者网友:感性作祟
  • 2021-11-11 00:00
C语言问题 ,提示 warning C4715: 'flower' : not all control paths return a value 求指导
最佳答案
  • 五星知识达人网友:長槍戰八方
  • 2021-11-11 00:46
你在函数的最外层再写一个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; //返回找到的水仙花数的个数
}
个人观点,返回找到的水仙花数的个数是一个比较好的做法。
找没找到通过输出就一目了然了,但是如果出现的水仙
花数非常多的,通过返回个数就能知道你一共找到了几个。
你可以把这个想法跟你老师交流一下。
全部回答
  • 1楼网友:街头电车
  • 2021-11-11 04:22
#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;
}
  • 2楼网友:鸽屿
  • 2021-11-11 03:33
#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饿。。
  • 3楼网友:西岸风
  • 2021-11-11 02:21
你这个函数由于有错误,因此在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;
}追问我擦。。。看懂了。。。。。我错了。。。。用的好悲催。。。。 谢谢。。
  • 4楼网友:十鸦
  • 2021-11-11 01:46
你的最后return 1; 0
这里出现的问题,所以有警告,追问谢谢。这个是什么问题呢?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯