#include <stdio.h>
void aeins(){
int x;
unsigned int y;
double z;
printf("Geben sie einen ganze Zahl ein: ");
scanf("%d", &x);
printf("Geben sie eine natürliche Zahl ein: ");
scanf("%u", &y);
printf("Geben sie eine reelle Zahl ein: ");
scanf("%lf", &z);
printf("Die dritte Potenz von %d ist %d", x, x*x*x);
printf("Die dritte Potenz von %u ist %u", y, y*y*y);
printf("Die dritte Potenz von %lf ist %lf", z, z*z*z);
}
void azwei(){
printf("Geben sie einen Character ein: ");
char c = getchar();
printf("Das nachfolgende Zeichen lautet: %c und der ASCII-Wert ist: ", c+1, c+1);
}
int main (void){
int a;
int b = 1;
while(b){
printf("Welche Aufgabe soll gezeigt werden? ");
printf("\n(1) Aufgabe 1 \n(2) Aufgabe 2\n");
scanf("%d", &a);
switch(a){
case 1: aeins();
b = 0; break;
case 2: azwei();
b = 0; break;
default: printf("Falsche Eingabe!\n"); break;
}
}
}
这是我的程序,这是我的输出:
Welche Aufgabe soll gezeigt werden?
(1) Aufgabe 1
(2) Aufgabe 2
2
Geben sie einen Character ein: Das nachfolgende Zeichen lautet: und der ASCII-Wert ist:
Process returned 0 (0x0) execution time : 2.172 s
Press any key to continue.
您可以看到我的程序正在忽略getchar
命令。我已经尝试过使用scanf
命令,但它也无法正常工作。在功能aeins
中,所有功能均可用。如果可以,我会说我是中级C程序员的初学者。
[scanf
具有有趣的属性,它将换行符留在输入缓冲区中,终止了输入,因此在进行任何其他输入之前,需要先消耗掉换行符。
只需在getchar()
之后添加一个scanf("%d", &a);
通话,您就应该不错。
您可以使用scanf(" %c",&c);
来解决问题,或者您需要再写1个getchar()来使用scanf("%d", &a);
剩余的换行符