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; }
Esercizi
Esercizio 3Determinare 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; }
Esercizi
Esercizio 5Determinare 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"); }
Esercizi
Esercizio 7Determinare 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");
Esercizi
Esercizio 9Determinare 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 Prezzo al metro quadro Centro € 1.500
Zona1 € 1.200 Zona2 € 1.400 Zona3 € 1.300 Periferia € 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;
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; }
Esercizi
Esercizio 11Sullo 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;
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");
Esercizi
Esercizio 13Determinare 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; }
Esercizi
Esercizio 14Scrivere 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");
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; }
Esercizi
Esercizio 17Visualizzazione 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; }
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; }
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; }
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);
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; }
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]);
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);
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");
Esercizi
Esercizio 31Scrivere 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; }
Esercizi
Esercizio 33Scrivere 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
Esercizi
Esercizio 35Calcolare 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");
Esercizi
Esercizio 37Scrivere 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;
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 39Scrivere 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; }
Esercizi
Esercizio 40Scrivere 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; }
Esercizi
Esercizio 41Scrivere 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; }
Esercizi
Esercizio 42Scrivere 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; }
Esercizi
Esercizio 43Scrivere 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; }