回 帖 发 新 帖 刷新版面

主题:静态外部变量问题

这个程序编译连接都没出错但为什么得不到正确的结果呢,代码如下:
#include<stdio.h>
#include<stdlib.h>
int Factorial(int);
static int count;
int main()
{
    int number,answer;
    printf("请输入数值求阶乘");
    scanf("%d\n",&number);
    
    
    answer=Factorial(answer);
    printf("%d!=%d",number,answer);
    printf("count=%d\n",count);
    system("pause");
    return 0;
}
int Factorial(int number)
{
    int i;
    count=1;
    for(i=1;i<=number;i++);
     {
       
       count=count*i;
       return count;}
       
       
}
若输入5后
编译后无法显示得到的阶乘结果
正确的结果是:
请输入数值求阶乘:5;
5!=120
count=120;

回复列表 (共4个回复)

沙发


肯定会出错的,因为不能将return count;放在for循环里面。

板凳

#include<stdio.h>
#include<stdlib.h>

int Factorial(int number);
static int count;

int main()
{
    int number,answer;
    printf("请输入数值求阶乘:");
    scanf("%d",&number);

    answer=Factorial(number);
    
    printf("%d!=%d\n",number,answer);
    printf("count=%d\n",count);
    
    system("pause");
    return 0;
}

int Factorial(int number)
{
    int i;
    count=1;
    for(i=1; i<=number; i++);
    {

        count=count*i;
    }
    
    return count;
}

3 楼


刚在网上查了return语句的功能,若把return语句放在for循环里的话,那么for循环就不能全部循环,是不是就循环一次就跳出来了,程序到此为止了

4 楼

return语句就会让当前函数全部停止运行了,相当于退出了当前函数。

我来回复

您尚未登录,请登录后再回复。点此登录或注册