我想让他输入小数时不执行中间循环部分,直接跳到开始重新输入p,但却陷入死循环,求指导。。

#include <stdio.h>
int main(void)
{
int i,j,n,p,q;
A:
printf("输入一�

展开全部
收起
3回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 兔子先生

    20人对此回答表示赞同

    你定义p为int类型,输入的格式也是%d,这些都是对的
    但是当你输入一个浮点数,比如5.6时,scanf从缓存区读取数据5,遇到小数点结束读取,此时缓存区数据为.6,第二次循环因为缓存区存在数据,不在接受键盘输入,而是直接从缓存区读取数据,但是遇到小数点读取失败,而p的值仍是5,输出图案,进入下一个循环.....无限死循环.....
    其实这就是由于使用scanf时输入的数据类型和需要的数据类型不匹配造成的。

    展开
    20
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Chloe1

    15人对此回答表示赞同

    你好,你的问题出在p的定义和使用上,你定义的p是int型,scanf也用的%d控制输入,所以即使你输入的数含有小数,系统也会自动舍弃小数部分而将其视为整数,所以导致你的if语句一直为真
    展开
    15
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Paisley888

    1人对此回答表示赞同

    因为你宣告 int p, 又scanf("%d",&p);
    所以即使input 小数点,(int)p==p is true

    建议修改如下:
    float p;
    scanf("%f",p);
    展开
    1
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部