-
[1] Un anno bisestile è identificato da un intero maggiore di 1584 che sia
divisibile per 4 ma non per 100, oppure che sia divisibile per 400.
Scrivere un programma che chieda in input un anno e stampi BISESTILE se l'anno
inserito è bisestile, e NON BISESTILE altrimenti.
Soluzione:
bisestile.c
-
[2] Scrivere un programma che legga un valore di tipo float , uno di tipo char
e poi ancora uno di tipo float e infine:
- se il carattere letto è una delle quattro operazioni aritmetiche allora
calcoli e stampi il risultato della corrispondente operazione sui due
valori numerici;
-
se è un altro carattere allora stampi un messaggio d'errore.
Soluzione:
operazione.c
-
[3] Scrivere un programma potenze.c che legga un valore
intero positivo e restituisca la prima potenza di 2 maggiore o
uguale al valore letto. Compilare il codice sorgente per ottenere un
file eseguibile con nome Potenze2.
Soluzione:
potenze.c
-
[4] Scrivere un programma serie.c che legga una serie di
valori interi (terminata dal valore 0), e che restituisca in output la
somma, il valor medio, il massimo e il minimo dei valori letti
(escludendo dal computo il valore 0 che termina la serie). Compilare
il codice sorgente per ottenere un file eseguibile con nome Serie.
Attenzione: la media potrebbe non essere un valore intero!
Usare una variabile di tipo float per memorizzare il risultato
ad ogni nuova lettura. Usare la sequenza di escape %f per visualizzare il valore della
media.
Consiglio: Prevedere il caso della sequenza vuota (attenti
alla divisione per 0!).
Soluzione:
serie.c
-
[5] Un palindromo è un numero o una
frase di testo che si
può leggere allo stesso modo indipendentemente dalla direzione
della lettura (da sinistra verso destra oppure da destra verso
sinistra).
Scrivere un programma palindromo.c che legga un valore
intero di esattamente 5 cifre e determini se si tratta di un numero
palindromo oppure no. Compilare il sorgente nel file eseguibile CheckNum.
Soluzione:
palindromo.c
-
[6] Scrivere un programma che chieda all'utente di inserire un numero intero
compreso tra 0 e 10000 (estremi inclusi) e fornisca in output la cifra più
alta contenuta nel numero letto. Se il numero non è compreso
nell'intervallo specificato deve essere visualizzato un messaggio di errore.
Soluzione: cifraMassima.c
-
[7] Considerate le due seguenti espressioni
-
c = (a = 2) + (b = 4);
-
d = (printf("Uno strano comando \n")) * 2 + 4;
dove a, b, c e d sono variabili
di tipo intero.
Rappresentano comandi legali in C? In caso positivo, che
valore hanno le variabili dopo la loro esecuzione, supponendo che prima
valgano tutte 0 ?
Soluzione:
testing.c
-
[8] Scrivere un programma schedina.c che generi casualmente
due colonne per giocare la schedina del totocalcio di domenica
prossima. Fare in modo che i simboli 1 e X
siano equiprobabili,
mentre 2 abbia
probabilità del 20%. Compilare il codice sorgente
per ottenere un file eseguibile con nome vincente. Salvare la
stampa delle due colonne nel file colonne.txt
Per la generazione di numeri casuali, si
usi la funzione rand(
), parte della libreria stdlib.h (che va
importata). L'invocazione restituisce un numero decimale casuale
compreso tra 0 e MAX_RAND, che può variare a
seconda delle implementazioni.
La generazione è ovviamente solo pseudo-casuale. Per
variare il seme, ovvero la base del generatore
psudocasuale, si utilizza la funzione srand, che necassita di un
parametro di tipo unsigned. Spesso, tale parametro
è ottenuto mediante la funzione time, della libreria
time.h, con parametro NULL.
Ad esempio, per assegnare alla variabile intera numeroCasuale un numero casuale
intero compreso tra 0 e 5, si può
utilizzare l'istruzione
#include <stdlib.h>
#include <time.h>
...
srand(time(NULL));
numeroCasuale = rand( ) % 6;
|
Soluzione: schedina.c
|