| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 611 人关注过本帖
标题:求解答,函数问题
只看楼主 加入收藏
瘸腿狼王
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-15
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:12 
求解答,函数问题
#include<stdio.h>
void ber(int level);
int num(int i,int j);
int number(int n);
void main()
{
    int level;
    printf("please intput you need know what's line yanghui number:\n");
    scanf("level",&level);
    printf("There number is:\n");
    ber(level);
}
void ber(int level)
{
    int row,col;
    for(row=0;row<level;row++)
    {
        for(col=0;col<=1;col++)
            printf("%6d",nu(row,col));
        printf("\n");
    }
int num(int i,int j)
{
    return number(n)/(number(k)*number(n-k));
}
int number(int n)
{
    int pro=1,i;
    for(i=1;i<=n;i++)
        pro*=i;
    return(pro);
}

出现了这样的错误
Compiling...
dome.cpp
C:\Documents and Settings\LZDX\桌面\dome.cpp(23) : error C2601: 'num' : local function definitions are illegal
C:\Documents and Settings\LZDX\桌面\dome.cpp(27) : error C2601: 'number' : local function definitions are illegal
C:\Documents and Settings\LZDX\桌面\dome.cpp(33) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.

dome.obj - 1 error(s), 0 warning(s)
搜索更多相关主题的帖子: void include please number 
2012-05-10 15:46
瘸腿狼王
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-15
收藏
得分:0 
        for(col=0;col<=1;col++)
            printf("%6d",num(row,col)); 着一句上面错了 我自改一下
2012-05-10 15:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
编译器信息告诉你number()函数定义非法,自己就该检查一下花括号的匹配。排版都看得到明显的缩进不对劲。

授人以渔,不授人以鱼。
2012-05-10 15:50
瘸腿狼王
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-15
收藏
得分:0 
       改了之后 为什么没结果呢
就是不输出数字
2012-05-10 16:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果不输出信息,就从main()函数开始逐行检查信息的输出。main()总共4行实际语句,先把后面3个注释掉,看第1个printf()有没有输出,然后整个减去注释,看到哪一个没有预期的输出,就检查那一个语句用到的函数,跟踪进入那个函数里面,用同样的方法检查。这就是函数分解的好处,也是调试的不二法门,必须掌握的。

其实,你写程序,也应该这样一行一行检查了写下来。编码的时候同时马上就进行调试,这是以前那些教人在纸上写代码然后上机输入的古老书籍不曾告诉你的正确做法。

[ 本帖最后由 TonyDeng 于 2012-5-10 16:11 编辑 ]

授人以渔,不授人以鱼。
2012-05-10 16:04
瘸腿狼王
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-15
收藏
得分:0 
谢谢呀 我试一下
2012-05-10 16:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
另外,你scanf()之后,最好检查一下level的值是不是自己输入的预期的值。

授人以渔,不授人以鱼。
2012-05-10 16:21
瘸腿狼王
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-15
收藏
得分:0 
#include<stdio.h>
void ber(int level);
int num(int i,int j);
int number(int n);
void main()
{
    int level;
    printf("please intput you need know what's line yanghui number:");
    scanf("%d",&level);
    printf("\nThere number is:\n");
    ber(level);
}
void ber(int level)
{
    int row,col;
    for(row=0;row<level;row++)
    {
    for(col=0;col<=row;col++)
        printf("%6d",num(row,col));
    printf("\n");
    }
    printf("\n");
}
int num(int n,int k)
{
    return number(n)/(number(k)*number(n-k));
}
int number(int n)
{
    int pro,i;
    pro=1;
    for(i=1;i<=n;i++)
        pro*=i;
    return(pro);
}
终于有结果了 谢谢了
2012-05-10 17:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
解决之后说说到底是什么问题嘛

授人以渔,不授人以鱼。
2012-05-10 17:27
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:5 
yanghui number。呵呵,兄弟你的英语该补补了。
另外你的程序还是有点小问题,你只能将杨辉三角计算到第12行,之后的结果会因为溢出而出错。稍加改动就可以扩大计算范围。

重剑无锋,大巧不工
2012-05-10 17:41
快速回复:求解答,函数问题
数据加载中...
 
   



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

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