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

Code 1: getchar()

//getchar()
//按照如下输入格式(其中<CR>代表回车,注意 回车也是一个字符)则输出结果是? 
//12<CR>
//34<CR> 
#include <stdio.h>
int main()
{
    
    
	char a,b,c,d;
	//printf("请输入:\n");
	scanf("%c%c",&a,&b);
	c=getchar();
	d=getchar();
	
	printf("输出如下:\n");
	printf("%c%c%c%c\n",a,b,c,d);
}

Ausgabe:
Bildbeschreibung hier einfügen
Warum tritt das obige Ergebnis auf? Wo ist die eingegebene 4 geblieben?

注意:Die Funktion getchar() hat keine Parameter, und der Rückgabewert der Funktion ist das von der Terminaltastatur gelesene Zeichen, und es kann jeweils nur ein Zeichen gelesen werden. Die vom Benutzer eingegebenen Zeichen werden im Tastaturpuffer gespeichert, einschließlich des Wagenrücklaufs '\n'. Für die scanf-Funktion löst '\n' jedoch scanf aus, um den Inhalt des Eingabepuffers zu lesen, hört jedoch auf zu lesen, wenn '\n' oder ein Leerzeichen ' ' gefunden wird, während getchar '\n' und direkt liest ein Leerzeichen.

Sie können die folgende Testanweisung hinzufügen:

#include <stdio.h>
int main()
{
    
    
	char a,b,c,d;
	//printf("请输入:\n");
	scanf("%c%c",&a,&b);
	c=getchar();
	d=getchar();
	
	printf("输出如下:\n");
	printf("%c%c%c%c\n\n",a,b,c,d);
	
	printf("-------------------------\n\n");
	printf("测试:\n\n");
	printf("a=%c\n\n",a);
	printf("b=%c\n\n",b);
	printf("c=%c\n\n",c);
	printf("d=%c\n\n",d);	
}

Das Ergebnis ist:

Das heißt, nachdem der Benutzer 12 und den Wagenrücklauf eingegeben hat, hat die Anweisung „c=gerchar();“ das Wagenrücklaufzeichen gelesen, sodass die vom Benutzer eingegebene 3 natürlich „d=getchar()“ ist. ;' ' gelesen durch diese Anweisung.

Das Ergebnis dieser Frage ist also wie gesehen,12 回车符(看不见,即换行了)3(在下一行)
Bildbeschreibung hier einfügen

Code 2: Ausgabezeichen 'A'

//以下不能输出字符A的语句是?
//已知字符A的ASCII码值为65,字符a的ASCII码值为97 
#include <stdio.h>
int main()
{
    
    
	printf("%c\n\n",'a'-32);//97-32=65 输出整型数字65对应的字符A 
	printf("%d\n\n",'A'); //显然输出为字符A对应的整型数字65 
	printf("%c\n\n",65);//输出整型数字65对应的字符A 
	printf("%c\n\n",'B'-1);//66-1=65 输出整型数字65对应的字符A 
 } 

Ausgang:

Der Grund liegt auf der Hand:
Bildbeschreibung hier einfügen

Code 3: Ganzzahl 48 entspricht dem Zeichen '0' ----- Speicherübliche Ganzzahl- und Zeichengrößenumwandlung

//若运行程序时从键盘输入 48<回车>,则输出结果是? 
#include <stdio.h>
int main()
{
    
    
	char c1,c2;	//48~57对应字符'0'到'9' 
	scanf("%d",&c1); //需要知道48对应的字符为'0' 
	c2=c1+9; //那么,48+9=57,故c2='9' 
	printf("%c%c\n\n",c1,c2); //故输出 09
} 

Ausgang:

Hinweise wurden erklärt. Auch 字符'A' ~ 'Z' 对应 整型 65 ~ 90. 字符'a' ~ 'z' 对应 整型 97 ~ 122, ist jeder Kleinbuchstabe um 32 größer als sein Großbuchstabe. 字符'0' ~ '9' 对应 整型 48 ~ 57. Das ist das Grundwissen, das sich Anfänger merken sollten.
Bildbeschreibung hier einfügen

Code 4: getchar() und putchar()

