搜索
查看: 2053|回复: 19
打印 上一主题 下一主题

n的乘积(啊哈c的课后题),我不知道我哪里错了,都不显示。

[复制链接]
跳转到指定楼层
楼主
发表于 2016-12-5 22:19:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
本帖最后由 boyving_j298P 于 2016-12-7 10:08 编辑

#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,i;
    i=i;//定义i从1开始
    scanf("%d",&a);//输入一个整数
    while(i<=a)//循环次数等于a
    {
  a=a*i;
    }
    i=i+1;
    printf("这个整数的阶乘是\n%d",a);
system("pause");
return 0;
}

代码如上面所示。。。

正确代码在12楼。。。

最佳答案

查看完整内容

#include #include int main() { int a,i,b; i=1;//定义i从1开始 b=1; scanf("%d",&a);//输入一个整数 while(i
沙发
发表于 2016-12-5 22:19:40 | 只看该作者
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a,i,b;
    i=1;//定义i从1开始
    b=1;
    scanf("%d",&a);//输入一个整数
    while(i<=a)//循环次数等于a
    {
                b=b*i;
       i=i+1;
    }
     printf("这个整数的阶乘是\n%d",b);
   
        system("pause");
        return 0;
}
那这样写,就可以了
板凳
发表于 2016-12-6 01:22:12 | 只看该作者
i的定义搞错了,应该是i=1
地板
 楼主| 发表于 2016-12-6 09:19:20 | 只看该作者
zhuzhu81998 发表于 2016-12-6 01:22
i的定义搞错了,应该是i=1

好像不对,上面代码定义也许是我手抖把1写成了i,但是改了也不行。

#include <stdio.h>
#include <stdlib.h>
int main()
{
        int        a,i;
    i=1;
    scanf("%d",&a);
    while(i<=a)
    {
                a=a*i;
    }
    i=i+1;
    printf("这个数阶乘是\n%d\n",a);
        system("pause");
        return 0;
}
5#
发表于 2016-12-6 18:33:14 | 只看该作者
本帖最后由 文三金 于 2016-12-6 18:42 编辑

楼主,在i=1的情况下,a不能大于或等于1.因为a>1,while的条件就不成立。(奇怪,a>1的话printf应该输出啊)a=1,while就会进入无限循环。希望能对楼主有些帮助。
6#
发表于 2016-12-6 21:36:10 | 只看该作者
本帖最后由 学校的阶梯 于 2016-12-6 21:37 编辑

i=1,i<a,
i=i+1要写在大括号内
7#
发表于 2016-12-6 21:55:15 | 只看该作者
i没有变化,一直是1(在循环的时候),一直小于a所以。。。死循环了。。i=i+1在循环之后
8#
发表于 2016-12-6 22:08:03 | 只看该作者
不是a=a*i;这样的话,比如a=3;那么步骤就是a=3*1;a=3*2;a=6*3;结果就是错的,3的阶乘是1*2*3=6
9#
 楼主| 发表于 2016-12-7 09:55:07 | 只看该作者
文三金 发表于 2016-12-6 18:33
楼主,在i=1的情况下,a不能大于或等于1.因为a>1,while的条件就不成立。(奇怪,a>1的话printf应该输出啊 ...

哈哈,这题这个n的值不会等于1,只会大于1的整数。。。我昨天已经搞定了,但是问题不是在这里的。等下我把代码贴出来。
10#
 楼主| 发表于 2016-12-7 09:56:20 | 只看该作者

说得有道理,只是这样也解决不了根本问题。i=i+1确实应该在括号里面,不然就成了死循环了。
11#
 楼主| 发表于 2016-12-7 09:56:54 | 只看该作者
zhuzhu81998 发表于 2016-12-6 21:55
i没有变化,一直是1(在循环的时候),一直小于a所以。。。死循环了。。i=i+1在循环之后

这样也解决不了根本的问题所在的。根本原因不是错在这里的。
12#
 楼主| 发表于 2016-12-7 10:04:36 | 只看该作者
丘小熔 发表于 2016-12-6 22:08
不是a=a*i;这样的话,比如a=3;那么步骤就是a=3*1;a=3*2;a=6*3;结果就是错的,3的阶乘是1*2*3=6

不对,你这里理解有问题。a=a*i没问题。。。如果a=3,那么这里只能表示循环了3次,就等于了1*1*2*3=6。
13#
 楼主| 发表于 2016-12-7 10:07:32 | 只看该作者
这里贴上正确代码吧。再加一个变量,让输入的a到b去,然后把b拿去跟i比较。至于楼下朋友说的i=i+1应该写到括号里面是对的,那是糊涂没有写进去,不写进去就成了死循环了。呵呵。还有眼尖的朋友看见赋值写错了,i=i去了,这个手误呀。哈哈!!!谢谢大家,正确代码就是下面了。

#include <stdio.h>
#include <stdlib.h>
int main()
{
        int        a,b,i;
    i=1;
    scanf("%d",&a);
    b=a;
    while(i<b)
    {
                a=a*i;
        i=i+1;
    }
    printf("这个数的阶乘是\n%d\n",a);
        system("pause");
        return 0;
}
14#
发表于 2016-12-7 12:26:39 | 只看该作者
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int        a,d,b,i;
    i=1;
    d=1;
    scanf("%d",&a);
    b=1;
    while(b<=a)
    {
          i=i*d;
          d=d+1;
          b=b+1;
    }
    printf("这个数的阶乘是\n%d\n",i);
        system("pause");
        return 0;
}
这也可以吧
15#
 楼主| 发表于 2016-12-7 15:35:08 | 只看该作者
丘小熔 发表于 2016-12-7 12:26
#include
#include
int main()

你这个代码第一眼看上去,没有我上面代码简洁。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表