mse9591 发表于 2015-7-6 23:25:10

新人报道!偶是带着问题来的,今天看小甲鱼从0学C视频。关于有个阶乘的习题中的问题

无基础,刚刚开始学C
再看视频过程中跟着练习 !有个阶乘的习题自己试着写了下。但是一直未能得出正确的答案。摸索了好一会……
代码奉上……望指点!!

题目:计算s = 2^2! + 3^2!

#include <stdio.h>

int pingfang(int a);               //声明平方函数pingfan()
int jiecheng(int b);               //声明阶乘函数jiecheng()

void main()
{
        int x = 2, y = 3, s;

        s = jiecheng( pingfang(x) ) + jiecheng( pingfang(y) );

        printf("s = 2^2! + 3^2!中s的值为:%d\n",s);
}


int pingfang(int a )         //定义平方函数pingfan()
{
    int z;
        z = a * a;
        return z;
}

int jiecheng(int b)          //定义阶乘函数jiecheng()
{
        int x = b;
        for (b=b-1; b>0; b--)         //出问题的地方在这里   原本写的是for (b; b>0; b--)后改为for (b-1; b>0; b--)   最后才写的现在的
                x *= b;
        return x;
}

我想不明白为什么b-1不行呢……有能讲解下的么

nin98 发表于 2015-7-6 23:40:22

你的判断条件是b 你初始化b-1或者减去任何数对b来说是不会有任何影响的
本身函数接受了参数b的值时for的初始化已经完成 b-1是没有任何意义的

mse9591 发表于 2015-7-6 23:46:33

nin98 发表于 2015-7-6 23:40
你的判断条件是b 你初始化b-1或者减去任何数对b来说是不会有任何影响的
本身函数接受了参数b的值时for的初 ...

哦似乎有点懂了!意思就是这个表达式没有完成赋值,只是一个无用表达式呗

mse9591 发表于 2015-7-6 23:47:24

nin98 发表于 2015-7-6 23:40
你的判断条件是b 你初始化b-1或者减去任何数对b来说是不会有任何影响的
本身函数接受了参数b的值时for的初 ...

额!
突然明白了!忘记说谢谢了
现在给补上
谢谢哈!!:lol:

nin98 发表于 2015-7-7 00:01:25

mse9591 发表于 2015-7-6 23:47
额!
突然明白了!忘记说谢谢了
现在给补上


额,你不要是跑去会我的贴了,我都没想到要那么做,能得到结果,看完这程序。瞬间懂了
谢谢了哈
页: [1]
查看完整版本: 新人报道!偶是带着问题来的,今天看小甲鱼从0学C视频。关于有个阶乘的习题中的问题