• Non ci sono risultati.

Esercizi Svolti Linguaggio C

N/A
N/A
Protected

Academic year: 2021

Condividi "Esercizi Svolti Linguaggio C"

Copied!
28
0
0

Testo completo

(1)

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; }

(2)

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; }

(3)

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"); }

(4)

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");

(5)

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 Prezzo al metro quadro Centro € 1.500

Zona1 € 1.200 Zona2 € 1.400 Zona3 € 1.300 Periferia € 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;

(6)

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; }

(7)

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;

(8)

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");

(9)

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; }

(10)

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");

(11)

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; }

(12)

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; }

(13)

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; }

(14)

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; }

(15)

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);

(16)

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; }

(17)

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]);

(18)

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);

(19)

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");

(20)

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; }

(21)

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

(22)

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");

(23)

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;

(24)

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; }

(25)

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; }

(26)

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; }

(27)

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; }

(28)

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; }

Riferimenti

Documenti correlati

[r]

12.13 Un anello a fattorizzazione unica ` e un anello con la propriet` a che ogni elemento si pu` o scrivere in modo unico come prodotto di elementi irriducibili.. Per trattare

Se possibile scrivere n come somma di tre quadrati.. Se possibile scrivere n come somma di

%vettore binario Buguali= vettore==x Bmaggiori= vettore&gt;x Bminori= vettore&lt;x. %valore

SOLUZIONI degli esercizi sui NUMERI

[r]

(e) se si sa che è stata estratta una pallina che reca un multiplo di 3, quanti sono adesso gli eventi possibili nella estrazione di una pallina dall’urna?. (f) qual è la

CERCHIA IN AZZURRO I NUMERI ESTRATTI PARI ED IN ROSA I NUMERI ESTRATTI DISPARI.