我无法在我的软件上找到我的错误(打开 C 语言)
i cant find my mistake on my software (switch on C language)
这是我第一次 post 来这里。
我这个月开始学习软件工程,我正在尝试使用 c 编写软件。
我找不到更改它的错误..
谁能帮帮我!
#include <stdio.h>
void main()
{
int a,b,e;
char operation;
printf ("enter the first number:");
scanf ("%d",&a);
printf ("enter the second number:");
scanf ("%d",&b);
printf ("enter the operation:");
scanf ("%c", &operation);
switch (operation)
{ case '+' : e=a+b;
break;
case '-' : e=a-b;
break;
case '*' : e=a*b;
break;
case '/' : e=a/b;
break;
default: printf("wrong choice!!");
}
printf("%d %c %d = %d \n", a, operation, b, e);
}
#include <stdio.h>
void main()
{
int a,b,e;
char operation;
printf ("enter the first number:");
scanf ("%d",&a);
printf ("enter the second number:");
scanf ("%d",&b);
getchar();
printf ("enter the operation:");
scanf ("%c", &operation);
switch (operation)
{ case '+' : e=a+b;
break;
case '-' : e=a-b;
break;
case '*' : e=a*b;
break;
case '/' : e=a/b;
break;
default: printf("wrong choice!!");
}
printf("%d %c %d = %d \n", a, operation, b, e);
}
您的 scanf ("%c", &operation);
正在读取上述 scanf 语句中的 换行符 \n
。因此,要正确扫描操作语句,您必须添加 getchar()
来检测 换行符 \n
.
正如@Oka 已经提到的scanf() leaves the new line char in the buffer。
你必须丢弃换行符,你可以简单地在最后一个 scanf
之前使用 getchar()
函数来丢弃那个单个字符(可以是换行符也可以不是),100% 确定关于从输入缓冲区中丢弃所有未读字符你可以做
while((c = getchar()) != '\n' && c != EOF)
否则可以使用 " %c"
(空格 %c)忽略前导换行符。
这是我第一次 post 来这里。 我这个月开始学习软件工程,我正在尝试使用 c 编写软件。 我找不到更改它的错误.. 谁能帮帮我!
#include <stdio.h>
void main()
{
int a,b,e;
char operation;
printf ("enter the first number:");
scanf ("%d",&a);
printf ("enter the second number:");
scanf ("%d",&b);
printf ("enter the operation:");
scanf ("%c", &operation);
switch (operation)
{ case '+' : e=a+b;
break;
case '-' : e=a-b;
break;
case '*' : e=a*b;
break;
case '/' : e=a/b;
break;
default: printf("wrong choice!!");
}
printf("%d %c %d = %d \n", a, operation, b, e);
}
#include <stdio.h>
void main()
{
int a,b,e;
char operation;
printf ("enter the first number:");
scanf ("%d",&a);
printf ("enter the second number:");
scanf ("%d",&b);
getchar();
printf ("enter the operation:");
scanf ("%c", &operation);
switch (operation)
{ case '+' : e=a+b;
break;
case '-' : e=a-b;
break;
case '*' : e=a*b;
break;
case '/' : e=a/b;
break;
default: printf("wrong choice!!");
}
printf("%d %c %d = %d \n", a, operation, b, e);
}
您的 scanf ("%c", &operation);
正在读取上述 scanf 语句中的 换行符 \n
。因此,要正确扫描操作语句,您必须添加 getchar()
来检测 换行符 \n
.
正如@Oka 已经提到的scanf() leaves the new line char in the buffer。
你必须丢弃换行符,你可以简单地在最后一个 scanf
之前使用 getchar()
函数来丢弃那个单个字符(可以是换行符也可以不是),100% 确定关于从输入缓冲区中丢弃所有未读字符你可以做
while((c = getchar()) != '\n' && c != EOF)
否则可以使用 " %c"
(空格 %c)忽略前导换行符。