| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 542 人关注过本帖
标题:有关自定义函数问题,求教~
只看楼主 加入收藏
初学者向隅
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2014-3-6
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:3 
有关自定义函数问题,求教~
求三位数的水仙花数,用自定义函数求解
这是我的代码:
#include<stdio.h>
void main()
{
int i;
int fun(int a);
fun(i);
printf("%d\n",fun(i));
}
int fun(int a)
{
   int j,k,l;
   for(a=100;a<1000;a++)
   {
     j=a/100;
     k=a%100/10;
     l=a%10;
     if(a==j*j*j+k*k*k+l*l*l)
    return a;   
   }
 
}

为何只能输出一个数(153),是哪里有问题吗????求大神解答~
搜索更多相关主题的帖子: 水仙花 
2014-06-10 16:58
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:3 
程序代码:
#include<stdio.h>
void main()
{
int i;
int fun(int a);
fun(i);
printf("%d\n",fun(i));   //printf()只有一个参数接收fun()的返回值, 因此只能输出一个数字.
}
int fun(int a)          //这里fun()在执行的时候是返回多个值的, 1000内的4个水仙花数都能够求出. 但是,返回上面的printf()函数再看.              
{
   int j,k,l;
   for(a=100;a<1000;a++)
   {
     j=a/100;
     k=a%100/10;
     l=a%10;
     if(a==j*j*j+k*k*k+l*l*l)
    return a;                 
   }
}

一开始我也蒙圈了,自己写了个不调用自定义函数的,然后又对比你的代码,还是蒙圈, 单独测试fun()函数,发现没问题,  然后才想到printf()的问题.  

关于printf()函数, 可以查看版主TonyDeng的相关帖子, 你会学到很多东西的.

附一份我自己对你的代码的改动版, 请指教:
程序代码:
#include "stdio.h"
int main()
{
    int m;
    int fun(int a);  
    for(m=100;m<1000;m++)
    {
        fun(m);
    } 
   return 0;
}

    int fun(int a){ 
        int i,j,k,l;      
        j=a/100;
        k=a%100/10;
        l=a%10;
        if(j*j*j+k*k*k+l*l*l==a)
        printf("%d\n",a);    
    }


[ 本帖最后由 vvvcuu 于 2014-6-11 00:31 编辑 ]

代码测试环境:  WinXP+C-Free5.0.
2014-06-10 18:43
s4896340
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2014-6-10
收藏
得分:3 
回复 2 楼 vvvcuu
在吗
2014-06-10 22:15
初学者向隅
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2014-3-6
收藏
得分:0 
回复 2 楼 vvvcuu
谢谢你的解答,关于你的答案我在c++6.0里运行运行不了,它有一些问题;我改了一下我原来的程序,可以成功运行。
修改后的程序:
#include<stdio.h>
void main()
{
    int i;
    int fun(int a);
    fun(i);
}
int fun(int a)
{
    int j,k,l;
    for(a=100;a<1000;a++)
    {
      j=a/100;
      k=a%100/10;
      l=a%10;
      if(a==j*j*j+k*k*k+l*l*l)
          printf("%d\n",a);
    }
}
因为在被调用函数里用到for循环,printf放在主函数a只能调用最前面的那个数字,所以printf要放在被调用函数里面。
2014-06-10 22:54
快速回复:有关自定义函数问题,求教~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017431 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved