欣欣celin 发表于 2014-3-18 23:13:56

求何些代码运行不了呢??

//加料版:实现让用户输入0< x <10以内的数,求1 ~ x^y的阶乘和^^
#include "stdio.h"
double power(double a, double b);   //求a^b
long fatorial(int q);               //阶乘函数
void main()
{
    int x, y, s, i;               //x,y待输入,S是阶乘结果,I是循环次数
    printf("input x(<=10) & y(<=5) : \n");
    scanf("%d,%d", &x, &y);
    while( scanf("%d",&x) != 1 )    //排除数值以外的输入
    {
      printf("illegal input!!\npls input again!!\n");
      getchar();
    }
    for(i=1; i<=x; i++)             //进入求S的循环
    {
      s = s + power(i,y);         //调用POWER函数
    }
    printf("%ld\n", s);
}
double power(double a, double b)    //定义幂运算函数
{
    double z, r;         
    int c;
    z = a;
    for(c=1; c<b; c++)
    {
      z *= a;
      r = factorial(z);         //调用阶乘函数
    }
    return r;
}
long factorial(int q)               //定义阶乘函数
{
    long v = 1;
    int j;
    for( j=1; j<=q; j++)
    {
      v *= j;
    }
    return v;
}

machimilk 发表于 2014-3-18 23:13:57

欣欣celin 发表于 2014-3-19 23:04 static/image/common/back.gif
感谢回复
貌似结果有出入哦,
当输入,2^3,结果正确=40321


给你改了一下,你算不对 是因为超范围了
double power(double a, double b);   //求a^b
            
double factorial(double q);//阶乘函数
int main()
{
        int x, y,i;               //x,y待输入,S是阶乘结果,I是循环次数
        double s=0;
        printf("input x(<=10) & y(<=5) : \n");
        scanf("%d,%d", &x, &y);
       
                s = power(x,y);         //调用POWER函数
                s=factorial(s);
       
        printf("%lf\n", s);
        system("pause");
        return 0;
}
double power(double a, double b)    //定义幂运算函数
{
        double z, r;         
        double c;
        z = a;
        for(c=1; c<b; c++)
        {
                z *= a;
        }
        return z;
}
double factorial(double q)               //定义阶乘函数
{
        double v = 1;
        int j;
        for( j=1; j<=q; j++)
        {
                v *= j;
        }
        return v;
}

欣欣celin 发表于 2014-3-18 23:17:09

补充,这是0基础C语言第36讲那个例题的延伸版,编译无报错,但运行时老出不来结果,调试也没找到原因,求各位大神赐教{:7_166:}

超级忍者龟 发表于 2014-3-19 09:11:15

#include "stdio.h"
long factorial(int q)               //定义阶乘函数
{
    long v = 1;
    int j;
    for( j=1; j<=q; j++)
    {
      v *= j;
    }
    return v;
}
double power(double a, double b)    //定义幂运算函数
{
    double z, r;         
    int c;
    z = a;
    for(c=1; c<b; c++)
    {
      z *= a;
      r = factorial(z);         //调用阶乘函数
    }
    return r;
}
void main()
{
    int x, y, s = 0, i;               //x,y待输入,S是阶乘结果,I是循环次数
AG:
    printf("input x(<=10) & y(<=5) : \n");
    scanf("%d,%d", &x, &y);
        if (x == 1)
    {
      printf("illegal input!!\npls input again!!\n");
                goto AG;       
    }
    for(i=1; i<=x; i++)             //进入求S的循环
    {
      s = s + power(i,y);         //调用POWER函数
    }
    printf("%ld\n", s);
}
是要这样的结果吗?你的阶乘和power函数功能我没改,只是修改了main里面的逻辑!

欣欣celin 发表于 2014-3-19 23:04:38

超级忍者龟 发表于 2014-3-19 09:11 static/image/common/back.gif
#include "stdio.h"
long factorial(int q)               //定义阶乘函数
{


感谢回复{:7_174:}
貌似结果有出入哦,
当输入,2^3,结果正确=40321

但输入2^4,却输出错的结果2004189185 ?
正确应=20922789888001{:7_166:}

另外,为何要修改了main里面的逻辑才能运行呢?不明白,
大神能详解一下吗?

{:7_154:}期待-ing

超级忍者龟 发表于 2014-3-20 09:07:51

欣欣celin 发表于 2014-3-19 23:04 static/image/common/back.gif
感谢回复
貌似结果有出入哦,
当输入,2^3,结果正确=40321


那你要检查你的2个函数算法是不是正确!

欣欣celin 发表于 2014-3-20 22:18:34

machimilk 发表于 2014-3-18 23:13 static/image/common/back.gif
给你改了一下,你算不对 是因为超范围了
double power(double a, double b);   //求a^b
            


BINGO{:7_169:}
原来如此,又学到了,谢谢,谢谢{:7_174:}

欣欣celin 发表于 2014-3-20 22:20:29

超级忍者龟 发表于 2014-3-20 09:07 static/image/common/back.gif
那你要检查你的2个函数算法是不是正确!

谢谢,问题搞掂了{:7_168:}
页: [1]
查看完整版本: 求何些代码运行不了呢??