C语言关于函数的调用


#include<stdio.h>
void input(int *p) {
    int a[5],i;
    p=a;
    for(i=0; i<5; i++)
        scanf("%d ",&a[i]);
}//输入 
double fact(int n) {
    double sum=1;
    int i;
    for(i=1; i<=n; i++)
        sum=sum*i;
    return sum;
}//求阶乘 
void output(int *p) {
    int i;
    int a[5];
    input(p);                                        
    for(i=0; i<5; i++) {
        if(a[i]<1) a[i]=0;
        else a[i]=fact(i);
        }
        for(i=0;i<5;i++)
        printf("%.0f ",a[i]);
}//如果这个数小于1 则输出0;
//如果是大于等于1,则输出该数的阶乘 
//输出这个数组 
int main() {
    int a[5],i;
    input(a);//输入五个数 
    output(a);//输出五个数 
    }

帮你修改好了

#include <stdio.h>

// 输入
void input(int *a, int n)
{
    for (int i = 0; i < n; i++)
        scanf("%d", &a[i]);
}

// 求阶乘
double fact(int n)
{
    double sum = 1;
    for (int i = 1; i <= n; i++)
        sum = sum * i;
    return sum;
}

// 如果这个数小于1 则输出0;
// 如果是大于等于1,则输出该数的阶乘
void output(int *a, int n)
{
    for (int i = 0; i < n; i++)
    {
        if (a[i] < 1)
            printf("0 ");
        else
            printf("%.0lf ", fact(a[i]));
    }
}

int main()
{
    const int n = 5;
    int a[n];
    input(a, n);  // 输入五个数
    output(a, n); // 输出五个数
}

你想问什么?粗略看了一下代码,input函数错了