首页 > 用户发贴区 > 编程问题提问区 > 请大家帮忙看一下.
2009
05-21

请大家帮忙看一下.

/*程序要实现的功能是:  y=x*x+5,(x<0);y=5x,(x>=0).并且,当输入的为字母时,显示输入错误信息(input error!),然后再显示”input x: “,提示重新输入.


运行时出现的问题是:   1.当从键盘正确输入数字时,按下回车键,不能得到运行结果,光标跳到下一行,当再次正确输入同一个数或其他数时,就能得到结果.为什么呢?
                               2.当输入的是一个字母时,屏幕不断地显示”input x: ” “input error!”.好像就是错误的输入被”记下了”,没有被清除,程序就一直判断输入的数据不正确,
从而进入一个错误的循环,该怎样”清除”错误的输入呢,使程序判断输入错误后显示错误信息并提示重新输入?
                    
                      程序如下:*/
#include”stdio.h”
main()
{
float x,y;
int i;
while(1)
{
printf(“input x: “);
scanf(“%f”,&x);
i=scanf(“%f”,&x);/*网上看到的判断输入的是否为整型数据的语句*/
if (i==1) {
if (x<0) y=x*x+5;
else  y=5*x;
printf(“x=%f y=%f\n\n”,x,y);/*空两行,再输入下一个数据*/
}
 else                       
printf(“input error !\n”);
 ;
}


}


请大家帮忙看一下.》有 4 条评论

  1. 野人中的人 说:

    因为你给X付了两次值

  2. hiroki 说:

    while(1) 我没全看了 我大概看一下 这个是死循环

  3. li97074772 说:

    编程,创建一个链表(当输入数据小于零时创建结束),线输出原始链表,将这个链表反转重新排列,即将链头当链尾,尾当头,输出翻转后的链表。发送至lihongchun89@163.com

  4. jiakun260 说:

    查了很久才算弄明白你错在哪里了,

    1.把scanf(“%f”,&x);去掉,留一个i=scanf(“%f”,&x);就可以了

    2.scanf的返回值是输出接收到的数据数,如

    scanf(“%d%d”, &a, &b);
    如果a和b都被成功读入,那么scanf的返回值就是2
    如果只有a被成功读入,返回值为1
    如果a和b都未被成功读入,返回值为0
    如果遇到错误或遇到end of file,返回值为EOF。

    你的程序如果输入字母,返回值就是EOF,然后程序就会出错,不再执行scanf而直接循环,具体怎么达到你这个程序的要求我还没想好,感觉有点乱,明天再看看吧

留下一个回复