c语言,有大佬帮我看看吗,运行结果老是不对?

#include<stdio.h>
void main()
{
void tion1(int,int);
void tion2(int,int);
char ch;
int a,b;
printf("请输入两个需要计算的数字:");
scanf("%d%d",&a,&b);
flushall();
printf("请输入需要进行的计算方法:");
scanf("%c",&ch);
switch(ch)
{
case'a':
case'A':tion1(a,b);break;
case'b':
case'B':tion2(a,b);break;
default:putchar('\a');
}
return 0;
}
void tion1(int x,int y)
{
printf("x+y=%d\n",x+y);
}
void tion2(int x,int y)
{
printf("x*y=%d\n",x*y);
}

第1个回答  2019-12-19
case'a':
case'b':
这两行没有意义吧
后面putchar('\a');干嘛用的本回答被提问者采纳
第2个回答  2019-12-19

结果对呀,输入要用空格隔开。给你提供一个+-*/都有的作参考——

代码文本:

#include "stdio.h"

void tion1(int x,int y){

printf("%d+%d=%d\n",x,y,x+y);

}

void tion2(int x,int y){

printf("%d*%d=%d\n",x,y,x*y);

}

void tion3(int x,int y){

printf("%d-%d=%d\n",x,y,x-y);

}

void tion4(int x,int y){

printf("%d/%d=%d\n",x,y,x/y);

}

int main(int argc,char *argv[]){

char ch;

int a,b;

printf("请输入两个需要计算的数字:");

scanf("%d%d",&a,&b);

flushall();

printf("请输入需要进行的计算方法(+-*/):");

if(scanf("%[-+*/]",&ch)==1){;

switch(ch){

case '+':tion1(a,b);break;

case '-':tion3(a,b);break;

case '*':tion2(a,b);break;

case '/':tion4(a,b);break;

default:printf("输入出错...\n");

}

}

else

printf("输入出错...\n");

return 0;

}

第3个回答  2019-12-19
如果你是用gcc的话,在flushall();前面加一个下划线 ' _ '
也就是变成 _flushall(); 就可以了

当然强烈不建议用_flushall追问

为什么不建议啊

第4个回答  2019-12-19

在两个scanf语句之间,加上getchar();语句,结果就正确了。

这是因为第一个scanf没有处理的换行符,被第二个scanf直接读取了,从而导致程序执行switch的default分支后退出。

用getchar()的目的就是读取第一个scanf不处理的换行符并丢弃,这样就让第二个scanf等待用户输入。

相似回答