求C语言用调用函数求三位数的水仙花数,尽量简单易懂,最好有解释,我主要是想要理解怎么使用调用函数
发布网友
发布时间:2022-07-12 11:23
我来回答
共2个回答
热心网友
时间:2023-10-17 19:40
本程序已在Visual Studio 2008调试通过
#include "stdio.h"
int fun(int a[])//子函数中查找100~999之间的水仙花数
{int m,x,y,z,i=0;
for(m=100;m<999;m++)
{x=m%10;//分解出个位数
y=(m-x)/10%10;//分解出十位数
z=m/100;//分解出百位数
if(x*x*x+y*y*y+z*z*z==m)//判断每位数的立方的和是否与原数相等
{a[i]=m;i++;}}//若相等则存入数组
return(i);//返回数组中水仙花数的个数以方便在主函数中输出
}
void main()
{int fun(int a[]);//子函数先定义后使用
int a[20],i,k;
k=fun(a);//调用子函数,注意本题中传递的是整个数组,所以子函数和主函数共用一个数组,系统分配的是同一片区域,双向传递
for(i=0;i<k;i++)//循环输出
printf("%d=%d^3+%d^3+%d^3\n",a[i],a[i]/100,a[i]/10%10,a[i]%10);
}//输出结果为 153=1^3+5^3+3^3 370=3^3+7^3+0^3 371=3^3+7^3+1^3 407=4^3+0^3+7^3
你看一下如果还有什么问题再问我
热心网友
时间:2023-10-17 19:41
#include <stdio.h>//2014年4月12日18:08:49
int q(int a,int b,int c,int o)
{
if(a*a*a+b*b*b+c*c*c==o)
{
return 1;
}
else
return 0;
}
void o(int y)
{
int x,a[3]={0},m,l;
l=y;
for(x=0;x<3;x++)//此处代码是算法:将这个三位数的值(用求余的方法)得到倒置的数 -- a[0],a[1],a[2]就是这个三位数打散后的倒置数列。
{
a[x]=y%10;
y=y/10;
}
m=q(a[0],a[1],a[2],l);
if(m)
{
printf("%-5d",l);
}
}
void main(void)
{
int e;
printf("\n水仙花数有:");
for(e=100;e<=999;e++)
{
o(e);
}
printf("\n\n");
system("pause");
}
以前写的一个程序,有问题的话再问我……