注册 登录
编程论坛 C语言论坛

找不出错误,运行就出错,求助!

好烦、 发布于 2020-10-22 18:16, 1852 次点击
#include<stdio.h>
int main (void)
{
    float a,b;
    char c;
    scanf("%f %f %c",&a,&b,&c);   
    if((c=='/')&&(b==0))
        printf("除数为0!");
    if((c=='+')||(c=='-')||(c=='*')||(c=='/'))
        switch(c)
        {
            case'+':printf("%f",a+b);break;
            case'-':printf("%f",a-b);break;
            case'*':printf("%f",a*b);break;
            case'/':printf("%f",a/b);break;
        }
    else
        printf("运算符号错误!");
    return 0;   
}
6 回复
#2
lin51616782020-10-22 18:44
不要干巴巴的说运行出错
具体怎么错的说清楚
贴运行出错的截图也行
#3
风过无痕19892020-10-22 21:14
回复 楼主 好烦、
问题出在 scanf("%f %f %c",&a,&b,&c),你在语句中加入了空格,故在键盘输入时,第一个数赋给了变量a,空格赋给变量b,第二个数赋给了变量c,第三个数输入不输入已经不重要了,因为没有变量来接收了。改正方法:
scanf("%f%c%f",&a,&c,&b); 连续输入(不要空格)

为摆脱输入上限制,按正常的格式输入,多定义一个变量
程序代码:

#include<stdio.h>
int main (void)
{
    float a,b;
    char c,d;      // 多定义一个变量来接收输入时的空格
    scanf("%f%c%c%c%f",&a,&d,&c,&d,&b);
    if((c=='/')&&(b==0))
        printf("除数不能为0!\n");
    if((c=='+')||(c=='-')||(c=='*')||(c=='/'))
        switch(c)
        {
            case'+':printf("a + b = %f\n",a+b);break;
            case'-':printf("a - b = %f\n",a-b);break;
            case'*':printf("a * b = %f\n",a*b);break;
            case'/':printf("a / b = %f\n",a/b);break;
        }
    else
        printf("运算符号错误!\n");
    return 0;   
}

输入形式:168.88 + 31.12    // 数字与运算用空格隔开

[此贴子已经被作者于2020-10-22 22:14编辑过]

#4
lin51616782020-10-23 09:12
回复 3楼 风过无痕1989
过滤空格可以简单的 写一个空格
或者用%*c
#5
风过无痕19892020-10-23 09:24
回复 4楼 lin5161678
scanf("%f%*c%*f",&a,&c,&b); ?

运行时直接“运算符错误!”
#6
bcbbcclbbc2020-10-23 23:15



[此贴子已经被作者于2020-10-23 23:18编辑过]

#7
bcbbcclbbc2020-10-23 23:15
只有本站会员才能查看附件,请 登录

似乎没有什么大问题,可能是格式有点不兼容吧
1