Esercizi Linguaggio C Questa dispensa contiene una serie di semplici esercizi di programmazione in linguaggio C con relativa soluzione. Esercizio 1 Determinare se un numero intero inserito dall’utente è divisibile per 3. #include <stdio.h> /*divisibilità di un numero per 3*/ int main() { int numero; printf("inserisci numero\n"); scanf("%d",&numero); if((numero%3)==0) printf("il numero %d e' divisibile per 3",numero); else printf("il numero %d non e' divisibile per 3",numero); scanf("%d"); return 0; } Esercizio 2 Determinare se un numero intero inserito dall’utente è pari o dispari #include <stdio.h> int num; int main() { printf("\ninserisci numero: "); scanf("%d",&num); if (num%2==0) printf("\n il numero %d è pari",num); else printf("\nil numero %d è dispari", num); scanf("%d"); return 0; } Luca Orrù 1 Esercizi Esercizio 3 Determinare il massimo tra due numeri inseriti dall’utente #include <stdio.h> int num1,num2; int main() { printf("\ninserisci primo numero:"); scanf("%d",&num1); printf("\ninserisci secondo numero:"); scanf("%d",&num2); if (num1>num2) printf("\nil massimo tra %d e %d e': %d ",num1,num2,num1); else if(num1<num2) printf("\nil massimo tra %d e %d e': %d ",num1,num2,num2); else printf("\n %d = %d", num1,num2); scanf("%d"); return 0; } Esercizio 4 Determinare il massimo comune divisore tra due numeri inseriti dall’utente #include <stdio.h> /*calcolo del massimo comune divisore*/ int main() { int num1,num2,resto,numa,numb; printf("inserisci il primo numero\n"); scanf("%d",&num1); printf("inserisci il secondo numero\n"); scanf("%d",&num2); numa=num1; numb=num2; do { resto=numa%numb; numa=numb; numb=resto; } while(resto!=0); printf("il MCD tra %d e %d è: %d",num1,num2,numa); scanf("%d"); return 0; } Luca Orrù 2 Esercizi Esercizio 5 Determinare se un anno è bisestile. Per definizione un anno è bisestile se è divisibile per 4 ma non per 100 oppure è divisibile per 400. #include <stdio.h> /*anno bisestile*/ int anno; int main() { printf ("inserisci anno: "); scanf("%d",&anno); if (((anno%4)==0)&((anno%100)!=0)||((anno%400)==0)) printf("l'anno %d e' bisestile",anno); else printf("l'anno %d non e' bisestile",anno); scanf("%d"); } return 0; Esercizio 6 Determinare la parte intera di un numero in virgola mobile inserito da tastiera #include <stdio.h> /*calcolo parte intera di un numero */ double Numero; double Partint; void main() { printf("Numero= "); scanf("%lf",&Numero); Partint=0; if (Numero>0){ while (Partint<Numero-1) Partint++; } else{ while (Partint>Numero+1) Partint--; } printf("Partint=%.lf",Partint); scanf("%d"); } Luca Orrù 3 Esercizi Esercizio 7 Determinare la quarta potenza di tutti i numeri dispari compresi tra 0 e 10 #include <stdio.h> #include<math.h> /*math.h è il file di libreria necessario per usare la funzione matematica pow*/ /*calcolo della quarta potenza di un numero dispari*/ int main() { int i,p; for(i=0;i<=10;i++) { if((i%2)==0) { /*il numero inserito è pari*/ /*incrementa il for saltando le istruzioni successive alla continue*/ continue; } else { printf("il numero %d e' dispari\n\n",i); p=pow(i,4); /*pow è la funzione potenza. La sintassi è:pow(arg1,arg2) dove arg1 è la base e arg2 è l'esponente*/ printf("la quarta potenza di %d e' %d\n\n",i,p); } } scanf("%d"); return 0; } Esercizio 8 Determinare il valore medio tra due numeri interi inseriti dall’utente #include <stdio.h> /*valor medio tra due numeri interi inseriti da tastiera*/ int num1,num2; float valmedio; main() { printf("\ninserisci primo numero:"); scanf("%d",&num1); printf("\ninserisci secondo numero:"); scanf("%d",&num2); valmedio=float(num1+num2)/2; printf(" \nvalore medio tra %d e %d = %.3f",num1,num2,valmedio); scanf("%d"); } Luca Orrù 4 Esercizi Esercizio 9 Determinare il fattoriale di un numero inserito dall’utente #include <stdio.h> /*calcolo fattoriale di un numero*/ int main() { int fatt=1,numero,i; printf("inserisci il numero di cui vuole calcolare il fattoriale\n"); scanf("%d",&numero); for(i=1;i<=numero;i=i+1) { /*calcolo fattoriale*/ fatt=fatt*i; } printf("il fattoriale di %d e':%d",numero,fatt); } scanf("%d"); return 0; Esercizio 10 Un’ agenzia immobiliare, per incrementare le sue vendite, decide di abbassare i prezzi degli appartamenti e affigge la seguente tabella: Zona Centro Zona1 Zona2 Zona3 Periferia Prezzo al metro quadro € 1.500 € 1.200 € 1.400 € 1.300 € 1.000 Scrivere un programma che, date in input le dimensioni dell’appartamento in metri quadri e la zona di appartenenza, determini il prezzo dell’appartamento. Infine, per determinare il prezzo complessivo di vendita, deve essere aggiunta una percentuale di un X% relativa alla provvigione spettante alla agenzia #include <stdio.h> float dim,quotaprovvigione; int zona,provvigione,costo; Luca Orrù 5 Esercizi int main() { printf("\ninserisci dimensioni appartamento in metri quadri:" ); scanf("%f",&dim); printf("\n inserisci zona appartenenza appartamento: \n0:centro,\n1:Zona1,\n2:Zona2,\n3:Zona3;\n4:Periferia\n"); scanf("%d",&zona); printf("\ninserisci quota percentuale provvigione agenzia: "); scanf("%d",&provvigione); switch (zona){ case 0: printf("\nprezzo al mq : euro 1500"); costo=1500*dim; quotaprovigione=(costo*provvigione)/100; printf("\nprezzo appartamento : euro %.3f",costo+quotaprovvigione ); break; case 1: printf("\nprezzo al mq : euro 1200"); costo=1200*dim; quotaprovigione=(costo*provvigione)/100; printf("\nprezzo appartamento = euro %.3f",costo+quotaprovvigione); break; case 2: printf("\nprezzo al mq : euro 1400"); costo=1400*dim; quotaprovigione=(costo*provvigione)/100; printf("\nprezzo appartamento : euro %.3f",costo+quotaprovvigione); break; case 3: printf("\nprezzo al mq : euro 1300"); costo=1300*dim; quotaprovigione=(costo*provvigione)/100; printf("\nprezzo appartamento : euro %.3f", costo+quotaprovvigione); break; case 4: printf("\nprezzo al mq : euro 1000"); costo=1000*dim; quotaprovvigione=(costo*provvigione)/100; printf("\nprezzo appartamento :euro %.3f",costo+quotaprovvigione); break; } scanf("%d"); return 0; } Luca Orrù 6 Esercizi Esercizio 11 Sullo stipendio dei dipendenti di una ditta viene applicata una trattenuta fiscale in base alla seguente tabella: Scaglione1: trattenuta 5%; Scaglione2: trattenuta 10%; Scaglione3: trattenuta 15%; Scaglione4: trattenuta 25%; Scaglione5: trattenuta 35%; Scrivere un programma che, dato in input lo scaglione di appartenenza di un dipendente, calcoli la trattenuta da versare. #include <stdio.h> /*calcolo trattenuta fiscale dipendenti*/ int scelta; float stipendiolordo,totaletrattenuta; int main() { printf("\n inserisci stipendio lordo del dipendente: "); scanf("%f",&stipendiolordo); printf("\n inserisci scaglione di appartenenza del dipendente:1,2,3,4,5:"); scanf("%d",&scelta); switch (scelta){ case 1: printf("\n\t\t trattenuta da versare pari a 5*100"); totaletrattenuta=(stipendiolordo*5)/100; printf("\n\n\t\t trattenuta = %.3f euro",totaletrattenuta); printf("\n\n\t\t stipendio netto = %.3f",stipendiolordo-totaletrattenuta); break ; case 2: printf("\n\t\t trattenuta da versare pari al 10*100"); totaletrattenuta=(stipendiolordo*10)/100; printf("\n\n\t\t trattenuta = %.3f euro",totaletrattenuta); printf("\n\n\t\t stipendio netto = %.3f",stipendiolordo-totaletrattenuta); break; case 3: printf("\n\t\t trattenuta da versare pari al 15*100"); totaletrattenuta=(stipendiolordo*15)/100; printf("\n\n\t\t trattenuta = %.3f euro",totaletrattenuta); printf("\n\n\t\t stipendio netto = %.3f",stipendiolordo-totaletrattenuta); break; Luca Orrù 7 Esercizi } case 4: printf("\n\t\t trattenuta da versare pari al 25*100"); totaletrattenuta=(stipendiolordo*25)/100; printf("\n\n\t\t trattenuta = %.3f euro",totaletrattenuta); printf("\n\n\t\t stipendio netto = %.3f",stipendiolordo-totaletrattenuta); break; case 5: printf("\n\t\t trattenuta da versare pari al 35*100"); totaletrattenuta=(stipendiolordo*35)/100; printf("\n\n\t\t trattenuta = %.3f euro",totaletrattenuta); printf("\n\n\t\t stipendio netto = %.3f",stipendiolordo-totaletrattenuta); break; default: printf("\n errore:digita un numero da 1 a 5"); } scanf("%d"); return 0; Esercizio 12 Determinare la media di un vettore di 5 numeri interi #include <stdio.h> /*calcolo media di un vettore di 5 numeri interi*/ int vett[5],i,somma=0; float media; main() { for (i=0;i<=4;i++) {printf("\ninsert elemento: " ); scanf("%d",&vett[i]); } for (i=0;i<=4; i++) {/* somma degli elementi*/ somma=somma+vett[i]; } media=somma; /*permette divisione non intera*/ media=media/5; printf("\nla media degli elementi del vettore dato è: %f.", media); scanf("%d"); } Luca Orrù 8 Esercizi Esercizio 13 Determinare il prodotto degli elementi di un vettore di numeri interi #include <stdio.h> /*calcolo del prodotto degli elementi di un vettore di interi*/ int i,vett[]={10,4,2,3,5},prodotto; int main() { prodotto=1; printf("\n\t\tgli elementi del vettore sono:"); for (i=0;i<=4;i++) printf("\n\n %d", vett[i]); for (i=0;i<=4;i=i+1) {/*calcolo del prodotto*/ prodotto=prodotto*vett[i]; } printf("\n\n\t\t prodotto=%d",prodotto); scanf("%d"); return 0; } Esercizio 13 Determinare il massimo e il minimo di un vettore di interi #include <stdio.h> /*calcolo del minimo e del massimo degli elementi di un vettore*/ int i,min,max,vett[]={10,4,2,6,3,7}; int main() { min=vett[0]; max=vett[0]; for(i=1;i<=5;i++) {if (vett[i]<=min) min=vett[i]; if (vett[i]>max) max=vett[i]; } printf("min=%d,max=%d",min,max); scanf("%d"); return 0; } Luca Orrù 9 Esercizi Esercizio 14 Scrivere un programma che dato un vettore di interi, costruisca un nuovo vettore con gli elementi del primo vettore ma in ordine inverso #include <stdio.h> /*scambio elementi di un vettore*/ int i,vett1[10],vett2[10]; int main() { printf("inserimento elementi vettore1\n\n"); for(i=0;i<=9;i++) {printf("\nelemento di indice:%d=",i); scanf("%d",&vett1[i]); } /*caricamento vettore 2 in ordine inverso rispetto al vettore 1*/ printf("\n questi sono gli elementi del vettore2\n"); for(i=0;i<=9;i++) {vett2[i]=vett1[9-i]; printf("\nelemento di indice %d=%d",i,vett2[i]);} scanf("%d"); return 0; } II soluzione #include <stdio.h> /*scambio di vettori con primo vettore inizializzato e con uso della direttiva define*/ #define lung 10 int i,vett1[lung]={1,2,3,4,5,6,7,8,9,10},vett2[10]; main() { printf("tabella di partenza:\n"); for(i=0;i<=lung-1;i++) { printf("\n%d",vett1[i]); } /*caricamento vettore 2 in ordine inverso rispetto al vettore 1*/ printf("\n\n tabella dopo l'inversione dell'ordine\n"); for(i=0;i<=lung-1;i++) {vett2[i]=vett1[lung-1-i]; printf("\n %d",vett2[i]);} scanf("%d"); Luca Orrù 10 Esercizi } Esercizio 15 Visualizzare gli indirizzi di memoria degli elementi di un vettore di elementi float. #include <stdio.h> /*visualizzazione degli indirizzi di memoria degli elementi di un vettore*/ int i; float voti[]={6.5,5.30,7,9.20}; void main() { printf("\n\t\t indirizzi e valori degli elementi"); for (i=0;i<=3;i++) {printf("\nIndirizzo=%p:",&voti[i]); printf("voti[%d]=%.2f",i,voti[i]); } scanf("%d"); } Esercizio 16 Visualizzazione di indice ed elemento corrispondente di un vettore di caratteri (solo vocali) #include <stdio.h> /*visualizzazione indice ed elemento corrispondente di un vettore di caratteri*/ int j; char vocali[]={'a','e','i','o','u'}; void main() { j=1; printf("\nelemento di indice %d = %c",j,vocali[j]); scanf("%d"); return 0; } Luca Orrù 11 Esercizi Esercizio 17 Visualizzazione di indice ed elemento corrispondente di un vettore temperatura e calcolo del numero di byte occupati in memoria dal vettore #include <stdio.h> /*indirizzo di memoria di ciascun elemento del vettore*/ /*contenuto del vettore temperatura e visualizzazione byte occupati dal vettore*/ void main() { int i; float temperatura[]={30.67,40.1,18.7,21.67}; /*inizializzazione vettore*/ printf("\n\n\t\tindirizzi e valori degli elementi"); /*\t= tabulazione linea*/ /*\n= salto riga*/ for(i=0;i<4;i++){ printf("\n\n Indirizzo=%p:",&temperatura[i]); /*%p specifica che il dato è un indirizzo di memoria*/ printf("temperatura[%d]=%.2f", i,temperatura[i]); } /*.2f specifica 2 cifre decimali dopo la virgola*/ printf("\n\nLa dimensione in byte del vettore temperatura è: %d",sizeof temperatura); scanf("%d"); } Esercizio 18 Stampa di una stringa contenuta in un vettore #include <stdio.h> /*stampa di una stringa contenuta in un vettore*/ char nome[]="Mario Rossi"; int main() { printf("Utente:%s",nome); scanf("%d"); return 0; } Luca Orrù 12 Esercizi Esercizio 19 #include <stdio.h> /*vettori di stringhe*/ char elenco1 [][10]={"Luca","Rina","Angela","Silvia","Clara"}; char elenco2[5][20]; int riga; int main() { for (riga=0; riga<5;riga++) {printf("\n elenco1[%d] =%s",riga,elenco1[riga]); } for (riga=0; riga<5;riga++) {printf("\n inserisci nome:"); gets(elenco2[riga]);} for (riga=0; riga<5;riga++) {printf("\n elenco2[%d]=%s",riga,elenco2[riga]);} scanf ("%d"); return 0; } Esercizio 20 #include <stdio.h> /*impiego di gets e puts per scrivere e visualizzare le stringhe*/ int main() { char testo[40]; printf("scrivete un testo (max39 caratteri)\n"); gets(testo); puts(testo); /*si puo fissare un punto di partenza*/ /*la seguente istruzione permette la visualizzazione a partire dal terzo carattere della stringa testo*/ puts(&testo[2]); scanf("%d"); return 0; } Luca Orrù 13 Esercizi Esercizio 21 #include <stdio.h> /*visualizzazione di una parte di una stringa di caratteri con la funzione putchar*/ int main() { char testo[40]="questo è un esempio di testo"; int i,ultimo,primo; puts("inserisci indice del primo carattere da visualizzare"); scanf("%d",&primo); puts("inserisci indice ultimo carattere da visualizzare"); scanf("%d",&ultimo); for (i=primo;i<=ultimo;i++) putchar(testo[i]); /*stampa un solo carattere*/ scanf("%d"); return 0; } Esercizio 22 #include <stdio.h> #include <string.h> /*concatenazione di stringhe*/ int main() { int num; char testo1[40]; char testo2[40]; printf("inserisci testo (max 40 caratteri)\n"); gets(testo1); printf("inserisci un altro testo (max 40 caratteri)\n"); gets(testo2); strcat(testo1," "); /*concatenazione di testo 1 con stringa vuota:aggiunta spazio*/ printf("quanti caratteri della stringa testo 2 volete volete aggiungere a testo1?\n"); scanf("%d",&num); strncat(testo1,testo2,num); /*concatenazione di testo 1 con num caratteri ditesto 2*/ puts("la prima stringa diventa:\n"); puts(testo1); scanf("%d"); return 0; } Luca Orrù 14 Esercizi Esercizio 23 #include <stdio.h> #include <string.h> /*copia, inversione di una stringa di caratteri e visualizzazione della stringa invertita*/ int main() { char scambio; int lung,i,j; char testo1[100]; char testo2[100]; printf("Inserisci un testo (max 99 caratteri)\n"); gets(testo2); strcpy(testo1,testo2); /*copia testo2 in testo1*/ /*inversione testo1*/ lung=strlen(testo1); /*restituisce in lung la lunghezza in numero di caratteri del testo1*/ j=lung-1; for (i=0;i<=(lung-1)/2;i++) { scambio=testo1[j]; testo1[j]=testo1[i]; testo1[i]=scambio; j=j-1;} puts(testo1); scanf("%d"); return 0; } Esercizio 24 #include <stdio.h> #include <string.h> /*uso funzioni di manipolazione delle stringhe*/ /*la libreria string.h include tutte le principali operazioni sulle stringhe:strlen,strcpy,strcmp,strcat,strchr,strstr*/ int main() { char r; int a; char s[20]; char v[]="Bravo"; char vett[20]; printf("\n inserisci una parola:"); gets(s); Luca Orrù 15 Esercizi printf("\n la parola dentro la variabile v e'%s\n",v); printf("\n la parola digitata in s e' %s\n",s); printf("\n e la sua lunghezza e' %d\n", strlen(s)); /*strlen restituisce la lunghezza della stringa:num caratteri*/ strcpy(vett,s); /*copia il contenuto di s in vett*/ printf("\n il contenuto di vett e' %s\n",vett); if (strchr(v,r)) /*cerca nella stringa v il carattere r*/ printf("\ntrovato carattere r\n"); else printf("\ncarattere r non trovato\n"); /*confronto tra due stringhe*/ a=strcmp(v,s); if (a==1) printf("\nla stringa %s e' maggiore della stringa %s\n",v,s); else if (a==0) printf("\n le due stringhe sono uguali\n"); else if (a==-1) printf("\n la stringa %s e' minore della stringa %s\n",v,s); scanf("%d"); return 0; } Esercizio 25 #include <stdio.h> #include<string.h> /*inizializzazione e visualizzazione di un array bidimensionale*/ int num[][2]={1,2, 2,3, 3,4, 4,5, 5,6 }; char e1[]="Programmazione in "; char e2[]="linguaggio C"; int main() { int i,j; for (i=0;i<5;i++) { for (j=0;j<2;j++) {printf("\n num[%d][%d]=%d",i,j,num[i][j]); }} printf("\nla lunghezza di %s e' %d",e2,strlen (e2)); printf("\nla dimensione di num e' %d byte",sizeof num); scanf("%d"); return 0; } Luca Orrù 16 Esercizi Esercizio 26 #include <stdio.h> /*caricamento e stampa di una tabella contenente i numeri da 1 a 12 su 3 righe e 4 colonne*/ int num[3][4],i,j; int main() { for (i=0;i<3;i++) for(j=0;j<4;j++) num[i][j]=(i*4)+1+j; for (i=0;i<3;i++){ for(j=0;j<4;j++) printf("%3d",num[i][j]); /*3d specifica un intero su 3 cifre decimali*/ printf("\n" );} /*salta riga quando j=4*/ scanf("%d"); return 0; } Esercizio 27 #include <stdio.h> /*uso vettori multidimensionali*/ int posizione[4][3],riga,colonna; double matrice [][2]={ {1,22.534}, {100,-2,}, {-1.1123,2.22} }; int main() { for(riga=0;riga<4;riga++) {for (colonna=0;colonna<3;colonna++) {printf("\ninserisci elemento %d %d: ",riga,colonna); scanf("%d",&posizione[riga][colonna]);} } printf("\n\t\tindirizzi e valori elementi del vettore"); for(riga=0;riga<4;riga++) {for (colonna=0;colonna<3;colonna++) {printf("\nindirizzo = %p:",&posizione[riga][colonna]); printf("Posizione[%d][%d]=%d",riga,colonna,posizione [riga][colonna]); }} for(riga=0;riga<3;riga++) {for (colonna=0;colonna<2;colonna++) {printf("\nindirizzo = %p:",&matrice[riga][colonna]); printf("Posizione[%d][%d]=%.3lf",riga,colonna,matrice [riga][colonna]); }} Luca Orrù 17 Esercizi } scanf("%d"); return 0; Esercizio 28 Scrivere un programma che visualizzi una tabella in cui compaiono, a distanza di un secondo, la posizione (in metri da terra) e la velocità (in m/s) di un grave in caduta libera da un’altezza stabilita. #include <stdio.h> /*caduta gravi*/ int t; float p,g,v,s,h; int main() {g=9.8; t=0; printf("inserisci la posizione del grave in metri da terra:\n"); scanf("%f",&h); do { v=g*t; s=(v*t)/2; p=h-s; if (p>=0) { printf("tempo=%d posizione=%.2f velocita'=%.2f m/s\n", t,p,v); t=t+1; } } while(p>=0); scanf("%d"); return 0; } Esercizio 29 Scrivere un programma che permetta di convertire un intero decimale nella sua rappresentazione in un generica base B di arrivo. #include <stdio.h> /*conversione da base dieci a base b */ int main() { int num,base,quoziente,resto; printf("inserisci numero decimale\n"); scanf("%d",&num); printf("Inserisci base in cui vuoi convertire il numero decimale\n"); scanf("%d",&base); Luca Orrù 18 Esercizi /*calcolo resto e quoziente*/ printf("\n"); do { resto=num%base; quoziente=num/base; printf("%d",resto); num=quoziente; } while(quoziente!=0); printf("\nIl numero ottenuto va letto da destra verso sinistra"); scanf("%d"); return 0; } Esercizio 30 Scrivere un programma che calcoli la media di un numero qualsiasi di voti. Sommare tutti i voti immessi fino a quando non viene acquisito un voto impossibile (ad esempio minore di 0 e maggiore di 10). #include <stdio.h> /*calcolo della media di un numero qualsiasi di voti. */ float somma,media,voto; int cont; int main() { somma=0; cont=0; do { printf("inserisci voto: \n"); scanf("%f",&voto); if ((voto>=0) && (voto<=10)) { cont=cont+1; somma=somma+voto; } } while((voto>=0)&& (voto<=10)); if (cont>0) {media=somma/cont; printf("la media dei voti e':%.2f",media);} else printf("nessun voto valido inserito"); scanf("%d"); return 0; } Luca Orrù 19 Esercizi Esercizio 31 Scrivere un programma per sommare i primi numeri interi a partire da 1 fino ad un numero finale prefissato #include <stdio.h> int cont,somma,nummax; int main() { cont=1; somma=0; printf("inserisci il limite superiore della sequenza d'interi da sommare:"); scanf("%d",&nummax); do { somma=somma+cont; cont=cont+1; } while (cont<=nummax); printf("la somma dei primi %d numeri interi e':%d",cont-1,somma); scanf("%d"); return 0; } Esercizio 32 Calcolare la somma dei quadrati dei primi numeri interi da 1 fino ad un numero finale prefissato #include <stdio.h> int cont,numMax,somma; int main() { printf("Inserisci il numero di interi da sommare:"); scanf("%d",&numMax); cont=1; somma=0; do { somma=somma+cont*cont; cont=cont+1;} while(cont<=numMax); printf("La somma dei quadrati dei primi %d numeri interi e':%d",numMax,somma); scanf("%d"); } return 0; Luca Orrù 20 Esercizi Esercizio 33 Scrivere un programma che calcoli la somma dei primi numeri interi dispari e pari partendo rispettivamente da 1, oppure da 0, fino ad un numero finale prefissato (Il numero finale stabilisce i numeri da sommare). #include <stdio.h> int main() { int cont,sommaPari,sommaDispari,numMax; cont=1; sommaPari=0; sommaDispari=1; printf("Inserisci il valore finale che stabilisce i numeri da sommare:"); scanf("%d",&numMax); do { sommaPari=sommaPari+2*cont; sommaDispari=sommaDispari+2*cont+1; cont=cont+1; } while (cont<numMax); printf("La somma tra i primi %d numeri pari e':%d\n",cont,sommaPari); printf("La somma ra i primi %d numeri dispari e':%d\n",cont,sommaDispari); scanf("%d"); return 0; } Esercizio 34 Calcolare il risultato dei prodotti ripetuti dei quadrati dei primi numeri interi da 1 fino ad un numero finale prefissato. Verificare nell'algoritmo che il numero massimo finale (introdotto in input) non possa mai superare il valore 100. #include <stdio.h> int cont,prodotto,Nmax; main() { printf("Inserisci valore massimo:"); scanf("%d",&Nmax); if (Nmax<=100) { prodotto=1; for(cont=1;cont<=Nmax;cont++) prodotto=prodotto*cont*cont; printf("Il prodotto dei quadrati dei primi %d numeri interi e':%d ",Nmax,prodotto);} else printf("errore:inserisci un numero inferiore o uguale a 100"); scanf("%d");} Luca Orrù 21 Esercizi Esercizio 35 Calcolare il risultato dei prodotti ripetuti delle radici quadrate dei primi numeri interi da 1 fino ad un numero finale prefissato. Verificare nell'algoritmo che il numero Nmax finale sia maggiore di 0. #include <stdio.h> #include<math.h> int cont,Nmax; float prodotto=1; main() { printf("Inserisci valore massimo:"); scanf("%d",&Nmax); if (Nmax>0) { for(cont=1;cont<=Nmax;cont++) prodotto=prodotto*sqrt(cont); printf(" Il prodotto delle radici quadre dei primi %d numeri interi e': %f ", Nmax, prodotto); } else printf("errore:inserisci un numero maggiore di 0"); scanf("%d"); } Esercizio 36 Calcolare la somma dei reciproci dei primi numeri interi da 1 fino a d un numero finale N prefissato. Verificare nell’algoritmo che il numero finale N introdotto in input non possa mai (per errore) essere uguale a zero. #include <stdio.h> int cont,N; float somma; main() { somma=0; printf("inserisci N:"); scanf("%d",&N); if (N!=0){ for (cont=1;cont<=N;cont++) somma=somma+(1/(float)cont); printf("la somma e':%.5f", somma);} else printf("errore: hai inserito 0...inserisci un numero positivo"); scanf("%d"); } Luca Orrù 22 Esercizi Esercizio 37 Scrivere un programma che, dati i coefficienti e il valore della x, calcoli il valore di un polinomio di 4 grado #include <stdio.h> #include<math.h> int i,x,a; float somma; int main() { printf("Inserisci valore della variabile x:"); scanf("%d",&x); i=0; somma=0; do { printf("inserisci valore coefficiente a%d:",i); scanf("%d",&a); somma=somma+a*pow(x,i); i=i+1; } while (i<=4); printf("\n a0*X^0+a1*X^1+a2+X^2+a3*X^3+a4*X^4=%.3f", somma); scanf("%d"); return 0; } Esercizio 38 Scrivere un programma che calcoli la potenza n-esima di un numero reale x. Si supponga di non avere a disposizione la funzione pow #include <stdio.h> float x, potenza; int i, esponente, n; int main() { printf("inserisci esponente:"); scanf("%d",&n); printf("inserisci numero reale x di cui vuoi calcolare la %d potenza:",n); scanf("%f",&x); /*calcolo potenza*/ i=1; potenza=1; if (n>0) esponente=n; else Luca Orrù 23 Esercizi esponente=-n; do{ potenza=potenza*x; i=i+1;} while (i<=esponente); if (n>0) printf("potenza=%.4f",potenza); else if (n<0) printf("potenza=%.4f",1/potenza); else printf("potenza=1"); } scanf("%d"); return 0; Esercizio 39 Scrivere un programma che calcoli la potenza n-esima di un numero reale x. Si supponga di avere a disposizione la funzione pow. #include <stdio.h> #include <math.h> float x, potenza; int n; int main() { printf("inserisci esponente:"); scanf("%d",&n); printf("inserisci numero reale x di cui vuoi calcolare la %d potenza:",n); scanf("%f",&x); /*calcolo potenza*/ potenza=pow(x,n); printf("%.2f",potenza); scanf("%d"); return 0; } Luca Orrù 24 Esercizi Esercizio 40 Scrivere un programma che date due matrici di numeri reali restituisca la matrice somma. Visualizzare tutte e tre le matrici. #include <stdio.h> /*somma di due matrici*/ float A[][3]={1.2,1.2,1.2, 1,1,1, 2,2,2}; float B[][3]={1.5,1.5,1.5, 1,1,1, 2,2,2}; float C[3][3]; int i,j; int main() { /*somma */ for (i=0;i<=2;i++) for(j=0;j<=2;j++) C[i][j]=A[i][j]+B[i][j]; /*visualizzazione a video*/ printf("\t matrice A \n\n\n"); for (i=0;i<=2;i++) { for(j=0;j<=2;j++) printf("\t%.3f",A[i][j]); printf("\n\n"); } printf("\n\t matrice B \n\n\n"); for (i=0;i<=2;i++) { for(j=0;j<=2;j++) printf("\t%.3f",B[i][j]); printf("\n\n"); } printf("\n\t matrice C=A+B \n\n\n"); for (i=0;i<=2;i++) { for(j=0;j<=2;j++) printf("\t%.3f",C[i][j]); printf("\n\n"); } scanf("%d"); return 0; } Luca Orrù 25 Esercizi Esercizio 41 Scrivere un programma che data una matrice di numeri reali e un numero intero restituisca il prodotto tra la matrice e il numero intero. #include <stdio.h> /*prodotto tra una costante e una matrice*/ float A[][2]={1,2, 2,1 }; float B[2][2]; int i,j,num; int main() {printf("inserisci numero:"); scanf("%d",&num); /*prodotto tra num e matrice A*/ for (i=0;i<=1;i++) { for(j=0;j<=1;j++) } B[i][j]=num*(A[i][j]);} /*visualizzazione a video*/ printf("\n\t matrice A \n\n\n"); for (i=0;i<=1;i++) { for(j=0;j<=1;j++) printf("\t%.3f",A[i][j]); printf("\n\n"); } printf("\n\t matrice B=num*A \n\n\n"); for (i=0;i<=1;i++) { for(j=0;j<=1;j++) printf("\t%.3f",B[i][j]); printf("\n\n"); } scanf("%d"); return 0; Luca Orrù 26 Esercizi Esercizio 42 Scrivere un programma che date due matrici quadrate A e B di numeri reali determini la matrice prodotto C=A*B. #include <stdio.h> /*prodotto di due matrici quadrate*/ float A[ ][2]={1,2, 2,1 }; float B[ ][2]={2,1, 1,1 }; float C[2][2]; int i,j,k; int main() { /*prodotto*/ for (i=0;i<=1;i++) for(j=0;j<=1;j++) {C[i][j]=0; for (k=0;k<=1;k++) C[i][j]=(C[i][j])+((A[i][k])*(B[k][j])); } /*visualizzazione a video*/ printf("\t matrice A \n\n\n"); for (i=0;i<=1;i++) { for(j=0;j<=1;j++) printf("\t%.3f",A[i][j]); printf("\n\n"); } printf("\n\t matrice B \n\n\n"); for (i=0;i<=1;i++) { for(j=0;j<=1;j++) printf("\t%.3f",B[i][j]); printf("\n\n"); } printf("\n\t matrice C=A*B \n\n\n"); for (i=0;i<=1;i++) { for(j=0;j<=1;j++) printf("\t%.3f",C[i][j]); printf("\n\n"); } scanf("%d"); return 0; } Luca Orrù 27 Esercizi Esercizio 43 Scrivere un programma che determini il massimo e il minimo tra gli elementi di una matrice di interi. #include <stdio.h> /*determinazione del massimo e del minimo di una matrice*/ #define riga 5 int i,j, A[riga][3]; int main() { /*creazione matrice di interi*/ printf("\t\t inserimento elementi tabella" ); for (i=0;i<riga;i++) for(j=0;j<3;j++) { printf(" \n inserisci A[%d][%d]:",i,j); scanf("%d",&A[i][j]);} printf("\n\t\t tabella \n\n "); /*stampa tabella SOTTO FORMA DI MATRICE*/ for (i=0;i<riga;i++) {for(j=0;j<3;j++) printf("\t%2d",A[i][j]); printf("\n");} /*calcolo minimo e massimo*/ int min=A[0][0]; int max=A[0][0]; for (i=0;i<riga;i++) {for(j=0;j<3;j++) if (min>=A[i][j]) min=A[i][j]; else if (max<A[i][j]) max=A[i][j];} printf("\n max=%d min=%d",max,min); scanf("%d"); return 0; } Luca Orrù 28