contenu
Voici quelques exercices de base, adaptés aux débutants en langage C !
coder un
Quelle est la sortie du programme suivant ?
//下列程序的输出结果是?
#include <stdio.h>
int main()
{
int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c++;
printf("c=%d\n",c); // c= 2
}
简析
: else dans cet exemple doit correspondre à if(b<0).
Cependant, comme la condition a<b est fausse, printf("c=%d\n",c); est exécuté directement
coder deux
//执行以下程序后,变量a、b、c的值分别是?
#include <stdio.h>
int main()
{
int x=10,y=9;
int a,b,c;
a = (--x == y++)? --x : ++y; //--x即9, y++即9,所以直接执行?后边的,继续--x,即a=8
b = x++;//执行x++,故b=8
c=y;//y先使用为9,后自加为10,故c=10。
printf("a=%d, b=%d, c=%d\n",a,b,c);
return 0;
}
sortir:
coder trois
Lorsque vous saisissez 9 et appuyez sur Entrée, quelle est la sortie du programme suivant ?
//当输入9并且回车,那么下列程序的输出结果是?
#include <stdio.h>
int main(){
int a;
scanf("%d",&a);
putchar('\n');
if(a++<9) printf("%d\n",a);
else printf("a-- = %d\n",a--);
//测试
//printf("a=%d\n",a);
}
test:
La réponse est 10.
Analyse : En raison de a++, a=10 est obtenu, ce qui ne satisfait pas a++<9, donc l'instruction après le reste est exécutée. À ce stade, faites attention à la sortie d'impression de a–, puis a– doit être utilisé en premier et puis décrémenté, donc a– La sortie devrait être 10.
À ce stade, vous pouvez tester la valeur de a :
//测试
printf("a=%d\n",a);
Regardez, a est 9 à ce stade.
Code 4 : Que se passe-t-il lorsque le commutateur est simplement appliqué (étendu) sans interruption ?
//switch应用:运行下述程序后的输出结果是?
#include <stdio.h>
int main()
{
int x=1,a=0,b=0;
switch(x){
case 0: b++; //注意这里没有case!
case 1: a++;
case 2: a++; b++;
}
printf("a=%d,b=%d\n",a,b); //a=2,b=1
}
Réponse :
分析
: Puisqu'il n'y a pas de rupture après le premier cas, mais qu'il n'y a pas de correspondance pour le cas 0, l'instruction n'est pas exécutée. Continuez à faire correspondre le cas 1 ci-dessous et trouvez qu'il peut être mis en correspondance, alors obtenir un ++ est 1.
Notez qu'il n'y a pas de pause après le cas 1, puis le cas 2 suivant sera exécuté, c'est-à-dire que, quel que soit le nombre de cas n, l'instruction suivante sera exécutée et le jugement de savoir si les conditions derrière le cas correspondent sera n'est plus exécuté à moins qu'une rupture ne se produise.
Vous pouvez voir l'effet en modifiant un peu le code :
//对于上面的测试
#include <stdio.h>
int main()
{
int x=1,a=0,b=0;
switch(x){
case 0: b++;
case 1: a++; break;//那么这里加了个break,看看效果如何?
case 2: a++; b++;
}
printf("a=%d,b=%d\n",a,b); //a=2,b=1
}
Sortie :
分析
: On peut voir qu'après l'exécution de a++, la valeur de a devient 1, et l'instruction switch est sautée par break, et case2 n'est pas exécuté, alors la valeur de b reste inchangée et reste 0.
Allez-y, modifiez le code et testez-le :
//继续修改,然后测试
#include <stdio.h>
int main()
{
int x=1,a=0,b=0;
switch(x){
case 0: b++;
case 1: a++;
case 2: a++; b++;
case 100:printf("这是测试呀!\n");
case 99:printf("哈哈哈!\n");
case 66:printf("加油!!\n");
}
printf("a=%d,b=%d\n",a,b); //a=1,b=0
}
On peut voir que lorsque le cas 1 est satisfait, sinon break
, alors les instructions suivantes seront exécutées et ne seront plus mises en correspondance :
dans le code ci-dessus, il en va de même pour l'ajout de l'instruction par défaut :
default:printf("这是default语句!\n");
—————————————————————————————————————————
C'est pour l'instant, le réexamen la liste est sortie.