Consideriamo Il Seguente Programma.: 75 Minuti: Massimo 4 Facciate A4 (No Brutta, No Traccia)
Consideriamo Il Seguente Programma.: 75 Minuti: Massimo 4 Facciate A4 (No Brutta, No Traccia)
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.
int main(void) {
char p[]= "To C or not to C: that is the question.";
f(p);
printf ("%s\n", p);
return 0;
}
1
Esercizio 2 Consideriamo il seguente programma.
#include <stdio.h>
#include <string.h>
int main(void) {
int k=5;
char s[100];
scanf ("%s", s);
f(s,k);
printf("%s %d\n",s,k);
return 0;
}
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 }
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.