Esercizi - home page luca orrù

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