MWY20140906 发表于 2017-10-31 12:19:33

排列计算


#include <stdio.h>
void main()
{
        int n,m,v,t=1,a=1,b,c,f,e;
        printf("排列计算程序\n");
        printf("请输入上标和下标:\n");
        scanf("%d\n,%d\n",&n,&m);
        if(m<n)
        {
                c=n;
                for(b=1;b<=c;b++)
                {
                        t=t*b;
                }
                printf("结果为:%d\n",t);
                f=m;
                for(e=f;e<=f && e>0;e--)
                {
                        a=a*e;
                }
                printf("结果为:%d\n",a);
                v=t/a;
                printf("结果为:%d\n",v);
        }
        else
                printf("输入错误,请重新输入");
}
求助大神,不懂为什么红色那一段为什么会算得1啊?
大神万岁   大神最帅{:10_254:} 谢谢了

BngThea 发表于 2017-10-31 12:48:46

用scanf输入的时候尽量不要用逗号,很容易在实际输入的时候将m的值传成你想要的%d的值
直接这样写
scanf("%d\n%d\n",&n,&m);

MWY20140906 发表于 2017-10-31 16:32:15

这个我以后尽量避免,但是红色那一段不懂它怎么算都是等于1,不太懂,大神能否解释一下呢{:10_254:}

fwinmachao 发表于 2017-10-31 17:29:32

                f=m;
printf("m=%d",m);
                for(e=f;e<=f && e>0;e--)
                {
                        a=a*e;
                }
                printf("结果为:%d\n",a);


----打印出m的值,发现一直都是0, 应该是scanf的时候没传进去。e=m; for语句没有执行(e>0不成立)。

MWY20140906 发表于 2017-11-1 10:38:46

fwinmachao 发表于 2017-10-31 17:29
f=m;
printf("m=%d",m);
                for(e=f;e0;e--)


#include <stdio.h>
void main()
{
      int n,m,v,t=1,a=1,b,c,f,e;
      printf("排列计算程序\n");
      printf("请输入下标:\n");
      scanf("%d",&n);
      printf("请输入上标:\n");
                scanf("%d",&m);
                if(m<n)
      {
                c=n;
                for(b=1;b<=c;b++)
                {
                        t=t*b;
                }
                f=m;
                for(e=f;e<=f && e>0;e--)
                {
                        a=a*e;
                }
                v=t/a;
                printf("结果为:%d\n",v);
      }
      else
                printf("输入错误,请重新输入\n");
}
改了哦    这是正确答案
页: [1]
查看完整版本: 排列计算