Eccolo.
codice:
#include <stdio.h>#include <conio.h>


int n;
void funz (float);


struct elenco {
float prezzo;
     char descrizione[50];}
     e[20];


int main(void){
int i;
float incremento;




printf ("Quanti prodotti vuoi inserire?:  ");
scanf ("%d",&n); 


for (i=0;i<n;i++){
printf ("\nInserisci il prezzo del prodotto numero %d: ",i+1);
scanf ("%f",&e[i].prezzo);
printf ("\nInserisci nome prodotto:  ");
scanf("%s",e[i].descrizione); }




printf ("\n\n\n\nInserisci percentuale di incremento:  ");
scanf ("%f",&incremento); 


funz(incremento);


for (i=0;i<n;i++)


printf ("\nProdotto %d - %f - %s" , i+1, e[i].prezzo, e[i].descrizione);
getch();
return 0;}






void funz(float b){
int i;
for (i=0;i<n;i++)
e[i].prezzo=e[i].prezzo+b;
return;}

Così funziona, solo che se usare una funzione void come ho fatto, faccio una funzione float,
al momento che ritorno e[i], esce 0.0000