Большая просьба, на будущее научиться делать домашние задания самостоятельно, а не требовать помощи на форумах от занятых людей.
Код:
#include <stdio.h>
int arrayops(int *array, int size, int *m_array, int *s_array)
{
int i, j, tmp, mul=1, sum=0, first0=-1, last0=-1;
/* считаем, что нумерация массива начинается с 0 и что первое четное число равно 2 */
for( i=2; i<size; i=i+2) mul *= array[i];
*m_array=mul;
for( i=0; i<size; i++){
if( array[i] == 0 ){
if( first0 == -1 ) first0=i;
last0=i;
}
}
if( first0 > last0 - 2 ) return 1;
for( i=first0+1; i<last0; i++ ) sum += array[i];
*s_array=sum;
j = size - 1;
for( i=0; i<j; i++) {
while( array[j] < 0 ) j--;
if( array[i] < 0 ) {
array[i] = array[i] ^ array[j];
array[j] = array[i] ^ array[j];
array[i] = array[i] ^ array[j--];
}
}
return 0;
}
void main()
{
int i, m_array, s_array;
int arr[]={3,5,0,1,-2,0,4,-7,0,0,-5,-5,0,-1,2};
if( arrayops(arr, sizeof(arr)/sizeof(int), &m_array, &s_array) != 0 ) printf ("Invalid input data\n");
printf ("mul = %d, sum = %d", m_array, s_array);
for( i=0; i< sizeof(arr)/sizeof(int); i++) printf (", arr[%d] = %d", i, arr[i]);
printf(".\n");
}
Не могу сказать, что код оптимальный - набросал первый попавшийся.