编写C程序从给定的整数数组创建新数组,该数组将所有偶数移到所有奇数之前

print_array(int parray[],int size)中存在构建错误。错误列表为何显示:

missing type specifier - int assumed. Note: C++ does not support default-int

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int arr_size;
    int a1[] = { 1,2,5,3,4,6,9,11 };
    arr_size = sizeof(a1) / sizeof(a1[0]);
    printf("Elements in original array are: ");
    print_array(a1,arr_size);

    int size = arr_size,index = 0;
    for (int i = 0; i < size; i++) {
        if (a1[i] % 2 == 0) {
            int temp = a1[index];
            a1[index] = a1[i];
            a1[i] = temp;
            index++;
        }
    }
    printf("\nElements in new array are: ");
    print_array(a1,arr_size);
}
print_array(int parray[],int size)
{
    int i;
    for (i = 0; i < size - 1; i++) {
        printf("%d,",parray[i]);
    }
    printf("%d ",parray[i]);
    printf("\n");
}
l1120726 回答:编写C程序从给定的整数数组创建新数组,该数组将所有偶数移到所有奇数之前

C99不允许对未经初步声明的函数使用函数调用。并且它也不允许在函数声明中省略函数返回类型。在C99之前,假定返回类型不存在的函数的返回类型为int。

因此,您需要1)在使用该函数之前声明该函数,以及2)由于该函数不返回任何内容,因此将其返回类型显式指定为void。

在函数中,由于以下(不清楚的)循环语句,您还在使用冗余的printf调用

for (i = 0; i < size - 1; i++) {
            ^^^^^^^^^^^^

由于该函数不会更改数组,因此应使用限定符const进行声明。

并且数组的大小应为size_t。它是sizeof运算符返回的值的类型。

可以优化main中的循环。如果两个元素的索引彼此相等,则不必交换它们。

这是您更新的程序。

#include <stdio.h>

void print_array( const int parray[],size_t size );

int main(void)
{ 
    int a1[] = { 1,2,5,3,4,6,9,11 };
    size_t arr_size = sizeof( a1 ) / sizeof( a1[0] );

    printf( "Elements in original array are: " );  
    print_array( a1,arr_size );

    for ( size_t i = 0,j = 0; i < arr_size; i++ )
    {
        if ( a1[i] % 2 == 0  )
        {
            if ( i != j )
            {
                int temp = a1[j];
                a1[j] = a1[i];
                a1[i] = temp;
            }                   
            j++;
        }
    }

    printf( "\nElements in new array are: " );  
    print_array( a1,arr_size );
}

void print_array( const int parray[],size_t size )
{
    for( size_t i=0; i < size; i++ )  
    {  
        printf( "%d,",parray[i] );  
    } 

    putchar( '\n' );
}
本文链接:https://www.f2er.com/3144847.html

大家都在问