免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1440 | 回复: 6
打印 上一主题 下一主题

郁闷,大家来看看错在哪里了? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-04 14:03 |只看该作者 |倒序浏览
这几天看<<c程序设计>;>;,我自己写了如下两段小程序:

  1. #include<stdio.h>;
  2. #include<math.h>;
  3. void main()
  4. {int x;
  5. char grade;
  6. scanf("%d\n",&x);
  7. if(90<=x<=100)grade='A';
  8. else if(80<=x<90)grade='B';
  9.    else if(70<=x<80)grade='C';
  10.      else if(60<=x<70)grade='D';
  11.        else grade='E';
  12. printf("y=%c\n",grade);
  13. }
复制代码



  1. #include<stdio.h>;
  2. #include<math.h>;
  3. void main()
  4. {float a,b,c,disc,x1,x2,realpart,imagpart;
  5.   scanf("%d,%d,%d",&a,&b,&c);
  6.   printf("方程");
  7.   if(fabs(a)<=1e-6)
  8.     printf("无解");
  9.   else
  10.     {disc=b*b-4*a*c;
  11.       if(fabs(disc)<=1e-6)
  12.        printf("有两个相等的解:%8.4\n",-b/(2*a));
  13.        else if(disc>;1e-6)
  14.         {x1=(-b+sqrt(disc))/(2*a);
  15.                  x2=(-b-sqrt(disc))/(2*a);
  16.          printf("有两个不相等的解:%8.4f和%8.4f\n",x1,x2);
  17.                 }
  18.        else
  19.          {realpart=-b/(2*a);
  20.            imagpart=sqrt(-disc)/(2*a);
  21.            printf("有两个不相等的复根:\n");
  22.            printf("%8.4f+%8.4fi\n",realpart,imagpart);
  23.            printf("%8.4f-%8.4fi\n",realpart,imagpart);
  24.          }
  25.     }
  26. }
复制代码


却发现了这样一个问题,程序通过编译,却不能得到我想要的结果,第一个程序想要的结果是:输入0~100内任意一个数字,得到输出属于不同等级的答案,可是老是得到grade=A这个答案,第二个程序也出现类似的错误,出现方程无解,这个答案,希望大家看看是怎么回事?指点一下?
还有warning C4804: '<=' : unsafe use of type 'bool' in operation
这句警告是什么意思啊,怎么排除掉,顺便也指点一下?

先谢谢各位大虾了!

论坛徽章:
0
2 [报告]
发表于 2004-04-04 14:08 |只看该作者

郁闷,大家来看看错在哪里了?

90<=x<=100 ?
有这么写表达式的么?

应该是:
90 <= x && x <= 100

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-04-04 14:13 |只看该作者

郁闷,大家来看看错在哪里了?

第一个错误就像楼上说的。第二个,不能用%d形式读入float型的数据啊。
那个警告就是说二楼给的错误的。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-04-04 14:13 |只看该作者

郁闷,大家来看看错在哪里了?

if(90<=x<=100)
if((x >;= 90) && (x <= 100))
你的错误非常典型,好好看看c语法。

论坛徽章:
0
5 [报告]
发表于 2004-04-04 14:16 |只看该作者

郁闷,大家来看看错在哪里了?

谢谢lenovo   的提醒,我也会犯这样的错误。。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-04-04 14:18 |只看该作者

郁闷,大家来看看错在哪里了?

scanf("%d\n",&x);
还有这个地方,scanf是不能有'\n'的。

论坛徽章:
0
7 [报告]
发表于 2004-04-04 14:29 |只看该作者

郁闷,大家来看看错在哪里了?

原帖由 "lenovo" 发表:
if(90<=x<=100)
if((x >;= 90) && (x <= 100))
你的错误非常典型,好好看看c语法。


楼主说的是,我会记住的,以后不会在犯类似的错误了,明明书上看了的,记在脑子里了,可是自己一写却老出错,看来还是练习不够啊,要加强练习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP