Boucles et branches (résumé des connaissances)
- 1. si déclaration
- 2. instruction de commutation
- 3. pour la boucle
- 4. boucle while
- 5. faire...en boucle
1. si déclaration
1. Branche unique if instruction
instruction if (expression)
;
(1)Exemple de code
if(a==1)
printf("梦");
(2)Processus d'exécution
Sémantique : l'expression est évaluée en premier, et si l'expression est "true", l'instruction est exécutée ; sinon, l'instruction n'est pas exécutée et l'instruction suivante de l'instruction if est exécutée directement .
(3)Attention
Il ne peut y avoir qu'une seule instruction dans une seule branche if . S'il y a plusieurs instructions, elles doivent être placées entre accolades .
Exemple de code :
#include<stdio.h>
int main()
{
int a=0;
int b=1;
if(a==1)
if(b==1)
printf("梦");
else
printf("渊");
return 0;
}
Le résultat de l'exécution est vide :
Explication : Le code suivant est généralement une instruction à une seule branche (la marque de fin de l'instruction est " ; ") :
if(a==1)
if(b==1)
printf("梦");
Cependant, dans l'exemple de code, else est associé à if(b==1) pour former une instruction if-else ; donc l' instruction if(a==1) est le code suivant :
if(b==1)
printf("梦");
else
printf("渊");
L'exemple de code équivaut donc à :
#include<stdio.h>
int main()
{
int a=0;
int b=1;
if(a==1)
{
if(b==1)
printf("梦");
else
printf("渊");
}
return 0;
}
En combinaison avec l'organigramme ci-dessus, nous savons : lorsque if(a==1) est jugé faux , son instruction n'est pas exécutée et l'instruction suivante est exécutée directement , c'est-à-dire renvoie 0 ;
une fois le code exécuté, rien n'est imprimé, donc le résultat en cours d'exécution est vide
2. Instruction if à double branche (instruction if-else)
if (expression)
instruction 1 ;
else
instruction 2 ;
(1)Exemple de code
if(a==1)
printf("梦");
else
printf("渊");
(2)Processus d'exécution
3.Plusieurs succursales
if (expression)
instruction 1 ;
else if (expression 2)
instruction 2 ;
else if (expression 3)
instruction 3 ;
...
else
instruction n ;
(1)Exemple de code
if(a==1)
printf("梦");
else if(a==2)
printf("渊");
else if(a==3)
printf("wo");
else
printf("ya");
(2)Processus d'exécution
(3)Utiliser
Question :
Le code pour implémenter la fonction segmentée suivante est le suivant :
#include<stdio.h>
int main()
{
int x = 0;
scanf("%d", &x);
if (x >= 2)
printf("y=3\n");
else if (x > 0)
printf("y=%f\n", -1.0 / 2 * x);
else if (x >= -1)
printf("y=%d\n",2*x+2);
return 0;
}
Lors de l'écriture de else if (x > 0), de nombreuses personnes écriront else if (x > 0&&x < 2) , mais cela n'est pas nécessaire, car ce n'est que lorsque
if (x >=2) est faux, c'est-à-dire lorsque x< 2 Sinon, si (x > 0) sera exécuté , et il en va de même plus tard.
3. Imbrication des instructions if
(1) Laisser vide sinon
else est toujours associé au plus proche sans correspondance, quelle que soit la disposition du code
Regardez le morceau de code suivant :
#include<stdio.h>
int main()
{
int a=0;
int b=1;
if(a==0)
if(b==0)
printf("梦");
else
printf("渊");
return 0;
}
Le résultat de l'opération est abyss , pas dream , car else est associé à if(b==0)
(2) Plusieurs instructions if-else
Utilisez des accolades {} pour les séparer
Exemple de code :
#include<stdio.h>
int main()
{
int a=0;
int b=1;
if(a==1)
{
if(b==1)
printf("梦");
else
printf("ya");
}
else
printf("渊");
return 0;
}
4. Questions normatives
Lorsqu'il y a plusieurs instructions, il est préférable de les mettre entre accolades " {} ".
Par exemple:
if(a==1)
{
printf("梦");
printf("入");
}
else if(a==2)
{
printf("渊");
printf("底");
}
else if(a==3)
printf("wo");
else
printf("ya");
5. Autres questions nécessitant une attention particulière
(1) == et =
Regardez le morceau de code suivant :
#include<stdio.h>
int main()
{
int a=0;
if(a=1)
printf("梦");
else
printf("渊");
}
Le résultat de l'opération est un rêve , pas un abîme
. Parce que a=1 signifie que 1 est assigné à a, ce qui fait que l'expression est toujours vraie , et ce qui est imprimé est un rêve , pas un abîme
. Pour imprimer un abîme , vous devrait changer = en ==
==.jugement, et = signifieAffectation, ne l’écrivez pas mal.
2. instruction de commutation
switch(expression)
{
expression constante de cas 1 : instruction 1 ; break ;
expression constante de cas 1 : instruction 1 ; break;
...
expression constante de cas n : instruction n ; break ;
valeur par défaut : instruction n+1 ; break ;
}
1. Exemples de codes
(1)
#include<stdio.h>
int main()
{
int day=0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
default://默认值 可加可不加
printf("输入错误\n");
break;//这里的break可加可不加,但最好加上
}
return 0;
}
(2)
#include<stdio.h>
int main()
{
int month=0;
printf("输入月份:");
scanf("%d",&month);//int a=(month-1)/3;
switch((month-1)/3)//switch(a)
{
case 0:
printf("%d月是第1季度\n",month);
break;
case 1:
printf("%d月是第1季度\n",month);
break;
case 2:
printf("%d月是第1季度\n",month);
break;
case 3:
printf("%d月是第1季度\n",month);
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
2. Description
(1) L'expression après switch peut être n'importe quelle expression , comme indiqué dans l'exemple, mais sa valeur ne peut être queType entier, type caractère, type énumération; Si l'expression est trop longue, vous pouvez définir une autre variable pour représenter l'expression, voir exemple 2. Remarques
(2) Les valeurs des expressions constantes après chaque cas doivent être différentes les unes des autres , sinon elles entreront en conflit les unes avec les autres
( 3) Chaque cas et défaut L'ordre apparition n'affecte pas le résultat de l'exécution
(4) Plusieurs cas peuvent partager un ensemble d'instructions d'exécution
(5) L'instruction switch permet une utilisation imbriquée
L'exemple de code de (4) (modifié à partir de l'exemple 2) est le suivant :
#include<stdio.h>
int main()
{
int day=0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default://默认值 可加可不加
printf("输入错误\n");
break;//这里的break可加可不加,但最好加上
}
return 0;
}
3. pour la boucle
pour(expression1;expression2;expression3)Notez le point-virgule
{ Instruction du corps de la boucle ;
Les accolades peuvent être omises lorsqu'elles ne sont pas nécessaires
}
1. Processus d'exécution
Sémantique:
2. Exemples de codes
#include<stdio.h>
int main()
{
//也可写成下面这样,但是不建议这样写
int i,sum; //int sum;
sum=0; //sum=0;
for(i=1;i<4;i++) //for(int i=1;i<4;i++)
{
sum=sum+i;
printf("%d\n",sum);
}
return 0;
}
3. Omission de la forme générale de l'instruction de boucle for (combinée avec l'exemple de code ci-dessus)
(1) Omettre l'expression 1
for(i=1;i<4;i++)
sum=sum+i;
Équivalent à
i=1
for(;i<4;i++)
sum=sum+i;
(2) Omettre l'expression 2
for(i=1;;i++)
Lorsque l'expression 2 est omise, cela signifie que la boucle n'est pas contrôlée . S'il n'y a pas d'autre traitement, une boucle infinie sera formée.
(3) Omettre l'expression 3
for(i=1;i<4;i++)
sum=sum+i;
Équivalent à
for(i=1;i<4;)
sum=sum+i;
i++;
(4) Omettez l'instruction du corps de la boucle (l'expression 3 est une expression virgule)
for(i=1;i<4;i++)
sum=sum+i;
Équivalent à
for(i=1;i<4;sum=sum+i,i++) //后面用逗号隔开
(5) L'expression 1 est une expression virgule
sum=0;
for(i=1;i<4;i++)
sum=sum+i;
Équivalent à
for(sum=0,i=1;i<4;i++)
sum=sum+i;
illustrer:
L'introduction ci-dessus montre que la structure de contrôle de boucle for est puissante, mais il n'est pas recommandé d'écrire du code comme celui-ci.
4. boucle while
while(expression)
{ corps de la boucle ;
Les accolades peuvent être omises lorsqu'elles ne sont pas nécessaires
}
1. Processus d'exécution
2. Exemples de codes
#include<stdio.h>
int main()
{
int i,sum=0;
while(i<4)
{
sum=sum+i;
printf("%d\n",sum);
i++;
}
return 0;
}
5. faire… en boucle
faire
{ corps de la boucle } while (expression);
Ne manquez pas le point-virgule
1. Processus d'exécution
2. Exemples de codes
#include<stdio.h>
int main()
{
int i,sum=0;
do
{
sum=sum+i;
printf("%d\n",sum);
i++;
}while(i<4);
return 0;
}