[Expérience de didacticiel de programmation en C] Exercices de base (5)


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

insérez la description de l'image ici

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:
insérez la description de l'image ici

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.
insérez la description de l'image ici
À ce stade, vous pouvez tester la valeur de a :

	//测试 
	printf("a=%d\n",a); 

Regardez, a est 9 à ce stade.
insérez la description de l'image ici

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.
insérez la description de l'image ici
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.
insérez la description de l'image ici
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 :
insérez la description de l'image ici
dans le code ci-dessus, il en va de même pour l'ajout de l'instruction par défaut :

default:printf("这是default语句!\n");

insérez la description de l'image ici

—————————————————————————————————————————
C'est pour l'instant, le réexamen la liste est sortie.

Je suppose que tu aimes

Origine blog.csdn.net/qq_44731019/article/details/123619037
conseillé
Classement