Prerequisiti: printf(), scanf(), if/else, while, int, float, array, math.h, funzioni con parametri di tipo numerico o array
Esercizio 1
Definire la funzione
int pari(int a)
che restituisce 1 se il il parametro a è pari 0 in caso contrario.
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 2
Definire la funzione
int somma_x(int a, int b, int x)
che restituisce la somma dei numeri compresi nell'intervallo [a; b] che risultano essere divisibili per x.
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 3
Definire la funzione
int minimo(int a, int b)
che restituisce il valore più piccolo tra a e b.
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 4
Definire la funzione
int fattoriale(int n)
che ha il seguente comportamento:
se n>0 restituisce il prodotto dei numeri compresi tra 1 e n
se n=0 restituisce 1
se n<0 restituisce -1
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 5
Definire la funzione
int tre(int n)
che ha il seguente comportamento:
se n termina con la cifra 3 restituisce 1
negli altri casi restituisce 0
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 6
Definire la funzione
int prossimo5(int n)
che restituisce il prossimo numero maggiore di n che sia multiplo di 5.
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 7
Definire la funzione
int incluso(int a, int b, int n)
che ha il seguente comportamento:
se n è incluso nell'intervallo [a;b] restituisce 1
negli altri casi restituisce 0.
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 8
Definire la funzione
int terna(int a, int b, int c)
che ha il seguente comportamento:
restituisce 1 se a, b, c costituiscono una terna pitagorica
negli altri casi restituisce 0.
Scrivere un programma per verificare il corretto comportamento della funzione.
Nota:
Tre numeri naturali a, b, c costituiscono una terna pitagorica se risulta che a2+b2=c2
────══════♦☆♦══════────
Esercizio 9
Scrivere la funzione primo() che riceve in input un numero intero e restituisce un valore booleano (1/0) per indicare se si tratta o meno di un numero primo.
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 10
Scrivere la funzione mcm() che riceve in input due numeri interi e restituisce il minimo comune multiplo dei due numeri.
Scrivere un programma per verificare il corretto comportamento della funzione.
Nota:
Il mcm di due numeri n, m è un numero positivo, anche se n, m sono negativi.
Nel caso in cui almeno uno dei numeri n, m è 0, il mcm è anch'esso 0.
────══════♦☆♦══════────
Esercizio 11
Scrivere la funzione sommatoria che riceve in input due numeri interi A, B e restituisce la somma di tutti i numeri compresi tra A; B estremi compresi.
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 12
Scrivere la funzione sommatoria_positivi che riceve in input due numeri interi A, B e opera nel seguente modo:
se A e B sono maggiori o uguali a zero, restituisce la somma di tutti i numeri compresi tra A; B estremi compresi
se A o B sono negativi, restituisce -1
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 13
Scrivere la funzione sommatoria_abs che riceve in input due numeri interi A, B e opera nel seguente modo:
se | A | <= | B |, restituisce la somma di tutti i numeri compresi tra | A |; | B | estremi compresi
negli altri casi restituisce -1
Scrivere un programma per verificare il corretto comportamento della funzione.
Nota: con | A | e con | B | si è indicato rispettivamente il valore assoluto di A e di B.
────══════♦☆♦══════────
Esercizio 14
Scrivere la funzione area che riceve in input due numeri interi A, B, che rappresentano le misure dei lati di un rettangolo, e opera nel seguente modo:
Se geometricamente ha significato, restituisce la misura dell'area del rettangolo
negli altri casi restituisce -1
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 15
Scrivere la funzione cerchio che riceve in input un numero decimale, che rappresentano la misura del raggio di un cerchio, e opera nel seguente modo:
Se geometricamente ha significato, restituisce la misura dell'area del cerchio
negli altri casi restituisce -1
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 16
Scrivere la funzione raggio che riceve in input un numero decimale, che rappresentano la misura dell'area di un cerchio, e opera nel seguente modo:
Se geometricamente ha significato, restituisce la misura del raggio
negli altri casi restituisce -1
Scrivere un programma per verificare il corretto comportamento della funzione.
Nota: per l'estrazione della radice quadrata includere la libreria <math.h> e utilizzare la funzione y=sqrt(x), con x e y numeri decimali.
────══════♦☆♦══════────
Esercizio 17
Scrivere la funzione combinazioni che riceve in input due numeri interi n, k e restituisce un numero intero così calcolato:
Con il punto esclamativo si è indicato il fattoriale di un numero, cioè il prodotto di tutti i numeri compresi tra 1 e il numero stesso.
Il fattoriale è definito anche per 0 e vale 1.
Se la funzione riceve in input un numero negativo oppure se n<k restituisce il valore -1.
Scrivere un programma per verificare il corretto comportamento della funzione.
Note:
Per semplificare l'implementazione avvalersi della funzione fattoriale() da definire opportunamente.
Le combinazioni, ad esempio, consentono di calcolare in quanti modi si possono estrarre 2 carte da un mazzo di 10 carte, pari a combinazioni(10,2).
────══════♦☆♦══════────
Esercizio 18
Scrivere la funzione disposizioni che riceve in input due numeri interi n, k e restituisce un numero intero così calcolato:
Con il punto esclamativo si è indicato il fattoriale di un numero, cioè il prodotto di tutti i numeri compresi tra 1 e il numero stesso.
Il fattoriale è definito anche per 0 e vale 1.
Se la funzione riceve in input un numero negativo oppure se n<k restituisce il valore -1.
Scrivere un programma per verificare il corretto comportamento della funzione.
Note:
Per semplificare l'implementazione avvalersi della funzione fattoriale() da definire opportunamente.
Le disposizioni, ad esempio, consentono di calcolare in quanti modi si possono mettere in fila 5 persone scelte tra 10, pari a disposizioni(10,5).
────══════♦☆♦══════────
Esercizio 19
Si consideri la serie numerica
5 7 9 11...
Scrivere la funzione termine_serie che riceve in input un numero positivo N e restituisce il termine N-mo della serie.
Scrivere un programma che utilizza la funzione per generare i primi cento numeri della serie.
Nota:
Il primo termine della serie è 5, il secondo è 7 e così via.
È semplice verificare che la formula
5+2*(N-1)
consente di calcolare il termine N-mo.
────══════♦☆♦══════────
Esercizio 20
Si consideri la serie numerica
5 7 10 14 19...
Scrivere la funzione termine_serie che riceve in input un numero positivo N e restituisce il termine N-mo della serie.
Scrivere un programma che utilizza la funzione per generare i primi cento numeri della serie.
Suggerimento:
I termini della serie si possono ricavare con i seguenti calcoli:
4 + (1) = 5
4 + (1+2) = 7
4 + (1+2+3) = 10
4 + (1+2+3+4) = 14
4 + (1+2+3+4+5) = 19
Implementa la funzione sommatoria(n) che riceve in input un numero intero n e restituisce la somma dei numeri da 1 fino ad n.
Il termine n-mo della serie sarà 4+sommatoria(n).
────══════♦☆♦══════────
Esercizio 21
Si consideri la serie numerica
1 -2 3 -4 5...
Scrivere la funzione termine_serie che riceve in input un numero positivo N e restituisce il termine N-mo della serie.
Scrivere un programma che utilizza la funzione per generare i primi cento numeri della serie.
────══════♦☆♦══════────
Esercizio 22
Si consideri la serie numerica
1 3 6 10 15...
Scrivere la funzione termine_serie che riceve in input un numero positivo N e restituisce il termine N-mo della serie.
Scrivere un programma che utilizza la funzione per generare i primi cento numeri della serie.
Nota:
Valutate le seguenti somme
1
1+2
1+2+3
1+2+3+4
...
────══════♦☆♦══════────
Esercizio 23
Si consideri la serie numerica
4 9 16 25 36...
Scrivere la funzione termine_serie che riceve in input un numero positivo N e restituisce il termine N-mo della serie.
Scrivere un programma che utilizza la funzione per generare i primi cento numeri della serie.
────══════♦☆♦══════────
Esercizio 24
Si consideri la serie numerica
1 2 2 4 3 8 4 16 5...
Scrivere la funzione termine_serie che riceve in input un numero positivo N e restituisce il termine N-mo della serie.
Scrivere un programma che utilizza la funzione per generare i primi quaranta numeri della serie.
Suggerimento:
I termini in posizione dispari sono una "normale" successione di numeri interi (successione lineare).
I termini in posizioni pari costituiscono costituiscono una successione geometrica.
────══════♦☆♦══════────
Esercizio 25
Si consideri la serie numerica
3 -3 6 -6 9 -9 12 -12 15...
Scrivere la funzione termine_serie che riceve in input un numero positivo N e restituisce il termine N-mo della serie.
Scrivere un programma che utilizza la funzione per generare i primi cento numeri della serie.
────══════♦☆♦══════────
Esercizio 26
Prerequisiti: funzioni con array
Scrivere la funzione mcm_array() che riceve in input un array di interi e la sua dimensione e restituisce il minimo comune multiplo dei numeri in esso contenuti.
Scrivere un programma per verificare il corretto comportamento della funzione.
Nota:
Si faccia uso della funzione mcm() già definita in precedenza.
Suggerimento:
...
while (i<n){
min_com_mult=mcm(min_com_mult, a[i]);
i++;
}
...
────══════♦☆♦══════────
Esercizio 27
Prerequisiti: funzioni con array
Scrivere la funzione massimo_array() che riceve in input un array di interi e la sua dimensione e restituisce il più grande intero presente nell'array.
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 28
Prerequisiti: funzioni con array
Scrivere la funzione minimo_primo() che riceve in input un array di interi positivi e la sua dimensione e restituisce il più piccolo numero primo presente nell'array.
Nel caso non sia presente nessun numero primo nell'array restituisce il valore 0.
Scrivere un programma per verificare il corretto comportamento della funzione.
Nota:
Si faccia uso della funzione primo() già definita in precedenza.
────══════♦☆♦══════────
Esercizio 29
Prerequisiti: funzioni con array
Scrivere la funzione pari_arr() che riceve in input:
due array di interi di uguale dimensione arr1, arr2
la dimensione degli array dim
e non restituisce in output alcun valore (tipo void).
L'array arr1 contiene numeri interi positivi.
La funzione effettua le seguenti operazioni:
ricopia i numeri pari presenti in arr1 nell'array arr2, uno di seguito all'altro
riempie le eventuali celle non significative di arr2 con il valore -1
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 30
Prerequisiti: funzioni con array
Scrivere la funzione decimale() che riceve in input
un array di numeri di tipo float
la sua dimensione
e restituisce la somma della sola parte decimale dei numeri contenuti nell'array.
Scrivere un programma per verificare il corretto comportamento della funzione.
Nota:
Si ricorda che la parte intera di un numero di tipo float può essere ottenuta tramite l'operatore di cast, come nell'esempio:
int i;
float f;
i=(int)f;
────══════♦☆♦══════────
Esercizio 31
Prerequisiti: funzioni con array
Scrivere la funzione divisore() che riceve in input
un intero div
un array arr di numeri interi
la dimensione dell'array dim
Verifica se div è un divisore di tutti i numeri presenti nell'array arr.
Restituisce uno dei seguenti valori:
1 se div è un divisore
0 se div non è un divisore.
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 32
Prerequisiti: funzioni con array
Scrivere la funzione MCD() che riceve in input
un array arr di numeri interi
la dimensione dell'array dim
Restituisce il massimo comun divisore di tutti i numeri presenti nell'array.
Scrivere un programma per verificare il corretto comportamento della funzione.
Nota:
Si faccia uso delle funzioni divisore() e massimo_array() già definite in precedenza.
────══════♦☆♦══════────
Esercizio 33
Prerequisiti: funzioni con array
Scrivere la funzione ordinato() che riceve in input
un array arr di numeri interi
la dimensione dell'array dim
Verifica se l'array contiene numeri ordinati in modo strettamente crescente.
Restituisce uno dei seguenti valori:
1 se l'array è ordinato
0 altrimenti.
Scrivere un programma per verificare il corretto comportamento della funzione.
────══════♦☆♦══════────
Esercizio 34
Scrivere la funzione arrotonda() che riceve in input numero F di tipo float e restituisce un intero ottenuto arrotondando il numero ricevuto in input.
Si rispettino le seguenti regole:
se la parte decimale è maggiore o uguale a 0.5 arrotondare all'intero successivo a F
se la parte decimale è minore a 0.5 troncare il valore di F
Scrivere un programma per verificare il corretto comportamento della funzione.
Nota:
La libreria math.h dispone di un'apposita funzione, lroundf(), che esegue l'arrotondamento richiesto. Per svolgere l'esercizio non utilizzare tale funzione.
Sito: 7ecnologie
Sezione: 08. C language
Capitolo: 98. Esercizi
Paragrafo: 07. Programmazione strutturata
Indice dei capitoli: 00. Risorse - 01 Ambiente di sviluppo - 02. Introduzione al C - 03. Le librerie - 04. Tutorial - 05. Esercizi svolti - 98. Esercizi
Indice dei paragrafi: 01. Introduttivi - 02. Quesiti strutturati - 03. Interpretazione del codice - 04. Diagrammi di flusso - 05. Array - 06. Tipi numerici - 07. Programmazione strutturata - 08. Caratteri e stringhe - 09. File - 10. Numeri casuali - 11. Riepilogativi - 12. Progettazione guidata