02. Quesiti strutturati

Esercizio 1

Il programma presenta un errore, rilevabile già in fase di compilazione, che ne compromette il funzionamento.

Indicare quale risposta contiene la riga sulla quale occorre intervenire per correggere l'errore.

────══════♦☆♦══════────

Esercizio 2

Quali output produce il programma se sollecitato con i seguenti input?

Esecuzione a) input: 5

Esecuzione b) input: 12

Esecuzione c) input: -8

Esecuzione d): input -1

────══════♦☆♦══════────

Esercizio 3

Il programma acquisisce 5 numeri interi, ricerca il valore minimo e lo stampa a video.

In realtà se sollecitato con il seguente input

    2 7 5 8 9

stampa erroneamente il valore 0.

A cosa è dovuto questo errore?

────══════♦☆♦══════────

Esercizio 4

Nell'ipotesi che x=1 e y=0 indicare se la seguente condizione è verificata

(!x || !y) && (x>0)

────══════♦☆♦══════────

Esercizio 5

Indicare qual è l'output del programma


#include <stdio.h>

int main()

{

    int a=1, b=2, c=3;

    int A1, A2;

    if ((a || !b) && c)

        A1=1;

    else

        A1=0;

    if (!(a>c) && A1)

        A2=1;

    else

        A2=0;

    printf("%d", A1+A2);

    return 0;

}

────══════♦☆♦══════────

Esercizio 6

Indicare qual è l'output del programma


#include <stdio.h>

int main()

{

    int a=1, b=2, c=3;

    int A1, A2;

    if ((-4 || !b) && c)

        A1=0;

    else

        A1=1;

    if (c-b-a && A1)

        A2=1;

    else

        A2=0;

    printf("%d", A1+A2);

    return 0;

}

────══════♦☆♦══════────

Esercizio 7


Quali output produce il programma se sollecitato con i seguenti input?

Esecuzione a) input: 5 -5 5

Esecuzione b) input: 6 3 3

Esecuzione c) input: 4 4 4 

Esecuzione d): input 4 4 0




#include <stdio.h>

int main()

{

    int a, b, c, x;

    scanf("%d %d %d", &a, &b, &c);

    if ((a+b) && c)

        x=(a+b)/c;

    else if (!(a+b) && c)

        x=0;

    else {

        x=-1;

    }

    printf("%d", x);

    return 0;

}

────══════♦☆♦══════────


Esercizio 8


Quali output produce il programma se sollecitato con i seguenti input?

Esecuzione a) input: 5

Esecuzione b) input: 6

Esecuzione c) input: 9 

Esecuzione d): input 1

Esecuzione e): input 10




#include <stdio.h>

int main()

{

    int a, aa, aaa;

    scanf("%d", &a);

    if (a<0)

        a=-a;

    aa=a*a;

    aaa=a+a;

    if (aa<=aaa)

        printf("%d", aaa);

    else

        printf("%d", aa);

    return 0;

}

────══════♦☆♦══════────

Esercizio 9

Quali output produce il programma se sollecitato con i seguenti input?

Esecuzione a) input: 5 -5

Esecuzione b) input: 3 10

Esecuzione c) input: 15 5 

Esecuzione d) input: -3 7

Esecuzione e) input: -3 -3


#include <stdio.h>

int main()

{

    int x, y, z;

    scanf("%d %d", &x, &y);

    z=x+y;

    if (z) {

        x=y;

        y=z-x;

    }

    else {

        x=-x;

        y=-y;

    }

    printf("%d %d", x, y);

    return 0;

}

────══════♦☆♦══════────

Esercizio 10

Il programma presenta un errore, rilevabile già in fase di compilazione, che ne compromette il funzionamento.

Indicare quale risposta contiene la riga sulla quale il compilatore segnala l'errore.


────══════♦☆♦══════────

Esercizio 11


