quiettttt 2022-08-08 23:45 采纳率: 97.9%
浏览 25
已结题

这里的0怎么精准截断 又不影响程序?应该如何修改inputdivide?

#include <stdio.h>
#include <ctype.h>
float input(void);
float inputdivide(void);
float divide(float num1 ,float num2);
int main(void)
{
int ch ;
float answer;
float firnum , secnum;

while((ch = getchar()) != EOF)
{
    if(ispunct(ch) || ch == '\n')
        continue;
    {
        printf("divide\n");
        firnum = input();
        secnum = inputdivide();
        answer = divide(firnum,secnum);
        break;
    }
}
return 0;

}

float inputdivide(void)
{
float input;
char ch;

while(scanf("%f",&input) != 1)
{

    while((ch = getchar()) != '\n')
        {
            putchar(ch);
        }
        printf("again!\n");
        
    while(input == 0 )
    {
        printf("again\n");
        break;
    }
}
return input;

}

float input(void)
{
float input;
char ch;

while(scanf("%f",&input) != 1)
{
    while((ch = getchar()) != '\n')
        putchar(ch);
    printf("again!\n");
}
return input;

}
float divide(float num1 ,float num2)
{
float output;
output = num1 / num2 ;
printf("%g / %g = %g\n",num1,num2,output);

return output;

}

想要输入第二个数的时候0的时候把0截断,但是程序截不断,为什么inputdivide应该怎么改?

scanf("%f",&input) != 1如果改成scanf("%f",&input) == 1程序就输出不了的数,为什么?

  • 写回答

1条回答 默认 最新

  • 吉士先生 Java领域新星创作者 2022-08-09 05:23
    关注

    while(input == 0 )
    {
    printf("again\n");
    break;
    {
    }
    如果这一段你想表达的是退出整个input回调函数,那这里要更改成 if(input==0),因为如果是while .那么只能退出这一下小层的while.整个大结构体还没退出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月17日
  • 已采纳回答 8月9日
  • 创建了问题 8月8日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大