Nuovo Esercizio Supponendo che: all operazione somma corrisponda il numero 1 all operazione differenza corrisponda il numero 2 all operazione modulo corrisponda il numero 3 all operazione divisione intera corrisponda il numero 4 Scrivere un programma che: Legga due numeri Legga l operazione da svolgere descritta dal numero corrispondente Svolga l operazione richiesta Stampi l operazione scelta, i due argomenti ed il risultato N.B. Si faccia attenzione che la divisione per zero provoca un errore fatale. Esempio (traccia di esecuzione supponendo che il programma eseguibile si chiami mioprg): $ mioprg Dammi due interi: 2 30 Scegli una delle seguenti operazioni: 1. Somma 2. Differenza 3. Modulo 4. Divisione intera 1 La somma di 12 e 30 è 42 Esercizio 2.15 Indicare l'ordine di valutazione degli operatori in ognuna delle seguenti istruzioni C e mostrare il valore di x dopo che ognuna delle istruzioni sarà stata eseguita A. x = 7 + 3 *6 / 2-1; B. x = 2 % 2 + 2-2 / 2; C. x = (3 * 9 * (3 + (9 * 3 /(3)))); A. x = 7 + 3 *6 / 2-1 x =15 3 1 2 4 B. x = 2 % 2 + 2-2 / 2; x =1 1 3 4 2 C. x = (3 * 9 * (3 + (9 * 3 /(3)))); x =324 7 8 9 5 6 2 3 4 1 Esercizio 2.16 Scrivere un programma che chiede all'utente di immettere due numeri, ottenga i numeri dall'utente e visualizzi la loro somma, prodotto, differenza, quoziente e modulo. /* somma, prodotto, differenza, quoziente e modulo di due interi (CON ERRORE SU QUOZIENTE)*/ 1
int integer1, integer2; printf("inserisci due interi:"); scanf("%d%d", &integer1, &integer2); printf("la somma è: %d\n ", integer1 + integer2); printf("ilprodotto è: %d\n ", integer1 * integer2); printf("la differenza è: %d\n ", integer1 - integer2); printf("il quozinte è: %d\n ", integer1 / integer2); printf("il modulo è: %d\n ", integer1 % integer2); Esercizio 2.17 Scrivere un programma che visualizzi i numeri da 1 a 4 sulla stessa riga. Scrivere il programma utilizzando i seguenti metodi: a) Usando una istruzione printf senza specifiche di conversione b) Usando una istruzione printf con quattro specifiche di conversione c) Usando quattro istruzioni printf. a) /* Visualizzazione dei numeri da 1 a 4 sulla stessa riga senza specifiche di conversione */ printf("1 2 3 4\n "); b) /* Visualizzazione dei numeri da 1 a 4 sulla stessa riga con quattro specifiche di conversione */ int x = 1; printf("%d %d % %d\n ", x, x+1, x+2, x+3); // printf("%d %d % %d\n ", 1, 2, 3, 4); seconda soluzione c) /* Visualizzazione dei numeri da 1 a 4 sulla stessa riga con quattro istruzioni printf */ 2
printf("1 "); printf("2 "); printf("3 "); printf("4 \n"); Esercizio 2.20 Scrivere un programma che legga il raggio di un cerchio e visualizzi il diametro, la circonferenza e l'area dello stesso. Usate il valore costante 3,14159 per π. Eseguite ognuno di questi calcoli all'interno della/e istruzione/i printf e usate la specifica di conversione %f (numeri in virgola mobile, numeri che possono contenere dei decimali). /* calcolo del diametro, della circonferenza e dell'area di un cerchio di raggio r */ ray); int ray; printf("inserisci il raggio:\t"); scanf("%d ", &ray); printf("il diametro e : %d\n", 2 * ray); printf("la circonferenza e : %f\n", 2 * 3.14159 * printf("l'area e : %f\n", 3.14159 * ray * ray); Esercizio 2.23 Scrivere un programma che legga cinque interi e quindi determini e visualizzi quelli che, all'interno del gruppo, sono il maggiore e il minore. Usate soltanto le tecniche di programmazione apprese finora. /* minimo e massimo tra cinque interi */ int n1, n2, n3, n4, n5, min, max; printf("inserisci cinque numeri interi:\t"); scanf("%d%d%d%d%d", &n1, &n2, &n3, &n4, &n5); if(n1 <= n2) min = n1; max = n2; if(n2 < n1) 3
min = n2; max = n1; if(n3 < min) min = n3; if(n3 > max) max = n3; if(n4 < min) min = n4; if(n4 > max) max = n4; if(n5 < min) min = n5; if(n5 > max) max = n5; printf("il minimo e : %d\n", min); printf("il massimo e : %d\n", max); Esercizio 2.24 Scrivere un programma che legga un intero e determini e visualizzi se sia pari o dispari (Usate l'operatore modulo). /* pari o dispari */ int x; printf("inserisci un numero intero:\t"); if (x % 2 == 0) printf("%d e un numero pari", x); if (x % 2 == 1) printf("%d e un numero dispari", x); 4
Esercizio 2.26 Scrivere un programma che legga due interi e determini e visualizzi se il primo sia un multiplo del secondo (Usate l'operatore modulo). /* verifica se un numero è multiplo dell'altro */ int integer1, integer2; printf("inserisci due interi:\t"); scanf("%d%d", &integer1, &integer2); if (integer1 % integer2 == 0) printf("%d e multiplo di %d ", integer1, integer2); if (integer1 % integer2!= 0) printf("%d non e multiplo di %d ", integer1, integer2); Esercizio 2.30 Scrivere un programma che prenda in input un numero di cinque cifre, lo spezzetti nelle sue singole cifre e le visualizzi ognuna separata dall'altra da tre spazi. /* spezzetta un numero di cinque cifre */ int x, n1, n2, n3, n4, n5; printf("inserisci un numero di cinque cifre:\t"); if (x < 10000) printf("hai digitato meno di cinque cifre\n"); printf("riprova:"); if (x > 99999) printf("hai digitato più di cinque cifre\n"); printf("riprova:"); n1 = x / 10000; x = x % 10000; n2 = x /1000; x = x % 1000; 5
n3 = x /100; x = x % 100; n4 = x /10; n5 = x %10; printf("%d %d %d %d %d ", n1, n2, n3, n4, n5); Esercizio 2.30 Usando soltanto le tecniche che avete appreso finora, scrivete un programma che calcoli i quadrati e i cubi dei numeri da 0 a 10 e utilizzi le tabulazioni per visualizzare la seguente tabella di valori: numero quadrato cubo 0 0 0 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000 /* tabella con quadrati e cubi */ printf("numero \t quadrato \t cubo \n"); printf ("0 \t %d \t\t %d \n", 0*0, 0*0*0); printf ("1 \t %d \t\t %d \n", 1*1, 1*1*1); printf ("2 \t %d \t\t %d \n", 2*2, 2*2*2); printf ("3 \t %d \t\t %d \n", 3*3, 3*3*3); printf ("4 \t %d \t\t %d \n", 4*4, 4*4*4); printf ("5 \t %d \t\t %d \n", 5*5, 5*5*5); printf ("6 \t %d \t\t %d \n", 6*6, 6*6*6); printf ("7 \t %d \t\t %d \n", 7*7, 7*7*7); printf ("8 \t %d \t\t %d \n", 8*8, 8*8*8); printf ("9 \t %d \t\t %d \n", 9*9, 9*9*9); printf ("10 \t %d \t\t %d \n", 10*10, 10*10*10); 6