//输入 YES<回车> 则结果是?
#include <stdio.h>
int main()
{
    
    
	char a,b,c;
	a=getchar();//从键盘输入一个字符,送给字符变量a 
	b=getchar();//从键盘输入一个字符,送给字符变量b 
	c=getchar();//从键盘输入一个字符,送给字符变量c 
	putchar(a);//输出变量a的值 
	putchar(b);//输出变量b的值
	putchar(c);//输出变量c的值
	putchar('\n');//换行 
	return 0;
 } 

Ausgabe:
Bildbeschreibung hier einfügen
简析: Nach kontinuierlicher Eingabe von „JA“ und Drücken der Eingabetaste werden die Zeichen an den Computer gesendet und dann werden 3 Zeichen „JA“ ausgegeben.

说明: Bei der Eingabe von Informationen über die Tastatur wird, anstatt eine Taste auf der Tastatur einmal zu drücken, das entsprechende Zeichen sofort in den Computer eingegeben. Die eingegebenen Zeichen werden im Tastaturpuffer zwischengespeichert und erst beim Drücken der Eingabetaste gemeinsam in den Rechner eingegeben und dann der Reihe nach den entsprechenden Variablen zugeordnet.

Wenn: Wenn Sie dieses Programm ausführen, geben Sie ein Zeichen ein und drücken Sie sofort die Eingabetaste, was wird das Ergebnis sein? Wenn Sie in diesem Beispiel unmittelbar nach der Eingabe des Zeichens Y die Eingabetaste und dann unmittelbar nach der Eingabe des Zeichens E die Eingabetaste drücken, wird Y bzw. E ausgegeben. Wie unten gezeigt:
Bildbeschreibung hier einfügen
Hier besteht die erste Zeile anstelle eines Zeichens Y aus zwei Zeichen: Y和换行符, wobei das Zeichen Y der Variablen a und das Zeilenumbruchzeichen der Variablen b zugewiesen wird. Zeile 2 fügt dann zwei Zeichen ein, E und einen Zeilenumbruch, wobei das Zeichen E der Variablen c, zugewiesen wird 换行符没有赋给任何变量. Bei der Verwendung der Funktion putchar() zur Ausgabe der Werte der Variablen a, b und c wird das Zeichen Y ausgegeben, dann ein Newline ausgegeben, dann das Zeichen E ausgegeben und dann putchar('\n ') wird ausgeführt, um die Zeile umzubrechen.

Beachten Sie auch, dass die Ausführung der Funktion getchar() nicht nur ein anzeigbares Zeichen vom Eingabegerät erhalten kann, sondern auch Zeichen, die nicht auf dem Bildschirm angezeigt werden können, wie z. B. Steuerzeichen.

Code 5: Domänenbreite

//执行以下程序,输出结果是? 
#include <stdio.h>
int main()
{
    
    
	int x=12;
	double y=3.1415926;
	printf("%d%10.6f\n",x,y);
		
}  

Die Ausgabe ist:
Bildbeschreibung hier einfügen
Im %10.6fSteuerzeichen im Format '' '' steht 10 für 域宽, einschließlich des Dezimalpunkts ".", 6 für die Anzahl der Nachkommastellen, da die siebte Stelle eine 6 ist, also 第6位四舍五入为3.

Code 6: immer noch getchar()

//还是getchar()
//已知输入格式为   4空格5回车
//                 67回车
//则输出结果是? 
#include <stdio.h>
int main()
{
    
    
	char a,b,c,d,e;
	scanf("%c%c",&a,&b);//注意这里输入的是字符型数据,空格也会被作为字符
	c=getchar();
	d=getchar();
	e=getchar();
	
	printf("%c%c%c%c%c\n",a,b,c,d,e);
} 

Ausgabe:
Bildbeschreibung hier einfügen
简析: Achten Sie bei der Eingabe von Zeichendaten mit der Funktion scanf() darauf: Wenn das Eingabezeichen im %c-Format deklariert ist, werden sowohl das Leerzeichen als auch das Escape-Zeichen als gültige Zeichen eingegeben, also das Leerzeichen zwischen 4 und 5 zugewiesen gib b. Zweitens, beachten Sie den Unterschied zwischen Zahlen und numerischen Zeichen. Schließlich kann die Funktion getchar() die Eingabetaste akzeptieren, die auch als Zeichen eingegeben wird.

Also ist a '4', b ist Leerzeichen, c ist '5', d ist Wagenrücklauf (Zeilenvorschubeffekt) und e ist '6'. (7 ist keiner Variablen zugeordnet) ist die Wirkung des Ausgangs.

Ich denke du magst

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