Vous êtes sur la page 1sur 9

Exercice 1

#include <stdio.h>
unsigned long strlength(char * str)
{
unsigned long len=0;
while(str[len]!=0)//ou while(str[len]) /iugt/ou while(*str++)
{
len++;
}
return len;
}

int main()
{
char str [50];
printf("saisire une chaine de caractéres \n");
scanf("%s",str);
printf("la longueur de la chaine \"%s \"est %lu",str, strlength(str));
}

Exercice 2
#include <stdio.h>
#include <string.h>
short strcomp(char * str1, char * str2)
{
unsigned long position=0;
while((str1[position]!='\0')&&(str2[position]!='\0')&&str1[position]==str2[position])
{
position++;
}
if (str1[position]-str2[position]>0)
return 1;
else if (str1[position]-str2[position]<0)
{
return -1;
}
return str1[position]-str2[position];
}
int main()
{
char str1 [50], str2 [50];
printf("saisire une chaine de caractéres \n");
scanf("%s",str1);
printf("saisire une chaine de caractéres \n");
scanf("%s",str2);
printf("ordre lexicographique entre la chaine %s et la chaine %s est
%d",str1,str2,strcomp(str1,str2));
}

Exercice 3
#include <stdio.h>
#include <string.h>
void delspace(char *s)
{
int i,j;
i=0;
while(s[i]!='\0')
{
if(s[i]==' ')
{
j=i+1;
while(s[j]!='\0')
{
s[j-1]=s[j];
j++;
}
s[j-1]='\0';
}
else
{i++;}
}
}
int main()
{
char s[] = "bonjour à tous";
printf("la chaine sans suppression des espaces et des tabulationss \n");
printf("s = %s\n", s);
delspace(s);
printf("la chaine aprés suppression des espaces et des tabulationss \n");
printf("s = \"%s\"\n", s);
}

Exercice 4
#include <stdio.h>

int strsubs(char * str, char *mot, int pos, int len)


{
int i; // Position dans str
int j; // Position dans motif

// On vérifie que la chaîne str contient au moins pos caractères


// Sinon aucun caractère n'est substitué
if (strlen(str)-1<pos)
{printf("la chaine ne contient pas pos = %d caractères \n",pos);
return 0;}

// Subtitution/
// La substition s'arrête si
// - la fin de la chaîne str est atteinte,
// ou - la fin de la chaîne motif est atteinte,
// ou - len caractères ont déjà été substitués.
j=0;
i=pos;
while(str[i] != '\0' && mot[j] != '\0' && j < len)
{
str[i] = mot[j];
i++, j++;

return j; // Nombre de caractères substitués


}

int main()
{
char s [] = "bonjour à tous";
strsubs(s, "soirée", 3, 4);
printf("s = \"%s\"\n", s);

return 0;

}Exercice 5
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
void strreverse(char *s)
{
char tmp;
unsigned int n;
int i;
n=strlen(s);
for (i=0; i <(n)/2; i++)
{
tmp=s[i];
s[i]=s[n-1-i];
s[n-1-i]=tmp;
}
}

void palindrome(char * s)
{
char* t;
short b;
unsigned int n;

n=strlen(s);
t=(char*)malloc(n*sizeof(char));
strcpy(t,s);
strreverse(s);

b=strcmp(t,s);
if (b==0)
{printf("Cette chaîne est un palindrome \n");}
else
{printf("Cette chaîne n'est pas un palindrome \n");}

}
int main()
{
char s[] = "bonjour à tous";
strreverse(s);
printf("s = \"%s\"\n", s);
char pal[]="non";
palindrome(pal);
return 0;
}
Exercice 6
#include<stdio.h>
int mois_jours[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char *mois[]=
{
" ",
"\n\n\n\tJanvier",
"\n\n\n\tFevrier",
"\n\n\n\tMars",
"\n\n\n\tAvril",
"\n\n\n\tMai",
"\n\n\n\tJuin",
"\n\n\n\tJuillet",
"\n\n\n\tAout",
"\n\n\n\tSeptembre",
"\n\n\n\tOctobre",
"\n\n\n\tNovembre",
"\n\n\n\tDecembre"
};

/* Cette fonction renvoie le code du premier jour de l'année.


si le code de jour est 1, le premier jour est Lundi */

int code_premier_jour(int annee)


{
int codejour;
int x, y, z;

x = (annee - 1) / 4;
y = (annee - 1) / 100;
z = (annee - 1) / 400;
codejour = (annee + x - y + z) %7;
return codejour;
}

void fevrier_jours(int annee)


{
/*multiple de 4 mais pas de 100 rq: 1700, 1800 et 1900 n'était pas bissextiles
ou
multiple de 400*/
if(annee% 4 == 0 && annee%100 != 0 || annee%400 == 0)
mois_jours[2] = 29;
else
mois_jours[2] = 28;
}

void afichage_calendrier(int annee, int codejour)


{
int m, j;
for ( m= 1; m <= 12; m++ )
{
printf("%s", mois[m]);
printf("\n\n di lu mar me je ve sa\n" );
/*Pour imprimer la première date à la bonne position, utilisez un peu d'espace
pour déplacer le curseur sur l'emplacement correct pour imprimer en premier
date sous le nom du jour propre */
for ( j = 1; j <= 1 + codejour * 4; j++ )
{
printf(" ");
}

/* Boucle for du jour 1 au dernier jour du mois, pour imprimer toutes les dates
d'un mois*/
for ( j = 1; j <= mois_jours[m]; j++ )
{
printf("%2d", j );

/* Vérifier si avant samedi, sinon commencer la ligne suivante à partir


de dimanche.*/
if ( ( j + codejour ) % 7 > 0 )
printf(" " );
else
printf("\n " );
}
/* position de debut pour le mois prochain, selon le code jour*/
codejour= ( codejour + mois_jours[m] ) % 7;

}
}
int main()
{
int annee, codejour;
printf("Veuillez saisir une année à quatre chiffres, {Exemple} 2020: ");
scanf("%d", &annee);
codejour = code_premier_jour(annee);
fevrier_jours(annee);
afichage_calendrier(annee, codejour);
printf("\n");
return 0;
}

Vous aimerez peut-être aussi