C语言关于结束while循环的问题

#include<stdio.h>
int main()
{
float a;
while(scanf("%f",&a)!=1)
{
printf("This is wrong!\n");
printf("Please enter another number,such as 2,45,99:\n");
scanf("%f",&a);
continue;
}
printf("%f",a);
return 0;
}

怎么改进使得while退出循环,不用GOTO!
我的目的是输出数字,不输出其他任何字符
抱歉我只有10分了,麻烦各位,谢谢

#include<stdio.h>
int main()
{
    float a;
scanf("%f",&a);
    while(a!=2&&a!=45&&a!=99)
    {
        printf("This is wrong!\n");
        printf("Please enter another number,such as 2,45,99:\n");
        scanf("%f",&a);
    }
    printf("%f",a);
    return 0;
}

最好把你的目的写一下。。。

追问

我的目的是输出数字,不输出其他任何字符

追答

给个输入输出看看

追问

输出就是上面这张图
无限循环,
我想要的输出是1
那么输入q,w,t就应该返回
This is wrong!
Please enter another number,such as 2,45,99:
然后重新输入新的,直到输入的是数字而非其他字符

追答

只要输入的是数字的话,就输出数字然后终止程序对吗

追问

对,就是因为这个我才会用到scanf的返回值,
但如果这样用了在循环里重新输入a值怎么不能影响while使while退出循环?

追答

恩,那输入的类型就应该是字符类型了,我帮你想一下啊

#include<stdio.h>
int main()
{
    char a;
scanf("%c",&a);
    while(a<'0'||a>'9')
    {
        printf("This is wrong!\n");
        printf("Please enter another number,such as 2,4,5:\n");
        scanf("%c",&a);
    }
    printf("%c\n",a);
    return 0;
}

只能是0-9这10个数字,因为是字符类型的。。。

追问

呃,不是这个意思,可能是我表达不清楚,应该是我需要输入的就是int整型数字,然后输入其他任何字符或符号会返回
This is wrong!
Please enter another number,such as 2,45,99:
直到我输入int整型数字为止

追答

你输入的是你确定的数据类型,你定义了int型的,你输入一个字符w肯定报错的。。。

追问

刚刚有点混乱我重新说明下:

我想用while(scanf("%f",&a)!=1)来剔除float型(float型是我想要的就直接printf了)
然后实现在这个循环中(能进入这个循环的就是其他字符,比如空格、a,b,e,t等等)输出两个printf实现提示,然后scanf重新输入,如果仍然是其他字符则继续循环直到是float型为止。
我的问题是:为什么这里会陷入无限循环,这里应该怎么脱离无限循环?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-06
while判断有误,你这么写达不到效果,你写成scanf("%f",&a);while(a!=1)...应该就可以了追问

刚刚有点混乱我重新说明下:

我想用while(scanf("%f",&a)!=1)来剔除float型(float型是我想要的就直接printf了)
然后实现在这个循环中(能进入这个循环的就是其他字符,比如空格、a,b,e,t等等)输出两个printf实现提示,然后scanf重新输入,如果仍然是其他字符则继续循环直到是float型为止。
我的问题是:为什么这里会陷入无限循环,这里应该怎么脱离无限循环?

第2个回答  2015-08-06
你用的编译器是什么,在别的编译器,你那可能执行不了追问

什么意思,那应该怎么改?

追答

while(a!=1)

追问

刚刚有点混乱我重新说明下:

我想用while(scanf("%f",&a)!=1)来剔除float型(float型是我想要的就直接printf了)
然后实现在这个循环中(能进入这个循环的就是其他字符,比如空格、a,b,e,t等等)输出两个printf实现提示,然后scanf重新输入,如果仍然是其他字符则继续循环直到是float型为止。
我的问题是:为什么这里会陷入无限循环,这里应该怎么脱离无限循环?

追答

没大懂你啥意思,
当字符串做,大致这样,我没在编译器里做,你试试,可以实现:如果输入非数字就重新输入,输入数字才输出
for(int i=0;i'9')

{

printf("This is wrong!\n");

printf("Please enter another number,such as 2,45,99:\n");

p++;

for(int j=0;j<10000;j++)

scanf("%c",p);

continue;

}

追问

就是我要输入数字,打印数字,遇到字符符号就进入循环,然后重新输入,直到遇到数字,再打印出数字,就这个意思

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网