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 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值