Esercizi Di Programmazione C

ESERCIZI DI PROGRAMMAZIONE IN C
Per ogni esercizio è generalmente richiesto l’algoritmo risolutivo, dal quale poi ricavare la relativa
codifica in linguaggio C. Ricordare che un file sorgente in C deve essere salvato con estensione
c. In molti programmi è utile e necessario controllare opportunamente l’input dell’utente.
Ogni programma deve essere autodocumentato, ovvero deve comprendere la presenza di
opportuni commenti nelle parti più significative.
1.
Un gruppo di ragazzi vince un certo numero di gettoni in una sala giochi e decide di dividersi i
gettoni in parti uguali, lasciando il resto della divisione come riserva per l’intero gruppo. Scrivere un
programma che richiede all’utente il numero dei gettoni e il numero dei ragazzi e che scriva la
quota di gettoni spettanti per ragazzo e il numero di gettoni che avanzano.
2.
Sul prezzo di un prodotto viene praticato lo sconto del 10% se costa meno di 500 euro e del 20%
per prezzi superiori o uguali a 500 euro. Calcolare il prezzo da pagare.
3.
Scrivere un programma che calcola l’importo di prodotti in offerta 3 x 2 : se di un prodotto vengono
acquistati 3 pezzi, si deve pagare l’importo pari a 2 pezzi, mentre per quantità inferiori a 3 il prezzo
resta invariato. Si ipotizza che il prodotto non venga acquistato in quantità maggiori di 3.
4.
Scrivere un programma che acquisisce un numero intero positivo e scrive sullo schermo se il
numero è pari o dispari.
5.
Scrivere un programma che illustra il funzionamento di tutte le funzioni studiate presenti nella
libreria <math.h>.
6.
Scrivere un programma che acquisisce un numero intero positivo N e stampa sullo schermo N
asterischi, se il numero è minore o uguale a 10, oppure scrive impossibile in caso contrario.
7.
Dati in input N numeri, calcolare la loro somma e la loro media aritmetica.
8.
Dati in input una serie di N numeri, determinare il massimo e il minimo tra essi.
9.
Calcolare la somma dei primi 10 numeri interi successivi a un numero N fornito da tastiera.
10. Calcolare la somma dei primi N numeri pari successivi a un numero dato A.
11. Calcolare la somma dei quadrati dei primi N numeri interi.
12. Scrivere un programma che chiede all'utente di inserire da tastiera dei numeri interi, finché si è
riusciti a sommare 10 numeri pari. Alla fine si deve comunicare il risultato della somma.
13. Dato un elenco di N numeri, si devono scegliere quelli che sono maggiori di 10 e minori di 100.
Contare tali numeri e scrivere la loro somma.
14. Data una sequenza di numeri, contare quelli positivi e quelli negativi. Comunicare il numero dei
positivi e dei negativi, e comunicare la percentuale dei positivi e dei negativi rispetto al totale dei
numeri.
15. Inserito da tastiera un numero intero N, sommare i primi N numeri dispari e verificare che tale
somma è uguale al quadrato di N.
16. Scrivere un programma che scrive sullo schermo tutti i divisori di un numero intero positivo N e
conta quanti sono.
17. Scrivere un programma che stampa sullo schermo la tavola pitagorica dei primi dodici numeri
naturali.
18. Stabilire se un anno fornito da tastiera è bisestile oppure no. Si ricorda che un anno è bisestile se è
divisibile per 4 ma non per 100, fatta eccezione per gli anni divisibili per 400 che sono bisestili.
19. Scrivere un programma che stampa la tabella ASCII di base (caratteri aventi codice ASCII
compreso fra 32 decimale e 126 decimale). Suggerimento: utilizzare il tipo char e le specifiche di
formato %c e %d, che permettono di interpretare una variabile sia di tipo char che di tipo numerico.
In questo ultimo caso, il numero stampato è proprio il codice ASCII del carattere in oggetto.
20. Scrivere un programma che acquisisce un numero intero N compreso fra 32 e 126 e stampa sullo
schermo il carattere avente per codice ASCII il numero N.
21. Scrivere un programma che converte un numero intero positivo compreso fra 0 e 255 nel
corrispondente numero esadecimale.
22. Scrivere un programma che converte un numero esadecimale compreso fra 00h e FFh nel
corrispondente numero decimale.
23. Scrivere un programma che genera quattro numeri casuali differenti compresi fra 1 e 9.
24. Scrivere un programma che riduce ai minimi termini una frazione letta in input.
25. Scrivere un programma che, attraverso un menù di scelta a cinque voci (somma, differenza,
prodotto, divisione e uscita), consente di eseguire le operazioni fra due frazioni acquisite in input
mediante numeratore e denominatore. Le frazioni risultato devono essere ridotte ai minimi termini e
presentarsi nella classica forma matematica A / B.
26. Scrivere un programma che attraverso un menù di scelta permette di eseguire la conversione da
binario a decimale oppure la conversione da decimale a binario oppure di uscire.
27. Dati due numeri interi positivi, determinare il loro massimo comune divisore utilizzando l’algoritmo
di Euclide. (se a e b sono i due numeri ed r è il resto della divisione fra a e b, nel caso r sia nullo
allora il massimo comune divisore fra a e b è b, altrimenti si sostituisce a con b e b con r e si ripete
il passo precedente).
28. Scrivere un programma che, utilizzando il metodo di Gauss, calcola il giorno e il mese in cui cade
la Pasqua, dato l’anno in input.
29. Scrivere un programma che sviluppa il gioco “Indovina il numero”. Il giocatore immette di volta in
volta il valore scelto cercando, sulla base delle risposte fornite dal computer (numero troppo grande
oppure numero troppo piccolo), di indovinare il numero generato in modo casuale dal computer
stesso. Se non ci riesce in dieci tentativi l’utente ha perso e la sconfitta viene segnalata dal
programma.
30. Scrivere un programma che sviluppa il gioco “Lancio del dado”. Il giocatore, dopo aver definito il
numero di lanci prescelto e dichiarato se preferisce puntare sulle facce pari o dispari, osserva sul
video l’andamento del gioco, fino alla sua conclusione. Il programma, infatti, genera di volta in volta
un numero casuale compreso fra 1 e 6 e attribuisce a se stesso o al giocatore un punto a seconda
del valore uscito. Al termine, il programma mostra sullo schermo il punteggio del computer e del
giocatore e comunica con un messaggio il vincitore della partita.