[Langage C] Boucles et branches (Résumé des connaissances)

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

Branche unique si organigramme de l'instruction

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 :
résultat de l'opération

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

Double branche si organigramme de l'instruction

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

Organigramme de l'instruction if multibranche

(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

pour le flux d'exécution des instructions
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

while flux d'exécution de l'instruction

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

Flux d'exécution de l'instruction do-while

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;
}

Je suppose que tu aimes

Origine blog.csdn.net/m0_74102736/article/details/129699012
conseillé
Classement