C algo td2

De The Linux Craftsman
Aller à la navigation Aller à la recherche


Exercice 1

Déroulez sous la forme d’un tableau le programme suivant :

VAR
    a : entier
DEBUT
    a <- 1
    TantQue (a < 4) Faire
        Ecrire a
        a <- a + 1
    FinTantQue
FIN

Afficher la solution:

int main(){
    int i, a = 1;
    int tab[3];
    while(a < 4){
        tab[i] = a;
        a++;
        i++;
    }
    for (i=0; i<3; i++){
        printf("%d \n", tab[i]);
    }
    return 0;
}

Exercice 2

Déroulez sous la forme d’un tableau le programme suivant :

VAR
    a, b : entiers
DEBUT
    a <- 1
    b <- 11
    Repeter
        b <- b - 4
        a <- a + 1
    TantQue (b >= 0)
    Ecrire a, b
FIN

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a = 1, b = 11, y = 0, z = 0;
    int tab_a[3], tab_b[3];
    do{
       a++;
       b -= 4;
       tab_a[y] = a;
       tab_b[y] = b;
       y++;
    }while (b>=0);
    for(z = 0; z < y; z++){
        printf("a = %d et b = %d\n", tab_a[z], tab_b[z]);
    }
    return 0;
}

Exercice 3

Déroulez sous la forme d’un tableau le programme suivant :

VAR
    a, b, n : entiers
    DEBUT
    Lire n
    a <- 5
    b <- 2
    Pour b De 1 A n Faire
        a <- a * b
        b Suivant
    FinPour
    Ecrire a, b
FIN

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a = 5, b = 2, n = 0, z = 0;
    printf("Entrez la taille du tableau: \n");
    scanf("%d", &n);
    int tab_a[n], tab_b[n];
    for(b = 1; b < n; b++){
       a = a*b;
       tab_a[z] = a;
       tab_b[z] = b;
       z++;
    }
    for(b = 0; b <= z; b++){
        printf("a = %d et b = %d\n", tab_a[b], tab_b[b]);
    }
    return 0;
}

Exercice 4

Écrire un programme qui affiche des étoiles selon divers modes:

  • n étoiles sur la même ligne;
  • n étoiles en allant à la ligne à chaque fois

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i = 0, n;
    char x = 'n';
    printf("Doit-on sauter une ligne ? (O/n) ");
    scanf("%c", &x);
    printf("Combien voulez-vous d'étoile ? ");
    scanf("%d", &n);
    for(i = 0; i < n; i++){
        printf("*");
        if(x == 'O'){
            printf("\n");
        }
    }
    return 0;
}

Exercice 5

On souhaite réaliser un programme qui permet de saisir un nombre positif. Une vérification sera effectuée afin de refuser les nombres négatifs:

Saisissez un nombre positif : -5
Saisissez un nombre positif : -3
Saisissez un nombre positif : 2
Le nombre saisi est 2.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a = -1;
    while(a < 0){
        printf("Saisissez un nombre positif : ");
        scanf("%d", &a);
        if(a > 0){
            printf("Le nombre saisi est %d", a);
        }
    }
    return 0;
}

Exercice 6

On souhaite améliorer le programme précédent afin que le message ne soit pas le même lors de la demande suite à une erreur de saisie:

Saisissez un nombre positif : -5
Saisie incorrecte, recommencez votre saisie : -3
Saisie incorrecte, recommencez votre saisie : 2
Le nombre saisi est 2.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a = -1;
    printf("Saisissez un nombre positif : ");
    while(a < 0){
        scanf("%d", &a);
        if(a > 0){
            printf("Le nombre saisi est %d", a);
        }else{
            printf("Saisie incorrecte, recommencez votre saisie : ");
        }
    }
    return 0;
}

Exercice 7

On souhaite réaliser un programme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la réponse convienne.

En cas de réponse supérieure à 20, on fera apparaître un message : « Plus petit ! », et inversement, « Plus grand ! » si le nombre est inférieur à 10.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a;
    while(a < 10 || a > 20){
        printf("Saisissez un nombre entre 10 et 20 : ");
        scanf("%d", &a);
        if(a > 20){
            printf("Plus petit !\n");
        }else if (a < 10){
            printf("Plus grand !\n");
        }else{
            printf("Le nombre est: %d", a);
        }
    }
    return 0;
}

Exercice 8

Écrire un programme qui demande un nombre de départ, et qui calcule la somme des entiers jusqu’à ce nombre.

Par exemple, si l’on entre 5, le programme doit calculer : 1 + 2 + 3 + 4 + 5 et afficher 15.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, i, res = 0;
    printf("Saisissez un nombre: ");
    scanf("%d", &a);
    for(i = 1; i <= a; i++){
        res += i;
    }
    printf("Le résultat est: %d", res);
    return 0;
}

Exercice 9

Écrire un programme qui demande successivement 5 nombres à l’utilisateur, et qui indique lequel de ces nombres est le plus grand.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, i, res = 0;
    for(i = 0; i < 5; i++){
        printf("Saisissez le nombre %d: ",i+1);
        scanf("%d", &a);
        if(res < a){
            res = a;
        }
    }
    printf("Le plus grand nombre est: %d", res);
    return 0;
}

Exercice 10

Modifiez ensuite le programme pour qu’il affiche aussi la position de ce nombre dans la séquence de nombres saisis.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, i, res = 0, index;
    for(i = 0; i < 5; i++){
        printf("Saisissez le nombre %d: ",i+1);
        scanf("%d", &a);
        if(res < a){
            res = a;
            index = i+1;
        }
    }
    printf("Le plus grand nombre est: %d en position %d", res, index);
    return 0;
}

Exercice 11

Réécrire le programme précédent en prenant en compte cette fois-ci que le nombre de nombres saisis n’est pas connu par avance.

L’utilisateur arrête la saisie en entrant la valeur zéro.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, i=1, res = 0, index;
    while (a != 0){
        printf("Saisissez le nombre %d: ",i);
        scanf("%d", &a);
        if(res < a){
            res = a;
            index = i;
        }
        i++;
    }
    printf("Le plus grand nombre est: %d en position %d", res, index);
    return 0;
}