Quelles sont les valeurs successivement prises par a, dans chacune des expressions suivantes :
#include<stdio.h>
main()
{
int a,n,p,q;
n=8;
p=13;
q=29;
a=n + p / q;
a=n + q / p;
a=(n + q) / p;
a=n + p % q;
a=n + q % p;
a=(n + q) % p;
a=n + p / n + p;
a=(n + p) / (n + p);
}
Solution :
n + p / q = 8
n + q / p = 10
(n + q) / p = 2
n + p % q = 21
n + q % p = 11
(n + q) % p = 1
n + p / n + p = 22
(n + p) / (n + p) = 1
Soient les instructions suivantes :
int n,p;
float x;
n=10;
p=7;
x=2.5;
Donnez le type et la valeur des expressions suivantes :
(1) x + n % p
(2) x + n / p
(3) (x + n) / p
(4) 5. * n
(5) (n + 1) / n
(6) (n + 1.0) / n
Solution :
(1) float : 5.5
(2) float : 3.5
(3) float : 1.7857 (12.5 / 7)
(4) float : 50
(5) int : 1
(6) float : 1.1
Ecrivez un programme qui lit deux nombres flottants et qui les affiche dans l'ordre croissant. On pourra proposer deux solutions :
a) l'une n'utilisant pas d'autres variables que celles prévues pour les deux nombres.
Solution :
#include<stdio.h>
main()
{
float x,y;
printf("donnez deux nombres : ");
scanf("%e%e",&x,&y);
printf("nombres ordonnés par valeurs croissantes\n");
if (x<y) printf ("%e %e",x,y);
else printf("%e %e",y,x);
}
b) l'autre utilisant une variable supplémentaire.
Solution :
#include<stdio.h>
main()
{
float x,y,z;
printf("donnez deux nombres : ");
scanf("%e%e",&x,&y);
if (x>y)
{
z=x;
x=y;
y=z;
}
printf("nombres ordonnés par valeurs croissantes\n%e
%e",x,y);
}
Ecrivez un programme qui lit le rayon d'un cercle et qui demande à
l'utilisateur :
- s'il souhaite en obtenir le périmètre ; si la réponse est positive,
celui-ci sera calculé et affiché.
- s'il souhaite en obtenir l'aire ; si la réponse est positive, celle-ci
sera calculée et affichée.
Solution :
#include<stdio.h>
main()
{
float rayon,perim,aire;
float pi=3.1415926;
char rep;
printf("donnez le rayon : ");
scanf("%e",&rayon);
printf("voulez vous le périmètre (O/N)
?");
scanf(" %c",&rep);
if (rep=='O')
{
perim=2*pi*rayon;
printf("périmètre
: %e\n",perim);
}
printf("voulez vous l\'aire (O/N) ? ");
scanf(" %c",&rep);
if (rep=='O')
{
aire=pi*rayon*rayon;
printf("aire :
%e\n",aire);
}
}
Attention, les espaces précédant les codes de format %c sont indispensables. Si, notamment, vous oubliez le premier, c'est le caractère de validation de la valeur numérique précédente qui sera lu en guise de réponse et qui, ici, sera interprété comme une réponse négative.
Ecrivez un programme qui lit trois nombres entiers et qui précise s'ils sont ou non rangés par ordre croissant strict.
Solution :
#include<stdio.h>
main()
{
int a,b,c;
printf("donnez trois nombres entiers :\n");
scanf (%d%d%d",&a,&b,&c);
if ((a<b) && (b<c)) printf ("vos
nombres sont rangés par valeurs croissantes");
else printf ("vos nombres ne sont pas
rangés par valeurs croissantes");
}
Quelles seront les valeurs des variables a, b et c, après l'exécution de chacune des instructions suivantes :
#include<stdio.h>
main()
{
int a,b,c;
a=5;
b=3;
c=a+b;
a=2;
c=b-a;
}
Solution :
a
b c
-----------------------
a=5 5
? ?
b=3 5
3 ?
c=a+b 5 3
8
a=2 2
3 8
c=b-a 2 3
1
Qu'obtiendra-t-on dans les variables a et b, après exécution des instructions suivantes :
#include<stdio.h>
main()
{
int a,b;
a=5;
b=a+4;
a=a+1;
b=a-4;
}
Solution :
On obtiendra la valeur 6 dans a et la valeur 2 dans b.
a) qu'obtiendra-t-on dans les variables n1 et n2, après exécution des instructions suivantes :
#include<stdio.h>
main()
{
int n1,n2;
n1=5;
n2=7;
n1=n2;
n2=n1;
}
Solution :
On obtiendra la valeur 7, à la fois dans n1 et dans n2.
b) même question avec les instructions :
#include<stdio.h>
main()
{
int n1,n2;
n1=5;
n2=7;
n2=n1;
n1=n2;
}
Solution :
On obtiendra la valeur 5, à la fois dans n1 et dans n2.
Soient trois variables a, b et c. Ecrivez les instructions permutant leurs valeurs, de sorte que la valeur de a passe dans b, celle de b dans c et celle de c dans a. On utilisera une variable supplémentaire.
Solution :
#include<stdio.h>
main()
{
int a=1,b=2,c=3; /*
on affecte des valeurs aux trois variables */
int d; /* on déclare
une variable qui servira à la permutation */
d=c; /*
on stocke dans cette variable la valeur de c pour ne pas la perdre pendant
la permutation */
c=b; /*
on affecte la valeur de b dans c */
b=a; /*
on affecte la valeur de a dans b */
a=d; /*
on affecte la valeur de c dans a, en se servant de la variable temporaire
*/
}