Il programma, su alcuni input, va in errore di run-time (in pratica, se eseguito su Windows, durante l'esecuzione si blocca mostrando il messaggio di errore "Il programma ha smesso di funzionare").

Indicare quale dei seguenti input provoca il malfunzionamento



#include <stdio.h>

int main()

{

    int x, y, z, k;

    scanf("%d %d", &x, &y);

    if(x>y && x!=0){

        z=x-y;

        z=(x+y+z)/(2*x);

    }

    else {

        z=x*y;

    }

    k=z/(z-1);

    printf("%d\n", k);

    return 0;

}

────══════♦☆♦══════────

Esercizio 12


Quale output produce il programma se sollecitato con i seguenti input?

Esecuzione a) input: 8 e 4

Esecuzione b) input 2 e 1




#include <stdio.h>

int main()

{

    int a, b, c;

    scanf("%d %d", &a, &b);

    if(a && !b && (a||b)){

        c = a*b;

    }

    else {

        c = a-b;

    }

    if (c>a)

        printf("%d\n", a/2);

    else    

        printf("%d\n", b/2);

    return 0;

}

────══════♦☆♦══════────

Esercizio 13


Individuare quale risposta contiene una corretta corrispondenza tra input e output.



#include <stdio.h>

int main()

{

    int x, y, z1, z2, k;

    scanf("%d %d", &x, &y);

    z1=x-y;

    z2=y-x;

    k=(x+x-z1)*(y+y-z2);

    

    printf("%d\n", k);

    return 0;

}

────══════♦☆♦══════────

Esercizio 14

Individuare quale risposta contiene una corretta corrispondenza tra input e output.


#include <stdio.h>

int main()

{

    int a, b, c, x;

    scanf("%d %d %d", &a, &b, &c);

    x=a+b+c;

    

    if (a>b || a>c)

        x=x-a;

    if (b>a || b>c)

        x=x-b;

    if (c>a || c>b)

        x=x-c;

        

    printf("%d\n", x);

    return 0;

}

────══════♦☆♦══════────

Esercizio 15

A fronte di quale input il programma scrive a video la parola "META"?


#include <stdio.h>

int main()

{

    int a, b, c, x;

    scanf("%d %d %d", &a, &b, &c);

    if (a<0)

        a=-a;

    if (b<0)

        b=-b;

    if (c<0)

        c=-c;

    x=a-b-c;

    if (!x)

        printf("META");

    return 0;

}

────══════♦☆♦══════────

Esercizio 16


Individuare quale risposta contiene una corretta corrispondenza tra input e output.


#include <stdio.h>

int main()

{

    int a, b, c;

    scanf("%d %d", &a, &b);

    if (a*b>0) {

        c=a-b;

        a=a-c;

        b=b+c;

    }

    else {

        c=b-a;

        b=b-c;

        a=a+c;

    }

    printf("%d %d\n", a, b);

    return 0;

}

────══════♦☆♦══════────

Esercizio 17


In quale caso il programma scrive a video la parola "META"?



#include <stdio.h>

int main()

{

    int x, y, z=2;

    scanf("%d %d", &x, &y);

    if (x-y>0)

        z=1;

    else if (x-y==0)

        z=0;

    if (z==2){

        if (y>=y-x)

            printf("META\n");

    }

    return 0;

}

────══════♦☆♦══════────

Esercizio 18


Individuare quale risposta contiene una ERRATA corrispondenza tra input e output.



#include <stdio.h>

int main()

{

    int x, y, a=0, b=0, c=0;

    scanf("%d %d", &x, &y);

    if (x-y>0)

        a=1;

    else if (x-y==0)

        b=1;

    else

        c=1;

    if (a>b && a>c)

        printf("%d\n", x-y);

    else if (b>a && b>c)

        printf("%d\n", x-x);

    else

        printf("%d\n", y-x);

    return 0;

}

────══════♦☆♦══════────

Esercizio 19

Indicare su quale dei seguenti input il programma va in errore di run-time (in pratica, se eseguito su Windows, durante l'esecuzione si blocca mostrando il messaggio di errore "Il programma ha smesso di funzionare").



#include <stdio.h>

int main()

{

    int x, y, z;

    scanf("%d %d", &x, &y);

    if (x>y && x!=0){

        z=x-y;

        z=(x+y+z)/(2*x);

        z=z/(z-1);

        printf("%d\n", z);

    }

    else {

        z=x*y;

        printf("%d\n", z);

    }

    return 0;

}