Il 0% ha trovato utile questo documento (0 voti)
11 visualizzazioni4 pagine

Consideriamo Il Seguente Programma.: 75 Minuti: Massimo 4 Facciate A4 (No Brutta, No Traccia)

Caricato da

Nello
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
11 visualizzazioni4 pagine

Consideriamo Il Seguente Programma.: 75 Minuti: Massimo 4 Facciate A4 (No Brutta, No Traccia)

Caricato da

Nello
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 4

Programmazione I (Classe 1) – Preappello - 18.01.

2021
TEMPO PARTE TEORICA - appello completo: 75 minuti
NUMERO di fogli per la consegna: massimo 4 facciate A4 (no brutta, no traccia)
INDIRIZZO e-mail per la consegna: [email protected]
Cognome: Nome:
Matricola: Firma:

Svolgere gli esercizi giustificando ogni risposta. Alle risposte corrette ma non giustificate sarà
assegnato un punteggio di poco superiore allo zero.

Esercizio 1 Consideriamo il seguente programma.


#include <stdio.h>

void f(char *p) {


while (*p) {
i f ((’a’<=*p) && (*p<=’z’)) *p=*p-’a’ + ’A’;
p++;
}
}

int main(void) {
char p[]= "To C or not to C: that is the question.";
f(p);
printf ("%s\n", p);
return 0;
}

a) Indicare se il programma viene compilato correttamente

b) Indicare se il programma viene eseguito correttamente

c) Indicare il significato della funzione f

d) Indicare cosa viene stampato dal main.

1
Esercizio 2 Consideriamo il seguente programma.
#include <stdio.h>
#include <string.h>

void f(char *s, int k) {


int i=0;
while ((i < (strlen(s)/2)) && (k+=1)) {
i f (s[i] != s[strlen(s)-i-1]) {
k=0;
break;
}
i++;
}
printf("k= %d ",k);
}

int main(void) {
int k=5;
char s[100];
scanf ("%s", s);
f(s,k);
printf("%s %d\n",s,k);
return 0;
}

a) Indicare cosa fa la funzione f.

b) Cosa viene stampato se viene eseguito il main() e l’utente inserisce anna.

c) Cosa viene stampato se viene eseguito il main() e l’utente inserisce asta.

2
Esercizio 3 Consideriamo il seguente frammento di codice
i=0;
while (n>0) {
n/=10;
i++;
}

• Cosa rappresenta, rispetto al valore iniziale di n, il valore assunto da i alla fine del ciclo?

• Indicare il valore di i, alla fine del ciclo, per i seguenti valori iniziali di n: 267, 999, 33.

Esercizio 4 Siano i, j, k tre variabili intere. Indicare il significato dell’espressione i < j < k
e indicare il valore nel caso in cui i = 7, j = 10, k = 1.

3
Esercizio 5 Consideriamo il seguente programma
1 #include <stdio.h>
2 #define N 8
3
4 void f(int n, int a[ ]) {
5 int i, j, x;
6 for (i=0; i<n; i++) {
7 x=a[i];
8 for (j=i+1; j<n; j++) {
9 i f (a[j]>x) {
10 x=a[j];
11 a[j]=a[i];
12 a[i]=x;
13 }
14 }
15 }
16 }
17
18 int main(void){
19 int i, a[]={0,2,5,3,9,12,2,8};
20 f(N,a);
21 for (i=0;i<N; i++)
22 printf("%d ", a[i]);
23 printf("\n");
24 return 0;
25 }

a) Descrivere il significato della funzione f.

b) Scrivere cosa viene stampato dal main.

c) Scrivere come chiamare la funzione f nella riga 20 in modo che f venga eseguita solo
tra il secondo e il quinto elemento nell’array e cosa verrebbe stampato dalle linee 21-22
in questo caso.

Potrebbero piacerti anche