/*程序要实现的功能是: 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”);
;
}
}
>> 本文固定链接: http://www.vcgood.com/archives/3199
因为你给X付了两次值
while(1) 我没全看了 我大概看一下 这个是死循环
编程,创建一个链表(当输入数据小于零时创建结束),线输出原始链表,将这个链表反转重新排列,即将链头当链尾,尾当头,输出翻转后的链表。发送至lihongchun89@163.com
查了很久才算弄明白你错在哪里了,
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而直接循环,具体怎么达到你这个程序的要求我还没想好,感觉有点乱,明天再看看吧