[Tutorial-Experiment zur C-Programmierung] Grundlegende Übungen (6)

Code eins

//执行下列程序后,a和b的输出值分别是?
 
#include <stdio.h>
int main()
{
    
    
	int a=3,b=5,c;
	c=(a>b)? a++ :b--;
	printf("a=%d,b=%d,c=%d\n",a,b,c); //a=3,b=4,c=5 √
	
	return 0;	
 } 

Die Ausgabe ist:

Die Grundlagen dieser Frage, die Antwort liegt auf der Hand!
Bildbeschreibung hier einfügen

Code zwei

//执行下列程序段后,x、y、z的值分别是?
#include <stdio.h>
int main()
{
    
    
	int x=10,y=20,z=30;
	if(x>y) z=x; x=y; y=z;
	
	printf("x=%d,y=%d,z=%d\n",x,y,z); //x=20,y=30,z=30 √ 
  	return 0;
  }  

Beachten Sie, dass nach dem Urteil der if-Anweisung keine geschweiften Klammern stehen, daher heißt es in dieser Frage, da x und y das Urteil in der if-Bedingungsanweisung nicht erfüllen, dass z=x; nicht ausgeführt wird. Dann werden die beiden Anweisungen x=y; y=z; ausgeführt.
Bildbeschreibung hier einfügen

Code drei

//以下程序输出为?
#include <stdio.h>
int main()
{
    
    
	int a=5,b=0,c=0;
	if(a+b+c) printf("***\n"); else printf("$$$\n");
	// *** √ 
	return 0;
 }

Ausgabe:
Wenn die if-Anweisung erfüllt ist, also die Bedingung in der if-Anweisung wahr ist, dann wird die direkt auf die if-Anweisung folgende print-Anweisung direkt ausgeführt und die darauffolgende Anweisung nicht ausgeführt, also folgendes Ergebnis ausgegeben wird.
Bildbeschreibung hier einfügen

Code vier

 //以下程序输出结果为?
#include <stdio.h>
int main()
{
    
    
	int m=5;
	if(m++>5) 	printf("%d\n",m); // 6
	else 	printf("%d\n",m--); 
	
	return 0;    
} 

Das Ergebnis liegt auf der Hand:
Bildbeschreibung hier einfügen
nächster Test:

//测试一下:
#include <stdio.h>
int main()
{
    
    
	int m=4; //这里把m改成4看一下。 
	if(m++>5) 	printf("%d\n",m); 
	else 	printf("%d\n",m--); //5。因为 m-- 是先使用后自减  
	
	printf("m=%d\n",m); //所以说这时m的值为4 
	return 0;    
} 

Eingabe: Kombiniert man den Inhalt des Kommentars und das obige Beispiel, kann man es verstehen.
Bildbeschreibung hier einfügen

Code fünf

//执行下列程序后,x的值为?
#include <stdio.h>
int main()
{
    
    
	int a=2,b=5,c=7,d=8;
	int x;
	
	if(a>b)   //不满足,所以直接执行下面else中的x=7 
		if(c>d) x=1;
		else if(a<c)
			if(b<d) x=2;
			else x=3;
		else x=6;
	else x=7;
	
	
	printf("x=%d\n",x);
	
	return 0;
 } 

Diese Teilfrage dient hauptsächlich dazu, zu verstehen, was sonst noch mit übereinstimmt.

Bildbeschreibung hier einfügen
Du kannst es nochmal testen:

//测试 
 //执行下列程序后,x的值为?
#include <stdio.h>
int main()
{
    
    
	int a=2,b=5,c=7,d=8;
	int x;
	
	if(a<b)   //这里 修改为a<b。满足,故继续执行下面的第一个if 
		if(c>d) x=1; //不满足,所以继续执行下面的else-if判断语句   注意喔! 
		else if(a<c) //满足,所以执行下面的if语句 
			if(b<d) x=2; //满足,所以执行x=2。而后跳出循环 
			else x=3;
		else x=6;
	else x=7;
	
	
	printf("x=%d\n",x); //x=2
	
	return 0;
 } 

Die Ausgabe ist:
Bildbeschreibung hier einfügen
analysiere es:
Bildbeschreibung hier einfügen

Code 6: schalten, unterbrechen,

 //运行下列程序,输出结果为?
#include <stdio.h>
int main()
{
    
    
	int x=1,a=0,b=0;
	switch(x){
    
    
		case 0: b++; // 0不满足。所以需要继续执行 
		case 1: a++; // 1。满足,所以执行a++,得到a的值为1 
		case 2:	a++; b++; //上一条语句中没有break,所以这条语句必定会执行 
						//所以a为2,b为1 
	}
	printf("a=%d,b=%d\n",a,b); // a=2,b=1 
	return 0;
   }

Die Ausgabe sieht wie folgt aus:
Bildbeschreibung hier einfügen
Pause hinzufügen und erneut testen:

//测试
#include <stdio.h>
int main()
{
    
    
	int x=1,a=0,b=0;
	switch(x){
    
    
		case 0: b++; // 0不满足。所以需要继续执行 
		case 1: a++;  break;// 1。满足,所以执行a++,得到a的值为1 
		case 2:	a++; b++; //上一条语句中有break,执行完之后直接跳出break;所以该条语句不执行。 
						//所以a为1,b为0(b仍然为原值) 
	}
	printf("a=%d,b=%d\n",a,b); // a=1,b=0 
	return 0;
   }    
   

Ausgabe:
siehe Kommentare!
Bildbeschreibung hier einfügen
Wenn die obige Unterbrechung geändert wird, um fortzufahren, dann ... wird ein Fehler gemeldet! ! !
┭┮﹏┭┮ ┭┮﹏┭┮ ┭┮﹏┭┮ ┭┮﹏┭┮ ┭┮﹏┭┮
Bildbeschreibung hier einfügen

Ich denke du magst

Origin blog.csdn.net/qq_44731019/article/details/123676941
Empfohlen
Rangfolge