我在软件上找不到我的错误(打开C语言)



这是我在这里的第一篇文章。这个月我开始学习软件工程,我正试着用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);
}

正如@Oka已经提到的,scanf()将新的行字符留在缓冲区中。

你必须丢弃换行字符,你可以简单地使用getchar()函数在最后一个scanf之前丢弃单个字符(可能是换行字符或不是),要100%确定从输入缓冲区中丢弃所有未读字符,你可以做

while((c = getchar()) != 'n' && c != EOF)

或者可以使用" %c"(空格%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);
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.

相关内容

  • 没有找到相关文章

最新更新