下面c语言程序不能进行if-else语句的原因

   更新日期:2024.05.11
X是float类型,不能与字符型进行比较,或者说:if(此处的内容永远为假),所以不会运行if后的代码;else则不然,if不满足,一定会运行else,所以else内容一直被运行。

scanf("%c",&x);
这句不能正常接收字符,什么原因呢?我们用printf("c=%d\n",c);将C用int表示出来,启用printf("c=%d\n",c);这一句,看看scanf()函数赋给C到底是什么,结果是c=10 ,ASCII值为10是什么?换行即\n.
在输入了x2后,我们输入了一个回车键,我们每击打一下"Enter"键,向键盘缓冲区发去一个“回车”(\r),一个“换行"(\n),在这里\r被scanf()函数处理掉了(姑且这么认为吧^_^),而\n被scanf()函数“错误”地赋给了x.
解决办法:在scanf("%c",&x);之前加个fflush(stdin);
清空缓存

main()
{
float x1,x2,y1,y2;
char x,y;
do
{
printf("x1=");
scanf("%f",&x1);
printf("x2=");
scanf("%f",&x2);
getchar(); 这里加上一个getchar()才能把你数据从缓冲区送到内存时输入的回车键 接受 不然就会被下一个scanf()接受 所以才导致了 x的值就是回车
printf("s or p");
scanf("%c",&x);
可以在这里输出X的值 你就发现会换行 如果你不是接受的字符而是数字就不会出现这种情况 注意使用 gets(str)的时候同样会出现这种情况 str指针所指向的内存就是回车键
希望可以帮到你

岱鲁 的回答是正解

岱鲁 说的对,我就不说了

  • 18737543122 :求重庆2009年11月份C语言计算机二级试题!
    淳类货5247 :答:A) ANP/A.DAT B) ABCCOM C) ECD.BASIC D) XY+Z.TXT(7) 下列叙述中正确的是A) 在Windows环境下,最大化的窗口是不能移动的B) 在Windows环境下,应用程序窗口最小化后,该应用程序暂停执行C) 在Windows环境下,只有最小化的...
  • 18737543122 :c语言,下列表达式不能表示‘E’字符的是
    淳类货5247 :答:; //选项C putchar(**(s + 1)); printf("\n"); //选项D putchar(*s[1]); printf("\n"); //选项B putchar(*(s + 1)); return 0;}程序运行结果:...
  • 18737543122 :电气三班c语言选择题
    淳类货5247 :答:char s[5]={'A','B','C','D','E'};char*s; s="ABCDE";char*s;printf("%s",s);~C~~~8字符串"\\\"ABCDEF\"\\"的长度是()。151078~B~~~8下面各语句行中,能正确进行赋值字符串操作的是()。char s[5]=...
  • 18737543122 :下面的c语言程序,为什么总是说else without matching if?求解
    淳类货5247 :答:楼主的语法掌握的还不是很好哈。if else必须成对配套,如 if (xxx)xxxx;else if(xxx)xxxx;这样是可以的,也就是只有一条语句是,但是如果有多条语句的话必须要用{}语句块的方式出现,不然编译器不知道你这个else是对...
  • 18737543122 :C语言程序设计(201803)测试求大佬帮忙!
    淳类货5247 :答:选A;n++表示先返回n的值,再对n进行自增操作,即先令k=n,再执行n=n+1 选C;if-else不是循环结构 选D;aa表示数组首地址,即&aa[0],而不是&aa[1]选B 选B;a[2]=3,a[2]+1=4,所以a[a[2]+1]=...
  • 18737543122 :哪个大神知道为什么我的C语言程序无法进行判断呢
    淳类货5247 :答:什么叫无法进行判断?if语句不好用?把代码粘贴出来,具体看看逻辑是否有误吧
  • 18737543122 :C语言 普及组的模拟题
    淳类货5247 :答:A)(890)10 B)(986)8 C)(1011100000)2 D)(2E0)16 E)(736)10 14.下面关于算法的正确的说法是( ) A)算法必须有输出 B)算法必须在计算机上用某种语言实现 C)算法不一定有输入 D)算法必须在有限步执行后能结束 E)算法的每...
  • 18737543122 :C语言程序语法问题,求解决。下面的程序不能运行,求解释
    淳类货5247 :答:缺少文件包含语句:#include "conio.h" ,把它加到#include "math.h"后面就OK了 getch()函数是在conio.h头文件中定义的.
  • 18737543122 :9月计算机二级《C语言》上机考题及答案
    淳类货5247 :答:C. 9 10 D. 10 9 9、两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是( )。if(x++>5) printf("%d",x);else printf("%d\n",x - -);A. 7和5 B. 6和3 C. 7和4 D. 6和4 10、设有...
  • 18737543122 :计算机二级考试(江西考区)试题c语言及答案
    淳类货5247 :答:C)交 D)并(11)以下叙述正确的是 A)C语言程序是由过程和函数组成的 B)C语言函数可以嵌套调用,例如:fun(fun(x))C)C语言函数不可以单独编译 D)C语言中除了main函数,其他函数不可作为单独文件形式存在(12)...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网