fangjinghang 2023-12-20 13:01 采纳率: 75%
浏览 3
已结题

关于自定义函数的问题

编译器报错不允许使用不完整的类型和“printf”:实参具有“void”类型:参数二

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>

int a[1000], arr_even[1000], arr_odd[1000], arr_prime[1000], n;
int n_odd,n_even,n_prime;

void getOdd(int* a, int len, int* arr_odd, int* n_odd)
{
    int j = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] % 2 == 0)
        {
           printf("%d ", a[i]);
           arr_odd[j] = a[i];
           j++;
        }
    }
    printf("\n");
    *n_odd = j;
    printf("%d", *n_odd);
}

void getEven(int* a, int len, int* arr_even, int* n_even)
{
    int j = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] % 2 != 0)
        {
            printf("%d ", a[i]);
            arr_even[j] = a[i];
            j++;
        }
    }
    printf("\n");
    *n_even = j;
    printf("%d", *n_even);
}

void getPrime(int* a, int len, int* arr_prime, int* n_prime)
{
    int x = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] == 2)
        {
            x += 1;
            arr_prime[x] = a[i];
         printf("%d ", a[i]);
        }
        else
        {
            int j = 0;
            for (j = 2; j <= sqrt(a[i]); j ++)
            {
                if (a[i] % j == 0)
                {
                    break;
                }
            }
            if (j > sqrt(a[i]))
            {
                printf("%d ", a[i]);
                arr_prime[x] = a[i];
                x++;
            }
        }
    }
    printf("\n");
    *n_prime = x;
    printf("%d", *n_prime);
}

void main()
{
    n_odd = 0;
    printf("请输入数组的长度:");
    scanf("%d", &n);
    printf("请输入一个数组:");
    for(int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }

    printf("输出数组中的偶数:");
    printf("输出数组中的偶数的个数:%d\n", getOdd(a, n, arr_odd, n_odd));
    printf("输出数组中的奇数:");
    printf("输出数组中的奇数的个数:%d\n", getEven(a, n, arr_even, n_even));
    printf("输出数组中的素数:");
    printf("输出数组中的素数的个数:%d\n", getPrime(a, n, arr_prime, n_prime));
}

img

  • 写回答

3条回答 默认 最新

  • 哎呀呀不会啊 2023-12-20 13:08
    关注

    你在主函数main中调用了getOdd, getEven, getPrime函数,但是你并没有传递任何参数
    void main这段修改一下,试试~

    void main()  
    {  
        int arr_odd[1000], arr_even[1000], arr_prime[1000];   
        int n_odd, n_even, n_prime;   
        n_odd = 0;   
        printf("请输入数组的长度:");   
        scanf("%d", &n);   
        printf("请输入一个数组:");   
        for(int i = 0; i < n; i++)   
        {   
            scanf("%d", &a[i]);   
        }   
         
        getOdd(a, n, arr_odd, &n_odd);   
        getEven(a, n, arr_even, &n_even);   
        getPrime(a, n, arr_prime, &n_prime);   
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 已采纳回答 12月21日
  • 创建了问题 12月20日

悬赏问题

  • ¥20 求下下面这个数据结构代码
  • ¥15 路由器考试怎么办,有懂行的吗 ,eNSP
  • ¥20 前端 二进制文件流图片转化异常
  • ¥15 github上的这个C语言项目如何跑起来
  • ¥15 java 判断某个数 区间是否存在
  • ¥15 appium控制多个雷电模拟器问题
  • ¥15 C# iMobileDevice
  • ¥15 谁会做这个啊#ensp#Boson NetSim
  • ¥15 如何编写针对TPS6503320FRGE型号的电源管理芯片的编程代码?
  • ¥15 设计简单目录管理系统,要满足以下内容