C algo td2
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:
#include <stdio.h>
#include <stdlib.h>
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;
}